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.