Description of Seplos BMS v3 protocol.
Note. the info in this github is mainly extracted from the Seplos application, and from decoding the traffic from the app.
The 'formal' description is here BMS3.0 Modbus-RTU Protocol.pdf
Seplos BMS v3 uses modbus RTU protocol for reading and writing the values and settings as seen in the BMSSudio app The individual BMSses can be addressed by the modbus Client Id. (minus 1: Client 1 in software = client id 0 in modbus)
Writing to the SPA & SCA registers will change the settings of the BMS
Settings: speed: 19200 8N1
Block | Adres | Length | len(hex) | Type | Description |
---|---|---|---|---|---|
PIA | 0x1000 | 18 | 0x12 | registers | Pack Info A: Basic status info |
PIB | 0x1100 | 26 | 0x1A | registers | Pack Info B: Cell voltage and temperatures |
PIC | 0x1200 | 144 | 0x90 | bits/coils | Pack Info C: Cell & other Alarms |
SPA | 0x1300 | 106 | 0x6A | registers | System Parameters A: Settings |
SFA | 0x1400 | 80 | 0x50 | bits/coils | System Function A: Overall alarms |
SCA | 0x150D | 13 | 0x0D | registers | System Control A: FET and onther status & setting |
HIA | 0x1600 | 39 | 0x27 | registers | History Info |
VIA | 0x1700 | 51 | 0x33 | registers | Version info A: Manufacturer, product and serialnumber info |
PCA | 0x1800 | 19 | 0x23 | registers | Protocol control |
client.read_input_registers(0x1700, 0x33, slave=0):
response: [22618, 18477, 17772, 25955, 21605, 25448, 8259, 28462, 11340, 29796, 16973, 21297, 13907, 12848, 12353, 11603, 20528, 13634, 0, 0, 12595, 21328, 12341, 16946, 13105, 12594, 13872, 12342, 12546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
response (hex): 585a482d456c65635465636820436f2e2c4c7464424d53313653323030412d5350303542003133535030354232333131323630303633000000000000000000000000
string: XZH-ElecTech Co.,LtdBMS16S200A-SP05B13SP05B2311260063
client.read_input_registers(0x1301, 0x01, slave=0):
response: [16]
response (hex): 10
client.read_input_registers(0x1000, 0x12, slave=0):
response: [5236, 1301, 3800, 30400, 64, 125, 1000, 2, 3272, 2837, 3275, 3268, 2845, 2831, 0, 180, 180, 1000]
response (hex): 1474515ed876c0407d3e82cc8b15ccbcc4b1db0f0b4b43e8
client.read_input_registers(0x1100, 0x1a, slave=0):
response: [3273, 3273, 3268, 3272, 3274, 3274, 3275, 3275, 3274, 3273, 3273, 3270, 3271, 3271, 3270, 3272, 2842, 2833, 2831, 2845, 2731, 2731, 2731, 2731, 2833, 2829]
response (hex): cc9cc9cc4cc8ccaccaccbccbccacc9cc9cc6cc7cc7cc6cc8b1ab11b0fb1daabaabaabaabb11b0d
client.read_input_registers(0x1300, 0x6a, slave=0):
response: [4, 16, 5400, 5600, 5400, 5760, 4800, 4640, 4800, 4320, 3400, 3500, 3400, 3650, 3100, 2900, 3100, 2700, 2000, 1000, 500, 203, 205, 210, 100, 300, 300, 65333, 65331, 65326, 100, 65186, 300, 65236, 106, 600, 5, 3000, 205, 10, 3500, 3400, 1500, 1000, 800, 200, 30, 3201, 3231, 3231, 3281, 2781, 2751, 2731, 2631, 3231, 3281, 3281, 3331, 2761, 2631, 2731, 2581, 3201, 3231, 3281, 3331, 2761, 2731, 2731, 2631, 3581, 3681, 3581, 3831, 2831, 2731, 3231, 2731, 10, 3400, 50, 30, 960, 150, 100, 70, 50, 30400, 30400, 3800, 48, 60, 240, 10, 7, 0, 13, 0, 500, 300, 5760, 180, 65356, 5, 8]
response (hex): 410151815e01518168012c0122012c010e0d48dacd48e42c1cb54c1ca8c7d03e81f4cbcdd26412c12cff35ff33ff2e64fea212cfed46a2585bb8cdadacd485dc3e8320c81ec81c9fc9fcd1addabfaaba47c9fcd1cd1d03ac9a47aaba15c81c9fcd1d03ac9aabaaba47dfde61dfdef7b0faabc9faabad48321e3c09664463276c076c0ed8303cf0a70d01f412c1680b4ff4c58
client.read_input_registers(0x1500, 0x04, slave=0):
response: [59399, 776, 4141, 7710]
response (hex): e807308102d1e1e
client.read_coils(0x1200, 0x90, slave=0):
response: [False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
client.read_coils(0x1400, 0x50, slave=0):
response: [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, False, False, False, False, False, False, False, True, True, True, True, True, True, True, False, True, True, True, True, False, True, False, False, True, True, True, True, True, False, False, True, True, True, True, True, False, False, False, False, True, True, False, False, False, True, True, False, True, True, True, True, False, True, True, False]
Excel file with the tables available here Seplos BMS v3 modbus registers.xlsx
Note: I'm not affiliated to Seplos in any way!
This info is explicitly provided “AS IS” without express or implied warranties, guarantees, or guarantees of correctness. So USE THEM AT YOUR OWN RISK! Don't complain if you broke your BMS.
This content © 2024 is licensed under CC BY-NC 4.0]