2.3. Modbus Register Map

This section explains modbus addresses and registers. User must see and apply the instructions below.

2.3.1 Coil Registers

No data provided for coil registers.

2.3.2 Discrete Input Registers

No data provided for discrete input registers.

2.3.3 Holding Registers

This table describes all readable parameters that can be read over modbus protocol. Slave address select option also implemented on holding registers. Using single register write function, slave address can be updated. (Refer the 2.3.5)

Table.2.3.1: Holding Registers

Address Register Name Size Type Description
40088-40090 88-90 Software Version 3 uint16 Firmware version (Major.Minor.Patch).
40091-40093 91-93 Hardware Version 3 uint16 Hardware version.
40094-40097 94-97 Serial Number 4 uint16 Device serial number.
40098-40101 98-101 Bootloader Version 4 uint16 Bootloader version.
40102 102 Model Number 1 uint16 Device model number.
40103 103 Pack Voltage 1 uint16 Battery pack total voltage. Multiples of 100mV.
40104 104 Pack Current 1 int16 Battery pack current. Multiples of 100mA.
40105 Reserved Reserved Reserved Reserved Reserved
40106 Reserved Reserved Reserved Reserved Reserved
40107 107 SOC 1 uint16 State of charge of the battery pack. Percent value.
40108 108 Min. Cell Voltage 1 uint16 Minimum cell voltage in the system in mV.
40109 109 Max. Cell Voltage 1 uint16 Maximum cell voltage in the system in mV.
40110 110 Min. Temperature 1 int16 Minimum temperature in the system in 0.1C°.
40111 111 Max. Temperature 1 int16 Maximum temperature in the system in 0.1C°.
40112 Reserved Reserved Reserved Reserved Reserved
40113 Reserved Reserved Reserved Reserved Reserved
40114 114 Battery Status (MSB) 1 uint16 Refer the table 2.3.2
40115 115 Battery Status 1 uint16 Refer the table 2.3.2
40116 116 Battery Status 1 uint16 Refer the table 2.3.2
40117 117 Battery Status (LSB) 1 uint16 Refer the table 2.3.2
40118 Reserved Reserved Reserved Reserved Reserved
... ... ... ... ... ...
40128 Reserved Reserved Reserved Reserved Reserved
40129 129 Slave data select 1 uint16 Slave select. This value selects which slave's cell voltages and temperatures will be written into holding register groups. See.: BMS Slave Data Select
40130 130 Cell Count in Slave 1 uint16 Connected cell count in selected slave module.
40131 131 Cell 1 Voltage 1 uint16 Cell 1 voltage in mV. Reads 0xFFFF if cell is not exist.
40132 132 Cell 2 Voltage 1 uint16 Cell 2 voltage in mV. Reads 0xFFFF if cell is not exist.
40133 133 Cell 3 Voltage 1 uint16 Cell 3 voltage in mV. Reads 0xFFFF if cell is not exist.
40134 134 Cell 4 Voltage 1 uint16 Cell 4 voltage in mV. Reads 0xFFFF if cell is not exist.
40135 135 Cell 5 Voltage 1 uint16 Cell 5 voltage in mV. Reads 0xFFFF if cell is not exist.
40136 136 Cell 6 Voltage 1 uint16 Cell 6 voltage in mV. Reads 0xFFFF if cell is not exist.
40137 137 Cell 7 Voltage 1 uint16 Cell 7 voltage in mV. Reads 0xFFFF if cell is not exist.
40138 138 Cell 8 Voltage 1 uint16 Cell 8 voltage in mV. Reads 0xFFFF if cell is not exist.
40139 139 Cell 9 Voltage 1 uint16 Cell 9 voltage in mV. Reads 0xFFFF if cell is not exist.
40140 140 Cell 10 Voltage 1 uint16 Cell 10 voltage in mV. Reads 0xFFFF if cell is not exist.
40141 141 Cell 11 Voltage 1 uint16 Cell 11 voltage in mV. Reads 0xFFFF if cell is not exist.
40142 142 Cell 12 Voltage 1 uint16 Cell 12 voltage in mV. Reads 0xFFFF if cell is not exist.
40143 143 Cell 13 Voltage 1 uint16 Cell 13 voltage in mV. Reads 0xFFFF if cell is not exist.
40144 144 Cell 14 Voltage 1 uint16 Cell 14 voltage in mV. Reads 0xFFFF if cell is not exist.
40145 145 Cell 15 Voltage 1 uint16 Cell 15 voltage in mV. Reads 0xFFFF if cell is not exist.
40146 146 Cell 16 Voltage 1 uint16 Cell 16 voltage in mV. Reads 0xFFFF if cell is not exist.
40147 147 Cell 17 Voltage 1 uint16 Cell 17 voltage in mV. Reads 0xFFFF if cell is not exist.
40148 148 Cell 18 Voltage 1 uint16 Cell 18 voltage in mV. Reads 0xFFFF if cell is not exist.
40149 149 Temperature 1 1 int16 Temperature sensor 1 in 0.1C°. Reads 0xFFFF if sensor is not exist.
40150 150 Temperature 2 1 int16 Temperature sensor 2 in 0.1C°. Reads 0xFFFF if sensor is not exist.
40151 151 Temperature 3 1 int16 Temperature sensor 3 in 0.1C°. Reads 0xFFFF if sensor is not exist.
40152 152 Temperature 4 1 int16 Temperature sensor 4 in 0.1C°. Reads 0xFFFF if sensor is not exist.
40153 153 Temperature 5 1 int16 Temperature sensor 5 in 0.1C°. Reads 0xFFFF if sensor is not exist.
40154 154 Modbus Address 1 uint16 Modbus slave address. Writing to this field updates slave address immediately. Value must be between 1-247(0x01-0xF7). 0x00 is modbus broadcast ID and can't be set.

