Here is information on some of the CAN IDs that you're most likely to use with RaceChrono and equations to get the right scale, etc.
Please note there is still much work in progress, any contributions are welcome.
Update frequency: 100 times per second.
0x081
contain data related to steering angle. This CAN ID is available only in
cars with DSC module, so all cars from 2007 onwards.
Only 4 bytes long.
Byte | Meaning |
---|---|
0 | unidentified |
1 | on/off (EF/6F or 11101111/01101111) |
2 & 3 | signed values for the steering angle |
Channel name | Equation | Notes |
---|---|---|
Steering angle | bytesToInt(raw, 2, 2) |
positive values are from centered position (0) to right, negative otherwise |
Update frequency: 100 times per second.
0x085
contain data related to braking. This CAN ID is available only in
cars with DSC module, so all cars from 2007 onwards.
Byte | Meaning |
---|---|
0 & 1 | together with byte 1 represent the pressure of the braking system |
2 | brake siwtch ON/OFF, information contained in bit 0 (MSB, from left) |
3 | Not changing |
4 | Not changing |
5 | Not changing |
6 | Not changing |
7 | Not changing |
Channel name | Equation | Notes |
---|---|---|
Brake pressure | (3.4518689053*bytesToInt(raw, 0, 2)-327.27)/1000.00 |
multipliers are obtained from data from Leisurehound user on miata.net, may be wrong. Unit is kPa |
Brake percentage | min(0.2*(bytesToInt(raw, 0, 2)-102),100) |
this is an alternative to get brake percentage. When not pressed the value is 102, after braking and releasing it goes briefly down to 99 so you may see slightly negative percentage. |
Digital | bitsToUint(raw,17,1)/2 |
0-1 value |
Update frequency: 100 times per second.
0x090
WIP. Probably related to accelerations. This CAN ID is available only in
cars with DSC module, so all cars from 2007 onwards.
Byte | Meaning |
---|---|
0 | WIP |
1 | WIP |
2 | WIP |
3 | WIP |
4 | WIP |
5 | WIP |
6 | WIP |
7 | WIP |
Channel name | Equation | Notes |
---|---|---|
... | ... | ... |
Update frequency: 100 times per second.
Byte | Meaning |
---|---|
0 | WIP |
1 | WIP |
2 | WIP |
3 | WIP |
4 | WIP |
5 | WIP |
6 | Brake On/Off |
7 | Throttle Valve Position (%) |
Channel name | Equation | Notes |
---|---|---|
Brake On/Off | data[6] & 0x1 |
|
Throttle Position | bytestouint(raw,7,1)*100/255.00 |
Scale may need adjustment, doesn't take into account the offset for idle. Same value available in CAN ID 0x215 byte 6 |
Update frequency: 100 times per second.
0x201
This CAN ID is related to engine speed, vehicle speed
and accelerator position.
Byte | Meaning |
---|---|
0 | With byte 1 represent engine speed |
1 | With byte 0 represent engine speed |
2 & 3 | WIP: follows RPM |
4 & 5 | represent vehicle speed |
6 | Accelerator pedal position (%) |
7 | Always FF |
Channel name | Equation | Notes |
---|---|---|
Byte 2/3 | Seems to be a derivative of ERPM, appears to have 0x7fff offset, appears to be unrelated to engine torque | |
Engine RPM | bytestouint(raw,0,2)/4.00 |
|
Speed | ((bytestoint(raw,4,2)/100.00)-100)/3.6 |
Raw speed data is given in km/h with a 100 km/h offset. The "3.6" at the end of the equation is needed to switch to m/s that is the unit used internally for calculation by RaceChrono. In the calculation RaceChrono will then multiply automatically for the correct value to transform the m/s to your choice of units (i.e. km/h or mph). |
Accelerator Position | bytestoint(raw,6,1)*2.00 |
This is a percentage, increments of 0.5% |
Appears to be all 0xFF
Always 80 00 20 40 00 00 00 00
?
Update frequency: 100 times per second.
0x215
WIP. Mostly related to fault codes but
byte 6 contain Throttle Valve Position
Byte | Meaning |
---|---|
0 | WIP |
1 | WIP |
2 | WIP |
3 | WIP |
4 | WIP |
5 | WIP |
6 | Throttle Valve Position (%) |
7 | WIP |
Channel name | Equation | Notes |
---|---|---|
Throttle Position | bytestouint(raw,6,1)*100/255.00 |
Scale may need adjustment, doesn't take into account the offset for idle. Same value available in CAN ID 0x200 byte 7 |
Susepct Byte 0 and Byte 2 mirror each other, and Byte 1 and Byte 3 mirror each other.
Byte 1, 3 respond to throttle input. Perhaps different ways of measuring pedal, valve, etc for redundancy/agreement/plausibility?
Update frequency: 40 times per second.
0x231
Is related to transmission, probably has
more significative data for AT cars. On MT cars
only interesting bit is the clutch switch
Byte | Meaning |
---|---|
0 | Always FF (on MT) |
1 | bit 3 = in neutral, bit 1 = clutch depressed |
2 | Always FF (on MT) |
3 | Always FF (on MT) |
4 | Always 00 (on MT) |
5 | Always 00 (on MT) |
6 | Always 00 (on MT) |
7 | Always 00 (on MT) |
Channel name | Equation | Notes |
---|---|---|
Neutral | data[1] & 0x4 |
1 when shifter is out of gear |
Clutch | data[1] & 0x2 |
1 when clutch depressed |
Update frequency: 10 times per second.
0x240
Contains engine related data such as
cooling water temperature, air intake temperature
spark angle, calculated load, throttle valve position
only interesting bit is the clutch switch
Byte | Meaning |
---|---|
0 | Calculated Load (%) |
1 | Engine Coolant Temperature (°C) |
2 | WIP: seems related to ignition timing (deg) |
3 | Throttle Valve Position (%) |
4 | Intake Air Temperature (°C) |
5 | Always 00 |
6 | Always 00 |
7 | Always 00 (faults?) |
Channel name | Equation | Notes |
---|---|---|
Percentage | 100*(bytestouint(raw,0,1)/255.00 |
can't find Engine Load on RaceChrono list of channels |
Coolant temperature | bytestouint(raw,1,1)-40 |
RaceChrono does calculation in °C then converts to your unit of choice. Same data availble in byte 0 of ID 420 |
Throttle position | 100*bytestouint(raw,1,1)/255 |
Scale may need adjustment. This ID should refer to absolute opening value, i.e. taking into account the opening at idle. Still, the value at idle for my measurements seems too high (11%...) |
Ignition advance | ||
Intake temperature | bytestouint(raw,4,1)-40 |
RaceChrono does calculation in °C then converts to your unit of choice |
Byte | Meaning |
---|---|
0 - 1 | Fuel? |
2 - 7 | 0x00 constant |
0x430 is Fuel on the ND.
Update frequency: 100 times per second.
0x4b0
is dedicated only to wheel speed representation
Byte | Meaning |
---|---|
0 & 1 | Front Left Wheel Speed |
2 & 3 | Front Right Wheel Speed |
4 & 5 | Rear Left Wheel Speed |
6 & 7 | Rear Right Wheel Speed |
Channel name | Equation | Notes |
---|---|---|
Vehicle Speed Front Left | ((bytestoint(raw,0,2)/100.00)-100)/3.6 |
Raw speed data is given in km/h with a 100 km/h offset. The "3.6" at the end of the equation is needed to switch to m/s that is the unit used internally for calculation by RaceChrono. In the calculation RaceChrono will then multiply automatically for the correct value to transform the m/s to your choice of units (i.e. km/h or mph). |
Vehicle Speed Front Right | ((bytestoint(raw,2,2)/100.00)-100)/3.6 |
|
Vehicle Speed Rear Left | ((bytestoint(raw,4,2)/100.00)-100)/3.6 |
|
Vehicle Speed Rear Right | ((bytestoint(raw,6,2)/100.00)-100)/3.6 |
Here's what the distribution of CAN IDs looks like in the CAN bus while idling in a parking lot:
CAN ID (hex) | CAN ID (decimal) | Number of packets received over a 10 second period |
---|---|---|
081 | 129 | 1000 |
085 | 133 | 1000 |
090 | 144 | 1000 |
200 | 512 | 1000 |
201 | 513 | 1000 |
204 | 516 | 500 |
211 | 529 | 1000 |
212 | 530 | 100 |
215 | 533 | 1000 |
21A | 538 | 500 |
231 | 561 | 400 |
240 | 576 | 100 |
39A | 922 | 100 |
420 | 1056 | 100 |
430 | 1072 | 100 |
4B0 | 1200 | 1000 |
4EC | 1260 | 400 |
4F0 | 1264 | 10 |
4F1 | 1265 | 10 |
4FF | 1279 | 100 |