Skip to content

BMS Packet (Single-Direction, Firmware → ROS driver)

This packet is generated by the firmware to report data acquired from the robot's BMS(Battery Management System) module. It is periodically transmitted to the ROS driver at fixed 500 ms intervals through UDP port number 49167.


Field Layout

Byte Offset Field Name Type Size (Bytes) Description
0 - 11 Header Timestamp Header 12 Please refer to Timestamp Header.
12 - 15 Data Valid Bits 32-bit unsigned integer 4 Please refer to Data Valid Bit definitions.
16 - 17 Version 16-bit unsigned integer 2 Firmware version of the BMS module.
18 - 19 Number Of Cells 16-bit unsigned integer 2 Number of cell in series.
20 - 21 Temperature 16-bit unsigned integer 2 Temperature of the battery. Unit: 0.1 K.
22 - 23 Total Voltage 16-bit unsigned integer 2 Total voltage of each cell. Unit: mV.
24 - 25 Current 16-bit signed integer 2 Current value. Unit: mA.
26 - 27 Relative State Of Charge 16-bit unsigned integer 2 Remaining capacity percentage of the battery. Unit: %
28 - 29 Remaining Capacity 16-bit unsigned integer 2 Remaining capacity of the battery. Unit: mAh.
30 - 31 Full Charge Capacity 16-bit unsigned integer 2 Full charge capacity of the battery. Unit: mAh.
32 - 33 Charging Current 16-bit unsigned integer 2 Required charge current.
34 - 35 Charging Voltage 16-bit unsigned integer 2 Required charge voltage
36 - 37 Battery Status 16-bit unsigned integer 2 Flag state of the Battery. Please refer to Battery Status.
38 - 39 Control Flag Status 16-bit unsigned integer 2 Flag status of control. Please refer to Control Flag Status. (This field has no effect on robot operation. It is used solely to indicate the extended configuration status of the BMS module.)
40 - 41 Relative State Of Health 16-bit unsigned integer 2 Indicates the remaining lifetime of the battery. Unit: %.
42 - 55 Voltage of Cells[7] 16-bit unsigned integer array 2 x 7 Voltage of cell 1 - 7. Currently, a total of 7 cells are used.
56 - 57 Write Lock Flag Status 16-bit unsigned integer 2 Indicates the write-lock status. Set to 1 when the write lock is released. (This field has no effect on robot operation.)
58 - 59 Operation Status 16-bit unsigned integer 2 Indicates the current mode. Please refer to Operation Status.
60 - 61 Total Cell Voltage 16-bit unsigned integer 2 Total cell voltage
62 - 63 Pack Voltage 16-bit unsigned integer 2 Pack voltage.
64 - 65 Pack Status 16-bit unsigned integer 2 Please refer to Pack Status.
66 - 67 Cell Balancing Status 16-bit unsigned integer 2 Indicates the enable status of cell balancing for each cell. Please refer to Cell Balancing Status.
68 - 69 Fault Status 16-bit unsigned integer 2 Upper byte: Indicates the number of fault events that have occurred. Lower byte: Each bit represents a fault condition flag. Please refer to Fault Condition Flag.
70 - 71 Checksum Of Firmware 16-bit unsigned integer 2 Checksum of the firmware code.
72 - 73 Checksum Of Constants 16-bit unsigned integer 2 Checksum of fixed constant value in BMS's flash.

Data Valid Bits

The Data Valid Bits field specifies the validity of each data item in the BMS packet. A bit set to 1 indicates that the corresponding data was successfully read, while a bit set to 0 indicates a read failure. When a data item cannot be read successfully, the firmware shall set the corresponding field value to 0.

Bit Name
0 Version
1 Number Of Cells
2 Temperature
3 Total Voltage
4 Current
5 Relative State Of Charge
6 Remaining Capacity
7 Full Charge Capacity
8 Charging Current
9 Charging Voltage
10 Battery Status
11 Control Flag Status
12 Relative State Of Health
13 Cell1 Voltage
14 Cell2 Voltage
15 Cell3 Voltage
16 Cell4 Voltage
17 Cell5 Voltage
18 Cell6 Voltage
19 Cell7 Voltage
20 Write Lock Flag Status
21 Operation Status
22 Total Cell Voltage
23 Pack Voltage
24 Pack Status
25 Cell Balancing Status
26 Fault Status
27 Checksum Of Firmware
28 Checksum Of Constants
29 - 31 Reserved. Set to 0.

