Custom variables can be added by clicking Add custom…
in the selection after performing an init with a licensed advanced protocol by loading a specially formatted file.
This is advanced functionality for developers only and is provided AS IS without any support.
The format for each row is as follows:
ID;Description;Unit;Type;Bitmask;HiLo;A;B;C;D;Decimals;Address
Please note, it is not a CSV file - it is just a file with line break separated lines which contain semicolon separated elements. The only processing that is done is splitting by line breaks and semicolons and trimming the whitespace of each element. Quotes and escapes are not supported, so you can not use semicolon inside descriptions.
You can leave the description row at the top of the file, any lines where the ID
is equal to “ID” are ignored. Blank lines are also ignored.
ID - The ID is the unique identifier. If a variable with a such ID already exists in the list, it will be replaced. The ID is shown when measuring. Keep in mind that translation also works by ID, a good idea is to prefix your IDs with something unique.
Description - Any description of your choosing. Can be seen in the selection dialog, can also be searched/filtered.
Unit - The unit for the measurement.
Type - The data type of the measurement. Applied after endianness conversion. Please refer to the following table:
Type | Bytes | Signed |
---|---|---|
UBYTE | 1 | No |
SBYTE | 1 | Yes |
UWORD | 2 | No |
SWORD | 2 | Yes |
ULONG | 4 | No |
SLONG | 4 | Yes |
A_UINT64 | 8 | No |
A_INT64 | 8 | Yes |
FLOAT32_IEEE | 4 | Yes |
FLOAT64_IEEE | 8 | Yes |
Bitmask - The bitmask in hexadecimal (e.g. 0x40
). The converted data type is ANDed with this bitmask and the result is right shifted until the first set LSB of the bitmask. Can be left blank or set as 0x0 if no bitmask is needed.
HiLo - Either 1
or 0
, defines the byte order of the variable.
A, B, C, D - Coefficients and offsets for the linearization formula to convert the internal value to the physical value. The values are expressed as floats with dot (.
) as the decimal separator.
The formula is as follows: phys
= (int
* A - B) / (C - int
* D)
int
is the internal value from ECU and phys
is the physical converted value.
Decimals - Specifies how many digits after decimal point the physical value should be rounded to.
Address - The hexadecimal address of the variable to read. E.g. 0xD0002000
. Please note that these are not bounds checked, specifying addresses outside the valid address range will cause an ECU reset!
If you have a RAT_FUNC
type COMPU_METHOD
with a COEFFS
parameter, the COEFFS
to A B C D
mapping is as follows:
COEFFS - C B - D A
Epm_nEng
on a TriCore ECU at address 0xD0001234
would be specified as follows:
Epm_nEng;Engine Speed;u/min;SWORD;0x0;0;0.5;0;1;0;1;0xD0001234
Addition of custom parameters is also enabled for a few Basic protocols.
In this case the format for each row is as follows:
ID;Description;Unit;Type;Bitlength;HiLo;A;B;C;D;Decimals;Address;Byteposition;Bitoffset
Everything is as above, except Bitmask is replaced by Bitlength and Bitoffset & Byteposition are added. Address should contain the full request.
Bitlength - number of bits in the value. Decimal system.
Byteposition - offset in bytes from start of response (starts at 0)
Bitoffset - offset in bits from start of the byte specified in Byteposition (starts at 0)
Address - must have the full request in hexadecimal. E.g. 0x221234 for $22 read of PID 1234. The limitation for request length is 4 bytes at the moment.
The Max
column will show as 0 in the list, as it is not calculated - this has no effect on measuring or logging.