DALY CAN Communications Protocol
Version: 1.0
Date: 2019-06-11
Author: Dongguan Daly Electronics Co., Ltd
Version History
| Serial Num |
Description |
Date |
Version |
| 1 |
Initial version |
2019.06.11 |
V1.0 |
1. Physical Layer
- Interface: CAN
- Baud Rate: 250K
2.1 Basic Timing
- All messages are initiated by the host.
- All slaves receive messages and respond only if the slave address matches.
- Only matched slaves are allowed to return data to the host.
2.2 Address Assignment
| Module |
Address |
| BMS Master |
0x01 |
| Bluetooth App |
0x80 |
| GPRS |
0x20 |
| Upper Computer |
0x40 |
2.3.1 Host → Slave
| CAN ID |
Data |
Priority + Data ID + BMS Address + PC Address 0x18 10 01 40 |
8 bytes |
2.3.2 Slave → Host
| CAN ID |
Data |
Priority + Data ID + PC Address + BMS Address 0x18 10 40 01 |
8 bytes |
3. Communication Content Information
Each message uses a unique Data ID.
0x90 - Total Voltage, Current, SOC
- Send:
Byte0~7: Reserved
- Receive:
Byte0~1: Cumulative total voltage (0.1 V)
Byte2~3: Gather total voltage (0.1 V)
Byte4~5: Current (offset 30000, 0.1 A)
Byte6~7: State of Charge (SOC, 0.1%)
0x91 - Maximum and Minimum Voltage
- Send:
Byte0~7: Reserved
- Receive:
Byte0~1: Max cell voltage (mV)
Byte2: Cell number with max voltage
Byte3~4: Min cell voltage (mV)
Byte5: Cell number with min voltage
0x92 - Maximum and Minimum Temperature
- Send:
Byte0~7: Reserved
- Receive:
Byte0: Max temperature (offset 40, °C)
Byte1: Cell number with max temperature
Byte2: Min temperature (offset 40, °C)
Byte3: Cell number with min temperature
0x93 - MOSFET Charge/Discharge Status
- Send:
Byte0~7: Reserved
- Receive:
Byte0: State (0 = stationary, 1 = charge, 2 = discharge)
Byte1: Charge MOS status
Byte2: Discharge MOS status
Byte3: BMS life (0–255 cycles)
Byte4~7: Remaining capacity (mAh)
- Send:
Byte0~7: Reserved
- Receive:
Byte0: Number of battery strings
Byte1: Number of temperature sensors
Byte2: Charger status (0 = disconnected, 1 = connected)
Byte3: Load status (0 = disconnected, 1 = connected)
Byte4: Bitmask of DI/DO states:
- Bit 0–3: DI1–DI4
- Bit 4–7: DO1–DO4
Byte5~7: Reserved
0x95 - Cell Voltage (1~48)
- Send:
Byte0~7: Reserved
- Receive:
- Voltage for each cell is 2 bytes (1 mV)
- Max 96 bytes sent in 16 frames
Byte0: Frame number (0–15, 0xFF = invalid)
Byte1~6: Cell voltages
Byte7: Reserved
0x96 - Cell Temperature (1~16)
- Send:
Byte0~7: Reserved
- Receive:
- Each temperature is 1 byte (offset 40, °C)
- Max 21 bytes in 3 frames
Byte0: Frame number (starts at 0)
Byte1~7: Temperatures
0x97 - Cell Balance State (1~48)
- Send:
Byte0~7: Reserved
- Receive:
- Bit0–47: 0 = Closed, 1 = Open (balance state for cells 1–48)
- Bit48–63: Reserved
0x98 - Battery Failure Status
- Send:
Byte0~7: Reserved
- Receive:
| Byte |
Bits |
Description |
| 0 |
0–7 |
Cell/Sum voltage high/low levels |
| 1 |
0–7 |
Charge/Discharge temperature alarms |
| 2 |
0–7 |
Overcurrent, SOC level alarms |
| 3 |
0–7 |
Voltage/temperature difference alarms |
| 4 |
0–7 |
MOS temp & circuit errors |
| 5 |
0–7 |
Hardware errors (AFE, EEPROM, RTC, etc.) |
| 6 |
0–7 |
Module/circuit protection faults |
| 7 |
0–7 |
Fault code |
See detailed bit mapping for each fault category.
Notes
- All values using offsets (