Battery Status

Bit Name Description
0 FULLY_DISCHARGED Set to 1 when the battery is fully discharged.
1 FULLY_CHARGED Set to 1 when the battery is fully charged.
2 DISCHARGING Set to 1 when the battery is in discharging state.
3 SHORT_CURRENT_ALARM Set to 1 when a short-circuit condition is detected.
4 OVER_CHARGE_CURRENT_ALARM Set to 1 when an over-charge current condition is detected.
5 OVER_DISCHARGE_CURRENT_ALARM Set to 1 when an over-discharge current condition is detected.
6 OVER_TEMP_ALARM Set to 1 when an over-temperature condition is detected.
7 - 15 Reserved Set to 0.

Control Flag Status

This data is intended only for debugging by firmware engineers.

Bit Name Description
0 2ND_THERM
1 CELL_BALANC
2 INIT_CALIB_1P
3 INITCAP
4 F_SYS_CON_EN
5 - 15 Reserved Set to 0.

Operation Status

Mode Number Mode Name
0x0000 Init
0x0001 WakeUp
0x0002 Discharging
0x0003 Charging
0x0004 Reserved
0x0005 Charge Terminate
0x0006 Charge Wait
0x0007 - 0x000F Reserved
0x0010 Charge Over Heat
0x0011 Discharge Over Heat
0x0012 Over Charge Current
0x0013 Over Discharge Current
0x0014 Short Current
0x0015 Over Voltage
0x0016 2nd Thermal Over Heat
0x0017 - 0x001D Reserved
0x001E Power Down
0x001F Reserved
0x0020 Initial calibration
0x0021 - 0x0098 Reserved
0x0099 Fixed Constant Data Error
0x0100 - Reserved

Pack Status

Bit Name Description
0 DFET Condition of D-FET. (0=OFF, 1=ON)
1 CFET Condition of C-FET. (0=OFF, 1=ON)
2 SYS Current SYS-connect status(0=Disconnect, 1=Connect)
3 CP Indicates whether the Capacity Correction condition is activate. While charging, if SOC(Relative State Of Charge) value exceeds the configured threshold, then this bit is cleared.
4 - 15 Reserved Set to 0.

Cell Balancing Status

Bit Description
0 Cell balancing in CELL 1 (0=OFF, 1=ON)
1 Cell balancing in CELL 2 (0=OFF, 1=ON)
2 Cell balancing in CELL 3 (0=OFF, 1=ON)
3 Cell balancing in CELL 4 (0=OFF, 1=ON)
4 Cell balancing in CELL 5 (0=OFF, 1=ON)
5 Cell balancing in CELL 6 (0=OFF, 1=ON)
6 Cell balancing in CELL 7 (0=OFF, 1=ON)
7 - 15 Reserved

Fault Condition Flag

Bit Description
0 Over Voltage
1 Charge wait
2 Charge Over Current
3 Discharge Over Current
4 Short Current
5 Charge Over/Under Temperature.
6 Discharge Over/Under Temperature.
7 Reserved

Usage

The configuration of the BMS module is performed by the firmware after the robot is powered on. Therefore, modifying BMS module settings through the ROS driver is not supported.

The primary purpose of the BMS packet is to monitor the current battery state of charge and charging status. The following data items transmitted in the BMS packet shall be used for this purpose:

  • Temperature
  • Total Voltage
  • Current
  • Relative State of Charge (SOC)
  • Remaining Capacity
  • Relative State of Health (SOH)
  • Operation Status

In particular, when a wired charger is used, the charging status cannot be determined from the ChargerManager packet. In such cases, the ROS driver shall determine the charging status using the data provided in the BMS packet. (Please refer to Usage of the ChargerManager packet)

Other than the fields explicitly listed for monitoring battery state and charging status, the majority of additional values contained in the BMS packet are provided solely for firmware engineer debugging. These fields are not intended for use in system-level functionality or external integration, and their contents may change without notice in future firmware revisions.