The Haltech CAN bus operates at 1 MBit/s and uses 11-bit IDs, which are expressed in Hexadecimal.
The first byte in a packet is considered byte 0, and the 8th byte is byte 7. The most significant bit in a byte is considered bit 7 and the least significant bit is bit 0.
Data is encoded as big-endian.
Data that is the size of an individual byte (that is byte aligned) are represented with the byte number, e.g., 4
for data at byte 4
Data that crosses multiple bytes (that is byte aligned) are represented with a byte range. The range is inclusive, e.g., 0 - 1
for 2 bytes of data in bytes 0 and 1, 4 - 7
for 4 bytes of data in bytes 4, 5, 6, and 7.
To address data stored in individual bits within a byte, the following notation is used X:Y. The X is the byte number and the Y is the bit number, e.g. 4:0
for bit 0 in byte 4.
To address data stored across many bits that may span bytes the above notation is used but expressed as a range. The range is inclusive, e.g., 6:3 - 7:0
for 12 bits of data starting at bit 3 on byte 6 to bit 0 on byte 7.
The "Conversion from Raw" column in the example protocol specification table below, shows how to convert the raw value in the message to a value known unit as indicated by the "Units" column.
The x symbol represents the raw value and y represents the value converted.
E.g. The "Throttle Position" channel has a raw value of 456. The conversion for it is y = x / 10. Therefore the converted value of y equals:
y = 456 / 10 = 45.6%
If other units are required, it is the responsibility of the device reading these values to perform these conversions. All pressures are absolute, and it is necessary to subtract 101.3 kPa from the final result if gauge pressure is desired.
Symbol |
Name |
Quantity |
Notes |
RPM |
Revolutions per minute |
Rotational velocity |
Typically, engine crankshaft rotational speed. |
kPa |
kiloPascals - gauge |
Pressure |
0 kPa = standard atmospheric pressure. -101.3 kPa = absolute vacuum. |
kPa (abs) |
kiloPascals - absolute |
Pressure |
0 kPa (abs) = absolute vacuum. 101.3 kPa(abs) = standard atmospheric pressure. |
% |
Percent |
||
° |
Degree |
Angle |
360
degrees make up one revolution. Note that a 4-stroke engine cycle requires 2 crankshaft revolutions, so the engine cycle is
720 degrees.
|
|
lambda |
1 lambda = the stoichiometric ratio of the fuel being used. To convert to typical gasoline/petrol AFR: multiply by 14.7 To convert to ethanol AFR: multiply by 9 To convert to methanol AFR: multiply by 6.47 |
|
K |
Kelvin |
Temperature |
A unit of temperature where 0 is absolute zero temperature. It uses the same scale as degrees Celsius. So, an increase of 1K is an
increase of 1°C.
To convert from Kelvin to degrees Celsius, simply subtract 273.15. To convert from Kelvin to degrees Fahrenheit: Water freezes at 273.15K and boils at 373.15K. |
km/h |
kilometers per hour |
Velocity |
A common metric speed measurement. To convert to meters per second: divide by 3.6. To convert to miles per hour: divide by 1.609. |
m/s2 |
meters per second-squared |
Acceleration |
A
common metric acceleration measurement. To convert to G: divide by 9.8 |
dB |
Decibel |
||
cc/min |
cubic centimeters per minute |
Volume Flow Rate |
A volume flow-rate measurement commonly used for fuel injectors. A common approximate conversion to pounds per hour (lbs/hr) is to |
cc |
cubic centimeter |
Volume |
0.001 L. To convert to fluid ounces (fl. oz.): divide by 29.574. |
L |
liter |
Volume |
Volume. 1000 cc. To convert to US gallons: divide by 3.785 |
V |
Volt |
||
ppm |
parts per million |
Concentration
/ |
A
mass ratio used for representing concentrations of a substance within
another. |
g/m3 |
grams per cubic meter |
Density |
Water has a density of 1 million g/m³ |
ms |
millisecond |
Time |
1/1000 of a second. |
s |
second |
Time |
1/60 of a minute, 1/3600 of an hour. |
min |
minute |
Time |
60 seconds. 1/60 of an hour. |
h |
hour |
Time |
60 minutes. 3600 seconds. |
Typically, each binary digit (bit) represents whether a thing is 0 or 1. 0 typically means false or off, and 1 typically means true or on.
E.g., The Haltech ECU channel "Engine Limiting Method" has 1 as Fuel and 2 as Ignition. This is 0b01
for fuel and 0b10 for Ignition. If both Fuel and Ignition are being used, the
two values are added together, giving a value of 1 + 2 = 3.