Skip to main content
Firmware Stable

Periodic Messages

info

All messages are little endian.

0x500 Status Message​

Sent every 100 ms. The CAN ID is 0x500 + (address - 4), so the master BMS (address 4) sends at 0x500.

ByteTypeDescription
0UINT8Application ID (203)
1UINT8BMS state — /driver/state
2UINT8BMS error — /driver/hw_error
3UINT8SOC: 0–200 (represents 0–100%). 255 = invalid SOC (NaN)
4-5UINT16Limiter status word
6UINT8Limiter value positive. 0 = zero current, 255 = full current available
7UINT8Limiter value negative. 0 = zero current, 255 = full current available
note

All subsequent messages below are sent only by the master BMS (address 4).

0x504 Energy​

Sent every 200 ms. Integer values multiplied by 10 (one decimal precision). Values are from the BEST module.

ByteTypeDescription
0-1INT16Cmax Maximum battery capacity [mAh x 10]
2-3INT16Cact Actual battery capacity [mAh x 10]
4-5INT16Emax Maximum battery energy [Wh x 10]
6-7INT16Eact Actual battery energy [Wh x 10]

Sent every 500 ms. Integer values multiplied by 10 (one decimal precision). See Controller Limits.

ByteTypeDescription
0-1INT16Recommended Ibpos value
2-3INT16Recommended Ibneg value
4-5INT16Recommended Ubmin value
6-7INT16Recommended Ubmax value

0x507 Current Limits​

Sent every 500 ms. Integer values multiplied by 10 (one decimal precision). See Controller Limits.

ByteTypeDescription
0-1UINT16iref_limit x 10
2-3UINT16ipeak_limit x 10

0x508 Charger Limits​

Sent every 500 ms. Integer values multiplied by 10 (one decimal precision). See Charger Communication.

ByteTypeDescription
0-1UINT16/charger/max_current x 10
2-3UINT16/charger/end_voltage x 10
warning

This message sends static values. The charger must also monitor the limiter value (negative) field in the 0x500 Status Message to dynamically limit its charge current.

0x50A Atmospheric Data​

Sent every 1 s. Data from the optional SHT4x environmental sensor and pressure sensor.

ByteTypeDescription
0-1INT16Reserved
2INT8Temperature [C] (dedicated SHT4x sensor, not used as BMS battery temperature)
3UINT8Humidity [%]
4-7INT32Pressure [Pa]

0x510 Status II​

Sent every 200 ms. Integer values with scaling as indicated.

ByteTypeDescription
0-1INT16Battery voltage [V x 100]
2-3INT16Battery current through DSC port [A x 50]
4-5INT16Battery current through CHG port [A x 50]
6-7INT16Battery temperature (maximum of all sensors) [C x 10]

0x516–0x51B Cell Voltages​

Sent every 200 ms. Each message contains 4 cell voltage values. Messages are sent sequentially up to the configured cell count.

ByteTypeDescription
0-1UINT16Cell 1 voltage and status
2-3UINT16Cell 2 voltage and status
4-5UINT16Cell 3 voltage and status
6-7UINT16Cell 4 voltage and status
Message IDCells
0x5161–4
0x5175–8
0x5189–12
0x51913–16
0x51A17–20

Cell Voltage Encoding​

Each UINT16 cell value encodes both the voltage and status flags:

BitsDescription
0–12Voltage [mV]
13Cell with minimum voltage
14Cell with maximum voltage
15Cell is being balanced
info

If a cell is not present, the value 0xFFFF is sent.