The socoTC system use rs485, master/slave protocol to communicate each other. This is made with a 5V 328P, to response to master as a BMS the detail of finding the protocol is here: https://ldsrc.blogspot.com/2023/12/soco-tc-rs485-decode.html
here is the test result: I use a usb to 485 to send query command to arduino, and the responce is now as soco TC battery pack.
Tested result: It does tell the system what I want it to be, I use a VR to change values and see if the system figure changes.
I found this git, who has more info than I have: https://github.com/stprograms/SuperSoco485Monitor/tree/main I will do a fork from this one, to do more things I need.
The following telegrams and packages of read responses are already decoded.
Byte (len=10) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
Voltage | SoC | Temp | Charge | CycleH | CycleL | ? | ? | VBreaker | Charging |
Variable | Description | Unit | Data Type |
---|---|---|---|
Voltage | current Voltage of the Battery in V | Volts[V] | unsigned byte |
SoC | State of Charge in % | Percent [%] | unsigned byte |
Temp | current temperatur of the BMS | Degree C [°C] | signed byte |
Charge | current charging or discharging current in A | Ampere [A] | signed byte |
Cycle[H/L] | Number of loading cycles | unsigned word | |
VBreaker | 0 = OK 1 = bms stopped charge 2 = too high charge current 4 = too high discharge current |
unsigned byte | |
Charging | Battery is currently charging | 1 = charge 4 = discharge |
unsigned byte |
Byte (len=10) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
Mode | CurrentH | CurrentL | SpeedH | SpeedL | ECU Temp | ? | ? | Parking | ? |
Variable | Description | Unit | Data Type |
---|---|---|---|
Mode | Speed Mode | 1 - 3 | unsigned byte |
Current [H/L] | Current consumption | [mA] ? | unsigned word |
Speed [H/L] | Current speed | [km/h] ? | unsigned word |
ECU Temp | Temperature of ECU | Degree Celcius [°C] | signed byte |
Parking | Parking mode | 2 = on 1 = off |
unsigned byte |