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 implemenented 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 |
---|---|---|---|---|---|
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 batteyr 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 | uint16 | Minimum temperature in the system in 0.1C°. |
40111 | 111 | Max. Temperature | 1 | uint16 | 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. |
Table.2.3.2: Battery Status Registers Description
Combine four Battery Status
register into a 64bit variable and check bit values for error situation. If bit value is 1 then it indicates Error
, if bit value is 0 then it indicates No Error
.
Bit# | Status Description |
---|---|
1 | Over Temperature Protection |
7 | Cell Over Voltage Protection |
9 | Cell Under Voltage Protection |
14 | DCHG Over Current Protection |
15 | DCHG Over Current 2nd Protection |
16 | CHG Over Current Protection |
31 | Output RELAY 1 |
32 | Output RELAY 2 |
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.