6.1 CANopen PDO protocol
Communication protocols
CANopen PDO protocol
General information
The BMS Main 3.x device supports CiA 301 CANopen protocol for configuring and monitoring the battery system.
The communication parameters of the device are:
- CAN speed – 125, 250 (by default), 500 or 1000 kbps.
- COBID of the device by default – 32 (0x20).
The BMS Main 3.x supports the following features:
- SDO protocol (for configuring the system).
- PDO protocol (for interacting with external devices).
- Sync.
- Heartbeat producer.
- Heartbeat consumer.
The BMS Main 3.x transmits TPDO packets on every Sync message (CANID = 0x80, data length is 0). The device can send Sync messages itself.
There is the description of the parameters in the TPDO packets below. Column "Parameter type" contains an integer type of the parameter:
- U8 – unsigned 8–bit integer;
- U16 – unsigned 16–bit integer;
- S16 – signed 16–bit integer;
- U32 – unsigned 32–bit integer.
The bytes order of the word is little endian.
TPDO packets
CANID = 0x180+COBID (0x1A0 by default)
Packet length – 8 bytes.
Packet content:
Byte number | Parameter name | Parameter type | Converting |
0 | Discrete input signals 1 (bitfield): bit 0 – signal “Battery cover”; bit 1 – signal “Charger connected”; bit 2 – signal “Power down request”; bit 3 – signal “Inhibit charging”; bit 4 – signal “Inhibit discharging”; bit 5 – signal “CH contactor feedback”; bit 6 – signal “DCH contactor feedback”; bit 7 – signal “Insulation status”. | U8 | |
1–2 | Battery current | S16 | 0.1A/bit |
3 | Minimum cell temperature | S8 | 1ºC/bit |
4 | Maximum cell temperature | S8 | 1ºC/bit |
5 | State of charge (SOC) | U8 | 1%/bit |
6–7 | Battery voltage | U16 | 0.1V/bit |
CANID = 0x280+COBID (0x2A0 by default)
Packet length – 8 bytes.
Packet content:
Byte number | Parameter name | Parameter type | Converting |
0–3 | Internal signals (bitfield): bit 0 — signal "Low SOC"; bit 1 — signal "High charging current"; bit 2 — signal “Charging” (0 – open, 1 – closed); bit 3 — signal "Allow charging" (0 – open, 1 – closed); bit 4 — signal "Charging current present"; bit 5 — signal “Discharging” (0 – open, 1 – closed); bit 6 — signal "Discharging current present"; bit 7 — signal "Voltage too high for charging"; bit 8 — signal "Heater" (0 – off, 1 – on); bit 9 — signal "Cooler" (0 – off, 1 – on); bit 10 — signal “Shutdown request (HYG/Spirit)”; bit 11 — signal “Init” (current sensor calibration or BMS Logic scanning is performed); bit 12 — signal “Precharging” (0 – open, 1 – closed); bit 13 — signal “Shutdown request (Combilift)”; bit 14 — signal "Cell analysis"; bit 15 — signal “Balancing 1”; bit 16 — signal “Balancing 2”; bit 17 — signal “Discharging (AUX)” (0 – open, 1 – closed); bit 18 — signal “Power down ACK”; bit 19 — signal “Crown EWS”; bit 20 — signal “Main contactor” (0 – open, 1 – closed); bit 21 — signal “Service reset”; bit 22 — signal “Charging/Discharging” (0 – open, 1 – closed); bit 23 — signal “Ready to charge”; bit 24 — signal “Ready to discharge”; bit 25 — signal “Power up”; bits 26-31 — not used. | U32 | |
4–7 | Errors 1 (bitfield): bit 0 — error "Overcurrent"; bit 1 — error "Undervoltage"; bit 2 — error "Overvoltage"; bit 3 — error "Low temperature (DCH)"; bit 4 — error "High temperature (DCH)"; bit 5 — error "Battery cover"; bit 6 — error "High humidity"; bit 7 — error "Water"; bit 8 — error "Logic high temperature"; bit 9 — error "Logic offline"; bit 10 — "Critical error"; bit 11 — "Crown error"; bit 12 — "Cell count error"; bit 13 — error "HYG offline"; bit 14 — reserved (set to 0); bit 15 — error "Combilift offline"; bit 16 — error "Short circuit"; bit 17 — error "High contactor temperature"; bit 18 — "Logic count error"; bit 19 — "ADC error"; bit 20 — “Current sensor error”; bit 21 — “CH contactor cycles error”; bit 22 — “DCH contactor cycles error”; bit 23 — error "Shunt offline"; bit 24 — “Shunt error”; bit 25 — reserved (set to 0); bit 26 — error “WDT reset”; bit 27 — error "No temperature sensors"; bit 28 — error "Temperature sensor shorted"; bit 29 — error “Spirit offline”; bits 30-31 – not used. | U32 |
CANID = 0x380+COBID (0x3A0 by default)
Packet length – 8 bytes.
Packet content:
Byte number | Parameter name | Parameter type | Converting |
0–3 | Errors 2 (bitfield): bit 0 — error "Low temperature (CH)"; bit 1 — error “High temperature (CH)”; bit 2 — reserved (set to 0); bit 3 — reserved (set to 0); bit 4 — error “Unallowable charging”; bit 5 — error “Stuck contactor”; bit 6 — “CH contactor feedback error”; bit 7 — “DCH contactor feedback error”; bit 8 — “Insulation fault”; bit 9 — “PCH contactor feedback error”; bit 10 — “CH/DCH contactor feedback error”; bit 11 — “Main contactor feedback error”; bit 12 — reserved (set to 0); bit 13 — “General error”; bit 14 — “High voltage fault”; bit 15 — “Power switch error”; bit 16 — “HVIL error”; bit 17 — “Precharge error”; bit 18 — “Power fault”; bits 19-31 — not used. | U32 | |
4-5 | Discrete input signals 2 (bitfield): bit 0 – signal “Charge request”; bit 1 – signal “Precharge request; bit 2 – signal “Discharge request”; bit 3 – signal “PCH contactor feedback”; bit 4 – signal “CH/DCH contactor feedback”; bit 5 – signal “Main contactor feedback”; bit 6 – signal “Interlock”; bit 7 – signal “Fuse 1”; bit 8 – signal “Fuse 2”; bit 9 – signal “Fuse 3”; bit 10 – signal “Circuit breaker status”; bit 11 – signal “Balancing request”; bit 12 – signal “Close Main contactor”; bits 13-15 – not used. | U16 | |
6-7 | Reserved | U16 |