1.2.1 LiBat Canbus v2.x Data Format
LiBat protocol v2.x is the current CAN protocol of the LiBat™ BMS (current revision v2.2). It uses CAN 2.0B — Extended Frame (29-bit ID) frames. In LiMon it is selected as LiBat CANbus v2.0 in Canbus No#0 Port Protocol (Interface Settings).
Table.1.2.1.1: CAN Bit Rates
| Bit rate | Bit time | Recommended bus length | Recommendation |
|---|---|---|---|
| 125 kbit/s | 8.0 µs | ≤ 250 m | Long bus runs, sub-system harnesses. |
| 250 kbit/s | 4.0 µs | ≤ 100 m | Common industrial default. |
| 500 kbit/s | 2.0 µs | ≤ 50 m | Recommended default for LiBat BMS. |
| 1 Mbit/s | 1.0 µs | ≤ 20 m | Short, tightly controlled harnesses only. |
Table.1.2.1.2: Frame Identifier
| Byte 4 (MSB) | Byte 3 | Byte 2 | Byte 1 (LSB) | Ext. ID | DLC |
|---|---|---|---|---|---|
| Base (MSB) | Base (LSB) | 0x00 | Opcode | 1 | 0–8 |
The default base address is 0x0AAA, so the default identifier is 0x0AAA0000 + opcode. The base address is set in LiMon under CAN bus base frame ID (Interface Settings).
Table.1.2.1.3: Frame Families
| Opcodes | Content | Frames |
|---|---|---|
| 0x01 | Hello Packet | 1 |
| 0x02 | Battery Pack Status | 1 |
| 0x03 | Overall Pack Voltages | 1 |
| 0x04 | Overall Pack Currents | 1 |
| 0x05 | Power and Energy | 1 |
| 0x06 | Overall Pack Temperatures | 1 |
| 0x07 | System Errors L1 | 1 |
| 0xB0 | Multi-Master Parameters | 1 |
| 0xB1 | Report Device Multi-Master Parameters Status | 1 |
| 0xB2 | Device Info | 1 |
| 0xB3 | System Info | 1 |
| 0x10–0x17 | Module Voltages | 8 |
| 0x25–0x74 | Cell Voltages | 80 |
| 0x85–0xA4 | Temperatures | 32 |
All frames are Intel (little-endian) except the charger frame; see 1.2.2 for every signal.
Warning
Several frames are sent with fewer than 8 data bytes; 1.2.2 gives the DLC of each frame. Accept any DLC from 0 to 8 and decode only the bytes that were received.
1.2.1.1 Transmission
The BMS sends its frames in two ways. The period is set in LiMon under Interface Settings (Canbus No#0 Data Period Settings).
- Periodic: every 250, 500, 1000, 1500 or 2000 ms the BMS sends the whole frame set: 0x01–0x07, module voltages, cell voltages, temperatures, Device Info, System Info and the multi-master frame. Cell voltage and temperature frames are sent only for modules that exist, and temperature group 1 only when sensor 5 is fitted.
- On request: a frame with no data (DLC 0) sent to base address + opcode, e.g. 0x0AAA0002, makes the BMS send that frame once. This works in both modes and is the only way to read data when the period is set to Disabled.
Frames that can be requested: 0x01–0x06, 0x10 (all module voltage frames), 0x25 (all cell voltage frames), 0x85 (all temperature frames) and 0xB1. System Errors L1 (0x07), Device Info (0xB2) and System Info (0xB3) are sent only periodically, so a receiver that monitors errors must enable a period.
A request has the same identifier as the frame it asks for, so a receiver that only listens should ignore frames with DLC 0. A Main Controller answers a request for 0xB1 with its 0xB0 frames.
1.2.1.2 Minimum Message Set
An application that treats the pack as a black box needs only these five frames. The identifiers use the default base address.
Table.1.2.1.4: Minimum Message Set
| Frame | Identifier | Provides |
|---|---|---|
| Hello Packet | 0x0AAA0001 | Detects the BMS on the bus and identifies the model. |
| Battery Pack Status | 0x0AAA0002 | SoC and pack voltage. |
| Overall Pack Currents | 0x0AAA0004 | Current and power path states. |
| Overall Pack Temperatures | 0x0AAA0006 | Min / max / mean pack temperature. |
| System Errors L1 | 0x0AAA0007 | Faults and warnings; monitor it continuously. |
1.2.1.3 Acceptance Filter
All BMS frames share the upper 24 bits of the identifier, so one hardware filter keeps other traffic on a shared bus away from the receiver.
Table.1.2.1.5: Acceptance Filter
| Frames | Filter ID | Mask |
|---|---|---|
| All BMS frames | 0x0AAA0000 | 0x1FFFFF00 |
| Status and error frames (0x01–0x07) | 0x0AAA0000 | 0x1FFFFFF8 |
Cell voltage frames (0x25–0x74) do not fit one mask; filter all BMS frames and select them by opcode.
1.2.1.4 Multi-Master Frames
Only a BMS configured as Multi-Master Main Controller sends Multi-Master Parameters (0xB0), one frame to each slave pack at that pack's own base address. Every other BMS sends Report Device Multi-Master Parameters Status (0xB1), including a BMS with multi-master disabled. When its Master Configuration is 0 (Disabled), ignore the slave state and input fields of that frame.