Combine the four Battery Status registers into a single 64-bit value - register 40114 holds the most significant word (bits 63:48) and 40117 holds the least significant word (bits 15:0). Then check each bit below (bit 0 = LSB).

Table.2.3.2: Battery Status Bits

Bit Name Class Behaviour
0 User Attention Required STATUS Set by a CRITICAL fault or when a PROTECT fault reaches the retry limit.
1 Over Temperature Protection PROTECT Switches off both paths until the condition clears.
2 Over Temperature Warning WARNING No path is switched off.
3 Discharge Under Temperature Protection PROTECT Switches off the discharge path until the condition clears.
4 Discharge Under Temperature Warning WARNING No path is switched off.
5 Charge Under Temperature Protection PROTECT Switches off the charge path until the condition clears.
6 Charge Under Temperature Warning WARNING No path is switched off.
7 Cell Over Voltage Protection PROTECT Switches off the charge path until the condition clears.
8 Cell Over Voltage Warning WARNING No path is switched off.
9 Cell Under Voltage Protection PROTECT Switches off the discharge path until the condition clears.
10 Cell Under Voltage Warning WARNING No path is switched off.
11 Max. Cell Delta Voltage Protection CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
12 Max. Temperature Delta Protection CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
13 Discharge Over Current Warning WARNING No path is switched off.
14 Discharge Over Current Protection PROTECT Switches off the discharge path until the condition clears.
15 Discharge Over Current 2nd Protection PROTECT Switches off the discharge path until the condition clears.
16 Charge Over Current Warning WARNING No path is switched off.
17 Charge Over Current Protection PROTECT Switches off the charge path until the condition clears.
18 Short Circuit Protection PROTECT Switches off both paths until the condition clears.
19 Low SoC 1st Warning WARNING No path is switched off.
20 Low SoC 2nd Warning WARNING No path is switched off.
21 PCB Over Temperature Warning WARNING No path is switched off.
22 PCB Over Temperature Protection PROTECT Switches off both paths until the condition clears.
23 FET Over Temperature Warning WARNING No path is switched off.
24 FET Over Temperature Protection PROTECT Switches off both paths until the condition clears.
25 Internal Error UNUSED Not set by the current firmware.
26 Cell Connection Error CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
27 Sleep Cannot Execute STATUS Set when a shutdown is requested while faults hold both paths off.
28 Max. Parallel Group Delta Voltage Protection CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
29 Slave Module Communication Error CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
30 Main Contactor Malfunction CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
31 Pre-Charge Fault CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
32 System Power On STATUS Set at power-on and cleared in the first protection cycle.
33 Multi-Master Enable Power-Out Sequence PROTECT Slave only: both paths stay off until the master enables power out.
34 Multi-Master Communication Timeout MULTI-MASTER Communication lost; depending on the comm-error strategy the master switches off the affected slave's power out.
35 Multi-Master Parallel Packs Delta Voltage Error MULTI-MASTER Master only: pack voltages differ too much; the master switches off the affected slave's power out.
36 Charge Contactor Malfunction CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
37 Discharge Contactor Malfunction CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
38 Balancing Over Temperature Warning WARNING No path is switched off; balancing stops.

Bits 39–63 are not used. The class describes what the firmware does when the bit is set.

Table.2.3.3: Error Classes

Class Meaning
WARNING Reports that a warning limit is exceeded. No path is switched off.
PROTECT Switches off the listed path while the condition lasts and back on when it clears; see the retry note below.
CRITICAL Switches off both paths and sets User Attention; the paths stay off until the BMS restarts.
STATUS Reports a state of the BMS. No path is switched off.
MULTI-MASTER Used in multi-master systems; acts on the power output of another pack.
UNUSED Defined but not set by the current firmware.

PROTECT faults switch the path back on by themselves once the condition clears. Each trip of the same fault is counted; when the count reaches Max Retry Limit (LiMon Peripheral Settings, default 5, 0 = no limit) the BMS sets User Attention and no longer switches the path back on by itself. CRITICAL faults keep both paths off until the BMS restarts.

2.3.4 Input Registers

No data provided for input registers

2.3.5 Modbus Slave Address Update

Using this modbus protocol "Write Single Register" function, single register on holding registers can be altered. This function implemented for changing modbus slave address using modbus protocol. Writing to holding register address 40154, sets device slave address effective immediately. So, any frame send after slave address update, must be implemented using updated slave address. Any value ranging between 1-247 (0x01-0xF7) can be selected as slave address.

2.3.6 BMS Slave Data Select

This register is used to select which slave BMS's data will be put into holding registers. Values in address range 40130 to 40153 are populated with selected BMS's voltage and temperature values. Slave data select register can be updated frequently to read all cell voltages and temperatures in the system.