Wiki source code of 6.2 Modbus protocol
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | (% data-numbered-headings-start="6" style="--numbered-headings-start: 5;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %) | ||
2 | = Communication protocols = | ||
3 | |||
4 | (% data-numbered-headings-start="2" style="--numbered-headings-start: 1;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %) | ||
5 | == Modbus protocol == | ||
6 | |||
7 | === General information === | ||
8 | |||
9 | The BMS Main 3X device provides information about the battery system using Modbus protocol. The BMS is a Modbus-server and it responds to the Modbus-client’s commands. | ||
10 | |||
11 | Interaction with the device is performed over the RS-485 bus (Modbus RTU) or the Ethernet network (Modbus TCP). | ||
12 | |||
13 | The RS-485 bus connection parameters: | ||
14 | |||
15 | * baud rate, bps — 600, 1200, 2400, 4800, 9600 (by default), 19200, 38400, 57600, 115200; | ||
16 | * word length, bits — 8; | ||
17 | * parity — none; | ||
18 | * board address (by default) — 64. | ||
19 | |||
20 | There is a description of the Input и Holding registers below. Column "Type" contains method of parameters coding: | ||
21 | |||
22 | * CHAR – character (signed 8-bit integer number); | ||
23 | * U8 — unsigned 8-bit integer number; | ||
24 | * U16 — unsigned 16-bit integer number; | ||
25 | * S16 — signed 16-bit integer number; | ||
26 | * U32 — unsigned 32-bit integer number; | ||
27 | * REAL32 — single precision floating point number ([[IEEE 754>>url:https://ru.wikipedia.org/wiki/IEEE_754]] standard); | ||
28 | * U8[x] — array of unsigned 8-bit integer numbers having a length of x; | ||
29 | * U16[x] — array of unsigned 16-bit integer numbers having a length of x; | ||
30 | * REAL32[x] — array of single precision floating point numbers having a length of x. | ||
31 | |||
32 | The bytes order of the word is **little endian**. | ||
33 | |||
34 | === Input registers === | ||
35 | |||
36 | (% style="width:662px" %) | ||
37 | |(% style="width:44px" %)**Register address**|(% style="width:55px" %)**Number of registers**|(% style="width:482px" %)**Content**|(% style="width:44px" %)**Type** | ||
38 | |(% style="width:44px" %)**0x0000**|(% style="width:55px" %)1|(% style="width:482px" %)((( | ||
39 | Hardware version: | ||
40 | |||
41 | byte 0 — minor; | ||
42 | |||
43 | byte 1 — major. | ||
44 | )))|(% style="width:44px" %)U8[2] | ||
45 | |(% style="width:44px" %)**0x0001-0x0002**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
46 | Firmware version: | ||
47 | |||
48 | byte 0 — patch; | ||
49 | |||
50 | byte 1 — minor; | ||
51 | |||
52 | byte 2 — major; | ||
53 | |||
54 | byte 3 — not used (set to 0). | ||
55 | )))|(% style="width:44px" %)U8[4] | ||
56 | |(% style="width:44px" %)**0x0003-0x0004**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
57 | Bootloader (ubl) version: | ||
58 | |||
59 | byte 0 — patch; | ||
60 | |||
61 | byte 1 — minor; | ||
62 | |||
63 | byte 2 — major; | ||
64 | |||
65 | byte 3 — not used (set to 0). | ||
66 | )))|(% style="width:44px" %)U8[4] | ||
67 | |(% colspan="4" style="width:659px" %)**Battery state** | ||
68 | |(% style="width:44px" %)**0x1000**|(% style="width:55px" %)1|(% style="width:482px" %)Battery state of charge (SOC), %|(% style="width:44px" %)U16 | ||
69 | |(% style="width:44px" %)**0x1001**|(% style="width:55px" %)1|(% style="width:482px" %)Battery state of health (SOH), %|(% style="width:44px" %)U16 | ||
70 | |(% style="width:44px" %)**0x1002**|(% style="width:55px" %)1|(% style="width:482px" %)((( | ||
71 | Battery balancing efficiency, % | ||
72 | |||
73 | Note – The value is calculated as a minimal balancing efficiency among battery modules. | ||
74 | )))|(% style="width:44px" %)U16 | ||
75 | |(% style="width:44px" %)**0x1003**|(% style="width:55px" %)1|(% style="width:482px" %)((( | ||
76 | Battery state (enumeration): | ||
77 | |||
78 | 0 – Off (the battery is off); | ||
79 | |||
80 | 1 – Pre-balancing (the battery modules are precharging); | ||
81 | |||
82 | 2 – Balancing (the battery modules are joined and balancing); | ||
83 | |||
84 | 3 – Precharging (the modular battery is precharging); | ||
85 | |||
86 | 4 – Idle (the modular battery is idle (charging and discharging currents are not detected)); | ||
87 | |||
88 | 5 – Charging (the modular battery is charging); | ||
89 | |||
90 | 6 – Discharging (the modular battery is discharging). | ||
91 | )))|(% style="width:44px" %)U16 | ||
92 | |(% style="width:44px" %)**0x1004-0x1005**|(% style="width:55px" %)2|(% style="width:482px" %)Battery voltage, V|(% style="width:44px" %)REAL32 | ||
93 | |(% style="width:44px" %)**0x1006-0x1007**|(% style="width:55px" %)2|(% style="width:482px" %)Battery current, A|(% style="width:44px" %)REAL32 | ||
94 | |(% style="width:44px" %)**0x1008-0x1009**|(% style="width:55px" %)2|(% style="width:482px" %)Battery resistance, Ohm|(% style="width:44px" %)REAL32 | ||
95 | |(% style="width:44px" %)**0x100A-0x100B**|(% style="width:55px" %)2|(% style="width:482px" %)Temperature measured by external sensor 1, °C|(% style="width:44px" %)REAL32 | ||
96 | |(% style="width:44px" %)**0x100C-0x100D**|(% style="width:55px" %)2|(% style="width:482px" %)Temperature measured by external sensor 2, °C|(% style="width:44px" %)REAL32 | ||
97 | |(% style="width:44px" %)**0x100E-0x100F**|(% style="width:55px" %)2|(% style="width:482px" %)Minimum temperature among battery modules, °C|(% style="width:44px" %)REAL32 | ||
98 | |(% style="width:44px" %)**0x1010-0x1011**|(% style="width:55px" %)2|(% style="width:482px" %)Maximum temperature among battery modules, °C|(% style="width:44px" %)REAL32 | ||
99 | |(% style="width:44px" %)**0x1012-0x1013**|(% style="width:55px" %)2|(% style="width:482px" %)Battery capacity, A×h|(% style="width:44px" %)REAL32 | ||
100 | |(% style="width:44px" %)**0x1014-0x1015**|(% style="width:55px" %)2|(% style="width:482px" %)Energy received from the charger, W×h|(% style="width:44px" %)REAL32 | ||
101 | |(% style="width:44px" %)**0x1016-0x1017**|(% style="width:55px" %)2|(% style="width:482px" %)Energy consumed by the load, W×h|(% style="width:44px" %)REAL32 | ||
102 | |(% style="width:44px" %)**0x1018-0x1019**|(% style="width:55px" %)2|(% style="width:482px" %)Energy dissipated by the balancing resistors, W×h|(% style="width:44px" %)REAL32 | ||
103 | |(% style="width:44px" %)**0x101A-0x101B**|(% style="width:55px" %)2|(% style="width:482px" %)Battery charge current limit, A|(% style="width:44px" %)REAL32 | ||
104 | |(% style="width:44px" %)**0x101C-0x101D**|(% style="width:55px" %)2|(% style="width:482px" %)Battery discharge current limit, A|(% style="width:44px" %)REAL32 | ||
105 | |(% style="width:44px" %)**0x101E-0x101F**|(% style="width:55px" %)2|(% style="width:482px" %)Duration of the battery state (0x1003), seconds|(% style="width:44px" %)U32 | ||
106 | |(% style="width:44px" %)**0x1020-0x1021**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
107 | Internal signals (bitfield): | ||
108 | |||
109 | bit 0 – signal “Init” (current sensor calibration or battery modules scanning is performed); | ||
110 | |||
111 | bit 1 – signal “Charging” (0 – open, 1 – closed); | ||
112 | |||
113 | bit 2 – signal “Discharging” (0 – open, 1 – closed); | ||
114 | |||
115 | bit 3 – signal “Charging current present”; | ||
116 | |||
117 | bit 4 – signal “Discharging current present”; | ||
118 | |||
119 | bit 5 – signal “Charging/Discharging” (0 – open, 1 – closed); | ||
120 | |||
121 | bit 6 – signal “Precharging” (0 – open, 1 – closed); | ||
122 | |||
123 | bit 7 – signal “Interlock”; | ||
124 | |||
125 | bit 8 – signal “Fuse 1”; | ||
126 | |||
127 | bit 9 – signal “Fuse 2”; | ||
128 | |||
129 | bit 10 – signal “Fuse 3”; | ||
130 | |||
131 | bit 11 – signal “Heater” (0 – off, 1 – on); | ||
132 | |||
133 | bit 12 – signal “Cooler” (0 – off, 1 – on); | ||
134 | |||
135 | bit 13 – signal “Main contactor” (0 – open, 1 – closed); | ||
136 | |||
137 | bit 14 – signal “Service reset”; | ||
138 | |||
139 | bit 15 – signal “Coolant pump”; | ||
140 | |||
141 | bit 16 – signal “General error”; | ||
142 | |||
143 | bits 17-31 – not used. | ||
144 | )))|(% style="width:44px" %)U32 | ||
145 | |(% style="width:44px" %)**0x1022-0x1023**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
146 | Common errors 1 (bitfield): | ||
147 | |||
148 | bit 0 – error “Battery cover”; | ||
149 | |||
150 | bit 1 – error “Modules offline”; | ||
151 | |||
152 | bit 2 – “Critical error”; | ||
153 | |||
154 | bit 3 – error “Voltage unbalance (CH)”; | ||
155 | |||
156 | bit 4 – error “Voltage unbalance (DCH)”; | ||
157 | |||
158 | bit 5 – error “Current unbalance (CH)”; | ||
159 | |||
160 | bit 6 – error “Current unbalance (DCH)”; | ||
161 | |||
162 | bit 7 – error “Charging current unbalance”; | ||
163 | |||
164 | bit 8 – error “Discharging current unbalance”; | ||
165 | |||
166 | bit 9 – reserved (set to 0); | ||
167 | |||
168 | bit 10 – “CH contactor feedback error”; | ||
169 | |||
170 | bit 11 – “DCH contactor feedback error”; | ||
171 | |||
172 | bit 12 – “CH/DCH contactor feedback error”; | ||
173 | |||
174 | bit 13 – “Insulation fault”; | ||
175 | |||
176 | bit 14 – error “WDT reset”; | ||
177 | |||
178 | bit 15 – error “Overcurrent”; | ||
179 | |||
180 | bit 16 – error “Power switch error”; | ||
181 | |||
182 | bit 17 – error “High humidity”; | ||
183 | |||
184 | bit 18 – error “Water”; | ||
185 | |||
186 | bit 19 – error “Short circuit”; | ||
187 | |||
188 | bit 20 – error “Contactor high temperature”; | ||
189 | |||
190 | bit 21 – error “Stuck contactor”; | ||
191 | |||
192 | bit 22 – “HVIL error”; | ||
193 | |||
194 | bit 23 – “ADC error”; | ||
195 | |||
196 | bit 24 – “Current sensor error”; | ||
197 | |||
198 | bit 25 – “Mount error”; | ||
199 | |||
200 | bit 26 – “FS error”; | ||
201 | |||
202 | bit 27 – “High voltage fault”; | ||
203 | |||
204 | bit 28 – “PCH contactor feedback error”; | ||
205 | |||
206 | bit 29 – “Main contactor feedback error”; | ||
207 | |||
208 | bit 30 – “Precharge error”; | ||
209 | |||
210 | bit 31 – “Current limit error”. | ||
211 | )))|(% style="width:44px" %)U32 | ||
212 | |(% style="width:44px" %)**0x1024-0x1025**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
213 | Voltage unbalance CH errors (bitfield): | ||
214 | |||
215 | bit i – error of the (i+1)^^th^^ battery module. | ||
216 | )))|(% style="width:44px" %)U32 | ||
217 | |(% style="width:44px" %)**0x1026-0x1027**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
218 | Voltage unbalance DCH errors (bitfield). | ||
219 | |||
220 | Note – Registry mapping is the same as for registers 0x1024-0x1025 | ||
221 | )))|(% style="width:44px" %)U32 | ||
222 | |(% style="width:44px" %)**0x1028-0x1029**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
223 | Current unbalance CH errors (bitfield). | ||
224 | |||
225 | Note – Registry mapping is the same as for registers 0x1024-0x1025 | ||
226 | )))|(% style="width:44px" %)U32 | ||
227 | |(% style="width:44px" %)**0x102A-0x102B**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
228 | Current unbalance DCH errors (bitfield). | ||
229 | |||
230 | Note – Registry mapping is the same as for registers 0x1024-0x1025 | ||
231 | )))|(% style="width:44px" %)U32 | ||
232 | |(% style="width:44px" %)**0x102C-0x102D**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
233 | Charging current unbalance errors (bitfield). | ||
234 | |||
235 | Note – Registry mapping is the same as for registers 0x1024-0x1025 | ||
236 | )))|(% style="width:44px" %)U32 | ||
237 | |(% style="width:44px" %)**0x102E-0x102F**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
238 | Discharging current unbalance errors (bitfield). | ||
239 | |||
240 | Note – Registry mapping is the same as for registers 0x1024-0x1025 | ||
241 | )))|(% style="width:44px" %)U32 | ||
242 | |(% style="width:44px" %)**0x1030-0x1031**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
243 | Cumulative internal signals (logical OR of all “Internal signals” values of the battery modules; bitfield): | ||
244 | |||
245 | bit 0 — signal "Low SOC"; | ||
246 | |||
247 | bit 1 — signal "High charging current"; | ||
248 | |||
249 | bit 2 — signal “Charging” (0 – open, 1 – closed); | ||
250 | |||
251 | bit 3 — signal "Allow charging" (0 – open, 1 – closed); | ||
252 | |||
253 | bit 4 — signal "Charging current present"; | ||
254 | |||
255 | bit 5 — signal “Discharging” (0 – open, 1 – closed); | ||
256 | |||
257 | bit 6 — signal "Discharging current present"; | ||
258 | |||
259 | bit 7 — signal "Voltage too high for charging"; | ||
260 | |||
261 | bit 8 — signal "Heater" (0 – off, 1 – on); | ||
262 | |||
263 | bit 9 — signal "Cooler" (0 – off, 1 – on); | ||
264 | |||
265 | bit 10 — signal “Shutdown request (HYG/Spirit)”; | ||
266 | |||
267 | bit 11 — signal “Init” (current sensor calibration or BMS Logic scanning is performed); | ||
268 | |||
269 | bit 12 — signal “Precharging” (0 – open, 1 – closed); | ||
270 | |||
271 | bit 13 — signal “Shutdown request (Combilift)”; | ||
272 | |||
273 | bit 14 — signal "Cell analysis"; | ||
274 | |||
275 | bit 15 — signal “Balancing 1”; | ||
276 | |||
277 | bit 16 — signal “Balancing 2”; | ||
278 | |||
279 | bit 17 — signal “Discharging (AUX)” (0 – open, 1 – closed); | ||
280 | |||
281 | bit 18 — signal “Power down ACK”; | ||
282 | |||
283 | bit 19 — signal “Crown EWS”; | ||
284 | |||
285 | bit 20 — signal “Main contactor” (0 – open, 1 – closed); | ||
286 | |||
287 | bit 21 — signal “Service reset”; | ||
288 | |||
289 | bit 22 — signal “Charging/Discharging” (0 – open, 1 – closed); | ||
290 | |||
291 | bit 23 — signal “Ready to charge”; | ||
292 | |||
293 | bit 24 — signal “Ready to discharge”; | ||
294 | |||
295 | bit 25 — signal “Power up”; | ||
296 | |||
297 | bits 26-31 — not used. | ||
298 | )))|(% style="width:44px" %)U32 | ||
299 | |(% style="width:44px" %)**0x1032-0x1033**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
300 | Cumulative errors 1 (logical OR of all “Errors 1” values of the battery modules; bitfield): | ||
301 | |||
302 | bit 0 — error "Overcurrent"; | ||
303 | |||
304 | bit 1 — error "Undervoltage"; | ||
305 | |||
306 | bit 2 — error "Overvoltage"; | ||
307 | |||
308 | bit 3 — error "Low temperature (DCH)"; | ||
309 | |||
310 | bit 4 — error "High temperature (DCH)"; | ||
311 | |||
312 | bit 5 — error "Battery cover"; | ||
313 | |||
314 | bit 6 — error "High humidity"; | ||
315 | |||
316 | bit 7 — error "Water"; | ||
317 | |||
318 | bit 8 — error "Logic high temperature"; | ||
319 | |||
320 | bit 9 — error "Logic offline"; | ||
321 | |||
322 | bit 10 — "Critical error"; | ||
323 | |||
324 | bit 11 — "Crown error"; | ||
325 | |||
326 | bit 12 — "Cell count error"; | ||
327 | |||
328 | bit 13 — error "HYG offline"; | ||
329 | |||
330 | bit 14 — reserved (set to 0); | ||
331 | |||
332 | bit 15 — error "Combilift offline"; | ||
333 | |||
334 | bit 16 — error "Short circuit"; | ||
335 | |||
336 | bit 17 — error "High contactor temperature"; | ||
337 | |||
338 | bit 18 — "Logic count error"; | ||
339 | |||
340 | bit 19 — "ADC error"; | ||
341 | |||
342 | bit 20 — “Current sensor error”; | ||
343 | |||
344 | bit 21 — “CH contactor cycles error”; | ||
345 | |||
346 | bit 22 — “DCH contactor cycles error”; | ||
347 | |||
348 | bit 23 — error "Shunt offline"; | ||
349 | |||
350 | bit 24 — “Shunt error”; | ||
351 | |||
352 | bit 25 — reserved (set to 0); | ||
353 | |||
354 | bit 26 — error “WDT reset”; | ||
355 | |||
356 | bit 27 — error "No temperature sensors"; | ||
357 | |||
358 | bit 28 — error "Temperature sensor shorted"; | ||
359 | |||
360 | bit 29 — error “Spirit offline”; | ||
361 | |||
362 | bits 30-31 – not used. | ||
363 | )))|(% style="width:44px" %)U32 | ||
364 | |(% style="width:44px" %)**0x1034-0x1035**|(% style="width:55px" %) |(% style="width:482px" %)((( | ||
365 | Cumulative errors 2 (logical OR of all “Errors 2” values of the battery modules; bitfield): | ||
366 | |||
367 | bit 0 — error "Low temperature (CH)"; | ||
368 | |||
369 | bit 1 — error “High temperature (CH)”; | ||
370 | |||
371 | bit 2 — reserved (set to 0); | ||
372 | |||
373 | bit 3 — reserved (set to 0); | ||
374 | |||
375 | bit 4 — error “Unallowable charging”; | ||
376 | |||
377 | bit 5 — error “Stuck contactor”; | ||
378 | |||
379 | bit 6 — “CH contactor feedback error”; | ||
380 | |||
381 | bit 7 — “DCH contactor feedback error”; | ||
382 | |||
383 | bit 8 — “Insulation fault”; | ||
384 | |||
385 | bit 9 — “PCH contactor feedback error”; | ||
386 | |||
387 | bit 10 — “CH/DCH contactor feedback error”; | ||
388 | |||
389 | bit 11 — “Main contactor feedback error”; | ||
390 | |||
391 | bit 12 — reserved (set to 0); | ||
392 | |||
393 | bit 13 — “General error”; | ||
394 | |||
395 | bit 14 — “High voltage fault”; | ||
396 | |||
397 | bit 15 — “Power switch error”; | ||
398 | |||
399 | bit 16 — “HVIL error”; | ||
400 | |||
401 | bit 17 — “Precharge error”; | ||
402 | |||
403 | bit 18 — “Power fault”; | ||
404 | |||
405 | bits 19-31 — not used. | ||
406 | )))|(% style="width:44px" %)U32 | ||
407 | |(% style="width:44px" %)**0x1036-0x1037**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
408 | Remaining discharge time, seconds. | ||
409 | |||
410 | Note – The value 0xFFFFFFFF corresponds to the case when the device cannot calculate the remaining time. | ||
411 | )))|(% style="width:44px" %)U32 | ||
412 | |(% style="width:44px" %)**0x1038-0x1039**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
413 | Common errors 2 (bitfield): | ||
414 | |||
415 | bit 0 – “Power fault”; | ||
416 | |||
417 | bits 1-31 – not used. | ||
418 | )))|(% style="width:44px" %)U32 | ||
419 | |(% style="width:44px" %)**0x103A-0x103B**|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
420 | Discrete input signals (bitfield): | ||
421 | |||
422 | bit 0 – signal “Battery cover”; | ||
423 | |||
424 | bit 1 – signal “Charge request”; | ||
425 | |||
426 | bit 2 – signal “Precharge request”; | ||
427 | |||
428 | bit 3 – signal “Discharge request”; | ||
429 | |||
430 | bit 4 – signal “CH contactor feedback”; | ||
431 | |||
432 | bit 5 – signal “DCH contactor feedback”; | ||
433 | |||
434 | bit 6 – signal “CH/DCH contactor feedback”; | ||
435 | |||
436 | bit 7 – signal “Insulation status”; | ||
437 | |||
438 | bit 8 – signal “Join to charge”; | ||
439 | |||
440 | bit 9 – signal “Join to discharge; | ||
441 | |||
442 | bit 10 – signal “PCH contactor feedback”; | ||
443 | |||
444 | bit 11 – signal “Main contactor feedback”; | ||
445 | |||
446 | bit 12 – signal “Interlock”; | ||
447 | |||
448 | bit 13 – signal “Power down request”; | ||
449 | |||
450 | bits 14-31 – not used. | ||
451 | )))|(% style="width:44px" %)U32 | ||
452 | |(% colspan="4" style="width:659px" %)**Module #1 state: base address 0x2000** | ||
453 | |(% style="width:44px" %)((( | ||
454 | **0x2000** | ||
455 | |||
456 | **(offset 0x0000)** | ||
457 | )))|(% style="width:55px" %)1|(% style="width:482px" %)((( | ||
458 | Module state (enumeration): | ||
459 | |||
460 | 0 – Unknown; | ||
461 | |||
462 | 1 – Charging ON; | ||
463 | |||
464 | 2 - Charging OFF; | ||
465 | |||
466 | 3 – Relaxed (after charging); | ||
467 | |||
468 | 4 – Discharging ON; | ||
469 | |||
470 | 5 – Discharging OFF; | ||
471 | |||
472 | 6 – Relaxed (after discharging). | ||
473 | )))|(% style="width:44px" %)U16 | ||
474 | |(% style="width:44px" %)((( | ||
475 | **0x2001** | ||
476 | |||
477 | **(offset 0x0001)** | ||
478 | )))|(% style="width:55px" %)1|(% style="width:482px" %)Module state of charge (SOC), %|(% style="width:44px" %)U16 | ||
479 | |(% style="width:44px" %)((( | ||
480 | **0x2002** | ||
481 | |||
482 | **(offset 0x0002)** | ||
483 | )))|(% style="width:55px" %)1|(% style="width:482px" %)Module state of health (SOH), %|(% style="width:44px" %)U16 | ||
484 | |(% style="width:44px" %)((( | ||
485 | **0x2003** | ||
486 | |||
487 | **(offset 0x0003)** | ||
488 | )))|(% style="width:55px" %)1|(% style="width:482px" %)Module balancing efficiency, %|(% style="width:44px" %)U16 | ||
489 | |(% style="width:44px" %)**0x2004-0x2008 (offset 0x0004)**|(% style="width:55px" %)5|(% style="width:482px" %)((( | ||
490 | BMS firmware version. | ||
491 | |||
492 | Example: “1.59.1” | ||
493 | )))|(% style="width:44px" %)CHAR[10] | ||
494 | |(% style="width:44px" %)((( | ||
495 | **0x2009** | ||
496 | |||
497 | **(offset 0x0009)** | ||
498 | )))|(% style="width:55px" %)1|(% style="width:482px" %)Reserved|(% style="width:44px" %)U16 | ||
499 | |(% style="width:44px" %)((( | ||
500 | **0x200A-0x200B** | ||
501 | |||
502 | **(offset 0x000A)** | ||
503 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Module voltage, V|(% style="width:44px" %)REAL32 | ||
504 | |(% style="width:44px" %)((( | ||
505 | **0x200C-0x200D** | ||
506 | |||
507 | **(offset 0x000C)** | ||
508 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Module current, А|(% style="width:44px" %)REAL32 | ||
509 | |(% style="width:44px" %)((( | ||
510 | **0x200E-0x200F** | ||
511 | |||
512 | **(offset 0x000E)** | ||
513 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Module resistance, Ohm|(% style="width:44px" %)REAL32 | ||
514 | |(% style="width:44px" %)((( | ||
515 | **0x2010-0x2011** | ||
516 | |||
517 | **(offset 0x0010)** | ||
518 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Minimum cell temperature|(% style="width:44px" %)REAL32 | ||
519 | |(% style="width:44px" %)((( | ||
520 | **0x2012-0x2013** | ||
521 | |||
522 | **(offset 0x0012)** | ||
523 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Maximum cell temperature|(% style="width:44px" %)REAL32 | ||
524 | |(% style="width:44px" %)((( | ||
525 | **0x2014-0x2015** | ||
526 | |||
527 | **(offset 0x0014)** | ||
528 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Minimum cell voltage|(% style="width:44px" %)REAL32 | ||
529 | |(% style="width:44px" %)((( | ||
530 | **0x2016-0x2017** | ||
531 | |||
532 | **(offset 0x0016)** | ||
533 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Maximum cell voltage|(% style="width:44px" %)REAL32 | ||
534 | |(% style="width:44px" %)((( | ||
535 | **0x2018-0x2019** | ||
536 | |||
537 | **(offset 0x0018)** | ||
538 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Effective capacity, A×h|(% style="width:44px" %)REAL32 | ||
539 | |(% style="width:44px" %)((( | ||
540 | **0x201A-0x201B** | ||
541 | |||
542 | **(offset 0x001A)** | ||
543 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Charge current limit, A|(% style="width:44px" %)REAL32 | ||
544 | |(% style="width:44px" %)((( | ||
545 | **0x201C-0x201D** | ||
546 | |||
547 | **(offset 0x001C)** | ||
548 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Discharge current limit, A|(% style="width:44px" %)REAL32 | ||
549 | |(% style="width:44px" %)((( | ||
550 | **0x201E-0x201F** | ||
551 | |||
552 | **(offset 0x001E)** | ||
553 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Energy received from the charger, W×h|(% style="width:44px" %)REAL32 | ||
554 | |(% style="width:44px" %)((( | ||
555 | **0x2020-0x2021** | ||
556 | |||
557 | **(offset 0x0020)** | ||
558 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Energy consumed by the load, W×h|(% style="width:44px" %)REAL32 | ||
559 | |(% style="width:44px" %)((( | ||
560 | **0x2022-0x2023** | ||
561 | |||
562 | **(offset 0x0022)** | ||
563 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Energy dissipated by the balancing resistors, W×h|(% style="width:44px" %)REAL32 | ||
564 | |(% style="width:44px" %)((( | ||
565 | **0x2024-0x2025** | ||
566 | |||
567 | **(offset 0x0024)** | ||
568 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Number of 80% charge/discharge cycles|(% style="width:44px" %)REAL32 | ||
569 | |(% style="width:44px" %)((( | ||
570 | **0x2026-0x2027** | ||
571 | |||
572 | **(offset 0x0026)** | ||
573 | )))|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
574 | Internal signals (bitfield). | ||
575 | |||
576 | Note – Registry mapping is the same as for 0x1030-0x1031. | ||
577 | )))|(% style="width:44px" %)U32 | ||
578 | |(% style="width:44px" %)((( | ||
579 | **0x2028-0x2029** | ||
580 | |||
581 | **(offset 0x0028)** | ||
582 | )))|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
583 | Errors 1 (bitfield). | ||
584 | |||
585 | Note – Registry mapping is the same as for 0x1032-0x1033. | ||
586 | )))|(% style="width:44px" %)U32 | ||
587 | |(% style="width:44px" %)((( | ||
588 | **0x202A-0x202B** | ||
589 | |||
590 | **(offset 0x002A)** | ||
591 | )))|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
592 | Errors 2 (bitfield). | ||
593 | |||
594 | Note – Registry mapping is the same as for 0x1034-0x1035. | ||
595 | )))|(% style="width:44px" %)U32 | ||
596 | |(% style="width:44px" %)((( | ||
597 | **0x202C-0x202D** | ||
598 | |||
599 | **(offset 0x002C)** | ||
600 | )))|(% style="width:55px" %)2|(% style="width:482px" %)((( | ||
601 | Discrete input signals (bitfield): | ||
602 | |||
603 | bit 0 — signal "Battery cover"; | ||
604 | |||
605 | bit 1 — signal "Charger connected"; | ||
606 | |||
607 | bit 2 — signal "Power up/down request"; | ||
608 | |||
609 | bit 3 — signal "Inhibit charging"; | ||
610 | |||
611 | bit 4 — signal "Inhibit discharging"; | ||
612 | |||
613 | bit 5 — signal “CH contactor feedback”; | ||
614 | |||
615 | bit 6 — signal “DCH contactor feedback”; | ||
616 | |||
617 | bit 7 — signal “Insulation status”; | ||
618 | |||
619 | bit 8 – signal “Charge request”; | ||
620 | |||
621 | bit 9 – signal “Precharge request”; | ||
622 | |||
623 | bit 10 – signal “Discharge request”; | ||
624 | |||
625 | bit 11 – signal “PCH contactor feedback”; | ||
626 | |||
627 | bit 12 – signal “CH/DCH contactor feedback”; | ||
628 | |||
629 | bit 13 – signal “Main contactor feedback”; | ||
630 | |||
631 | bit 14 – signal “Interlock”; | ||
632 | |||
633 | bit 15 – signal “Fuse 1”; | ||
634 | |||
635 | bit 16 – signal “Fuse 2”; | ||
636 | |||
637 | bit 17 - signal “Fuse 3”; | ||
638 | |||
639 | bit 18 – signal “Circuit breaker status”; | ||
640 | |||
641 | bits 19-31 – reserved. | ||
642 | )))|(% style="width:44px" %)U32 | ||
643 | |(% style="width:44px" %)((( | ||
644 | **0x202E-0x202F** | ||
645 | |||
646 | **(offset 0x002E)** | ||
647 | )))|(% style="width:55px" %)2|(% style="width:482px" %)Module depth of discharge, A×h|(% style="width:44px" %)REAL32 | ||
648 | |(% colspan="4" style="width:659px" %)((( | ||
649 | **Module #2 state: base address 0x2200** | ||
650 | |||
651 | Registries have the same format as for Module #1 | ||
652 | ))) | ||
653 | |(% colspan="4" style="width:659px" %)((( | ||
654 | **Module #3 state: base address 0x2400** | ||
655 | |||
656 | Registries have the same format as for Module #1 | ||
657 | ))) | ||
658 | |(% colspan="4" style="width:659px" %)((( | ||
659 | **Module #4 state: base address 0x2600** | ||
660 | |||
661 | Registries have the same format as for Module #1 | ||
662 | ))) | ||
663 | |(% colspan="4" style="width:659px" %)((( | ||
664 | **Module #5 state: base address 0x2800** | ||
665 | |||
666 | Registries have the same format as for Module #1 | ||
667 | ))) | ||
668 | |(% colspan="4" style="width:659px" %)((( | ||
669 | **Module #6 state: base address 0x2A00** | ||
670 | |||
671 | Registries have the same format as for Module #1 | ||
672 | ))) | ||
673 | |(% colspan="4" style="width:659px" %)((( | ||
674 | **Module #7 state: base address 0x2C00** | ||
675 | |||
676 | Registries have the same format as for Module #1 | ||
677 | ))) | ||
678 | |(% colspan="4" style="width:659px" %)((( | ||
679 | **Module #8 state: base address 0x2E00** | ||
680 | |||
681 | Registries have the same format as for Module #1 | ||
682 | ))) | ||
683 | |(% colspan="4" style="width:659px" %)((( | ||
684 | **Module #9 state: base address 0x3000** | ||
685 | |||
686 | Registries have the same format as for Module #1 | ||
687 | ))) | ||
688 | |(% colspan="4" style="width:659px" %)((( | ||
689 | **Module #10 state: base address 0x3200** | ||
690 | |||
691 | Registries have the same format as for Module #1 | ||
692 | ))) | ||
693 | |(% colspan="4" style="width:659px" %)((( | ||
694 | **Module #11 state: base address 0x3400** | ||
695 | |||
696 | Registries have the same format as for Module #1 | ||
697 | ))) | ||
698 | |(% colspan="4" style="width:659px" %)((( | ||
699 | **Module #12 state: base address 0x3600** | ||
700 | |||
701 | Registries have the same format as for Module #1 | ||
702 | ))) | ||
703 | |(% colspan="4" style="width:659px" %)((( | ||
704 | **Module #13 state: base address 0x3800** | ||
705 | |||
706 | Registries have the same format as for Module #1 | ||
707 | ))) | ||
708 | |(% colspan="4" style="width:659px" %)((( | ||
709 | **Module #14 state: base address 0x3A00** | ||
710 | |||
711 | Registries have the same format as for Module #1 | ||
712 | ))) | ||
713 | |(% colspan="4" style="width:659px" %)((( | ||
714 | **Module #15 state: base address 0x3C00** | ||
715 | |||
716 | Registries have the same format as for Module #1 | ||
717 | ))) | ||
718 | |(% colspan="4" style="width:659px" %)((( | ||
719 | **Module #16 state: base address 0x3E00** | ||
720 | |||
721 | Registries have the same format as for Module #1 | ||
722 | ))) | ||
723 | |(% colspan="4" style="width:659px" %)((( | ||
724 | **Module #17 state: base address 0x4000** | ||
725 | |||
726 | Registries have the same format as for Module #1 | ||
727 | ))) | ||
728 | |(% colspan="4" style="width:659px" %)((( | ||
729 | **Module #18 state: base address 0x4200** | ||
730 | |||
731 | Registries have the same format as for Module #1 | ||
732 | ))) | ||
733 | |(% colspan="4" style="width:659px" %)((( | ||
734 | **Module #19 state: base address 0x4400** | ||
735 | |||
736 | Registries have the same format as for Module #1 | ||
737 | ))) | ||
738 | |(% colspan="4" style="width:659px" %)((( | ||
739 | **Module #20 state: base address 0x4600** | ||
740 | |||
741 | Registries have the same format as for Module #1 | ||
742 | ))) | ||
743 | |(% colspan="4" style="width:659px" %)((( | ||
744 | **Module #21 state: base address 0x4800** | ||
745 | |||
746 | Registries have the same format as for Module #1 | ||
747 | ))) | ||
748 | |(% colspan="4" style="width:659px" %)((( | ||
749 | **Module #22 state: base address 0x4A00** | ||
750 | |||
751 | Registries have the same format as for Module #1 | ||
752 | ))) | ||
753 | |(% colspan="4" style="width:659px" %)((( | ||
754 | **Module #23 state: base address 0x4C00** | ||
755 | |||
756 | Registries have the same format as for Module #1 | ||
757 | ))) | ||
758 | |(% colspan="4" style="width:659px" %)((( | ||
759 | **Module #24 state: base address 0x4E00** | ||
760 | |||
761 | Registries have the same format as for Module #1 | ||
762 | ))) | ||
763 | |(% colspan="4" style="width:659px" %)((( | ||
764 | **Module #25 state: base address 0x5000** | ||
765 | |||
766 | Registries have the same format as for Module #1 | ||
767 | ))) | ||
768 | |(% colspan="4" style="width:659px" %)((( | ||
769 | **Module #26 state: base address 0x5200** | ||
770 | |||
771 | Registries have the same format as for Module #1 | ||
772 | ))) | ||
773 | |(% colspan="4" style="width:659px" %)((( | ||
774 | **Module #27 state: base address 0x5400** | ||
775 | |||
776 | Registries have the same format as for Module #1 | ||
777 | ))) | ||
778 | |(% colspan="4" style="width:659px" %)((( | ||
779 | **Module #28 state: base address 0x5600** | ||
780 | |||
781 | Registries have the same format as for Module #1 | ||
782 | ))) | ||
783 | |(% colspan="4" style="width:659px" %)((( | ||
784 | **Module #29 state: base address 0x5800** | ||
785 | |||
786 | Registries have the same format as for Module #1 | ||
787 | ))) | ||
788 | |(% colspan="4" style="width:659px" %)((( | ||
789 | **Module #30 state: base address 0x5A00** | ||
790 | |||
791 | Registries have the same format as for Module #1 | ||
792 | ))) | ||
793 | |(% colspan="4" style="width:659px" %)((( | ||
794 | **Module #31 state: base address 0x5C00** | ||
795 | |||
796 | Registries have the same format as for Module #1 | ||
797 | ))) | ||
798 | |(% colspan="4" style="width:659px" %)((( | ||
799 | **Module #32 state: base address 0x5E00** | ||
800 | |||
801 | Registries have the same format as for Module #1 | ||
802 | ))) | ||
803 | |||
804 | === Holding registers === | ||
805 | |||
806 | (% style="width:662px" %) | ||
807 | |(% style="width:4px" %)**Register address**|(% style="width:47px" %)**Number of registers**|(% style="width:468px" %)**Content**|(% style="width:58px" %)**Type** | ||
808 | |**0x4000-0x4101**|2|Acknowledgment of errors. Each single bit acknowledges corresponding error (see Errors 1 bitfield at address 0x2007-0x2008)|U32 | ||
809 | |(% style="width:4px" %)**0x5000**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
810 | Software control of the "Battery cover" signal. Allowable values: | ||
811 | |||
812 | 0 – clear the signal; | ||
813 | |||
814 | 1 – set the signal; | ||
815 | |||
816 | 2-65535 – use the physical input "Battery cover". | ||
817 | )))|(% style="width:58px" %)U16 | ||
818 | |(% style="width:4px" %)**0x5001**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
819 | Software control of the "Charge request" signal. Allowable values: | ||
820 | |||
821 | 0 – clear the signal; | ||
822 | |||
823 | 1 – set the signal; | ||
824 | |||
825 | 2-65535 – use the physical input "Charge request". | ||
826 | )))|(% style="width:58px" %)U16 | ||
827 | |(% style="width:4px" %)**0x5002**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
828 | Software control of the "Precharge request" signal. Allowable values: | ||
829 | |||
830 | 0 – clear the signal; | ||
831 | |||
832 | 1 – set the signal; | ||
833 | |||
834 | 2-65535 – use the physical input "Precharge request". | ||
835 | )))|(% style="width:58px" %)U16 | ||
836 | |(% style="width:4px" %)**0x5003**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
837 | Software control of the "Discharge request" signal. Allowable values: | ||
838 | |||
839 | 0 – clear the signal; | ||
840 | |||
841 | 1 – set the signal; | ||
842 | |||
843 | 2-65535 – use the physical input "Discharge request". | ||
844 | )))|(% style="width:58px" %)U16 | ||
845 | |(% style="width:4px" %)**0x5004**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
846 | Software control of the "CH contactor feedback" signal. Allowable values: | ||
847 | |||
848 | 0 – clear the signal; | ||
849 | |||
850 | 1 – set the signal; | ||
851 | |||
852 | 2-65535 – use the physical input "CH contactor feedback". | ||
853 | )))|(% style="width:58px" %)U16 | ||
854 | |(% style="width:4px" %)**0x5005**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
855 | Software control of the "DCH contactor feedback" signal. Allowable values: | ||
856 | |||
857 | 0 – clear the signal; | ||
858 | |||
859 | 1 – set the signal; | ||
860 | |||
861 | 2-65535 – use the physical input “DCH contactor feedback". | ||
862 | )))|(% style="width:58px" %)U16 | ||
863 | |(% style="width:4px" %)**0x5006**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
864 | Software control of the "CH/DCH contactor feedback" signal. Allowable values: | ||
865 | |||
866 | 0 – clear the signal; | ||
867 | |||
868 | 1 – set the signal; | ||
869 | |||
870 | 2-65535 – use the physical input "CH/DCH contactor feedback". | ||
871 | )))|(% style="width:58px" %)U16 | ||
872 | |(% style="width:4px" %)**0x5007**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
873 | Software control of the "Insulation status" signal. Allowable values: | ||
874 | |||
875 | 0 – clear the signal; | ||
876 | |||
877 | 1 – set the signal; | ||
878 | |||
879 | 2-65535 – use the physical input "Insulation status". | ||
880 | )))|(% style="width:58px" %)U16 | ||
881 | |(% style="width:4px" %)**0x5008**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
882 | Software control of the "Join to charge" signal. Allowable values: | ||
883 | |||
884 | 0 – clear the signal; | ||
885 | |||
886 | 1 – set the signal; | ||
887 | |||
888 | 2-65535 – use the physical input "Join to charge". | ||
889 | )))|(% style="width:58px" %)U16 | ||
890 | |(% style="width:4px" %)**0x5009**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
891 | Software control of the "Join to discharge" signal. Allowable values: | ||
892 | |||
893 | 0 – clear the signal; | ||
894 | |||
895 | 1 – set the signal; | ||
896 | |||
897 | 2-65535 – use the physical input "Join to discharge". | ||
898 | )))|(% style="width:58px" %)U16 | ||
899 | |(% style="width:4px" %)**0x500A**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
900 | Software control of the "PCH contactor feedback" signal. Allowable values: | ||
901 | |||
902 | 0 – clear the signal; | ||
903 | |||
904 | 1 – set the signal; | ||
905 | |||
906 | 2-65535 – use the physical input "PCH contactor feedback". | ||
907 | )))|(% style="width:58px" %)U16 | ||
908 | |(% style="width:4px" %)**0x500B**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
909 | Software control of the "Main contactor feedback" signal. Allowable values: | ||
910 | |||
911 | 0 – clear the signal; | ||
912 | |||
913 | 1 – set the signal; | ||
914 | |||
915 | 2-65535 – use the physical input "Main contactor feedback". | ||
916 | )))|(% style="width:58px" %)U16 | ||
917 | |(% style="width:4px" %)**0x500C**|(% style="width:47px" %)1|(% style="width:468px" %)((( | ||
918 | Software control of the "Interlock" signal. Allowable values: | ||
919 | |||
920 | 0 – clear the signal; | ||
921 | |||
922 | 1 – set the signal; | ||
923 | |||
924 | 2-65535 – use the physical input "Interlock". | ||
925 | )))|(% style="width:58px" %)U16 | ||
926 | |||
927 |