Wiki source code of 6.1 CANopen PDO protocol
Last modified by Admin on 2024/12/13 12:40
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="1" style="--numbered-headings-start: 0;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %) | ||
5 | == CANopen PDO protocol == | ||
6 | |||
7 | === General information === | ||
8 | |||
9 | The BMS Main 3X device supports CiA 301 CANopen protocol for configuring and monitoring the battery system. | ||
10 | |||
11 | The communication parameters of the device are: | ||
12 | |||
13 | * CAN speed – 125, 250 (by default), 500 or 1000 kbps. | ||
14 | * COBID of the device by default – 64 (0x40). | ||
15 | |||
16 | The BMS Main 3X supports the following features: | ||
17 | |||
18 | * SDO protocol (for configuring the system). | ||
19 | * PDO protocol (for interacting with external devices). | ||
20 | * Sync. | ||
21 | * Heartbeat producer. | ||
22 | * Heartbeat consumer. | ||
23 | |||
24 | The BMS Main 3X transmits TPDO packets on every Sync message (CANID = 0x80, data length is 0). The device can send Sync messages itself. | ||
25 | |||
26 | There is the description of the parameters in the TPDO packets below. Column "Parameter type" contains an integer type of the parameter: | ||
27 | |||
28 | * U8 – unsigned 8–bit integer; | ||
29 | * U16 – unsigned 16–bit integer; | ||
30 | * S16 – signed 16–bit integer; | ||
31 | * U32 – unsigned 32–bit integer. | ||
32 | |||
33 | The bytes order of the word is **little endian**. | ||
34 | |||
35 | === TPDO packets === | ||
36 | |||
37 | ==== CANID ~= 0x180+COBID (0x1C0 by default) ==== | ||
38 | |||
39 | Packet length – 8 bytes. | ||
40 | |||
41 | Packet content: | ||
42 | |||
43 | |(% style="width:56px" %)**Byte number**|(% style="width:348px" %)**Parameter name**|(% style="width:81px" %)**Parameter type**|**Converting** | ||
44 | |(% style="width:56px" %)**0**|(% style="width:348px" %)((( | ||
45 | Discrete input signals 1 (bitfield): | ||
46 | |||
47 | bit 0 – signal “Battery cover”; | ||
48 | |||
49 | bit 1 – signal “Charge request”; | ||
50 | |||
51 | bit 2 – signal “Precharge request”; | ||
52 | |||
53 | bit 3 – signal “Discharge request”; | ||
54 | |||
55 | bit 4 – signal “CH contactor feedback”; | ||
56 | |||
57 | bit 5 – signal “DCH contactor feedback”; | ||
58 | |||
59 | bit 6 – signal “CH/DCH contactor feedback”; | ||
60 | |||
61 | bit 7 – signal “Insulation status”. | ||
62 | )))|(% style="width:81px" %)U8| | ||
63 | |(% style="width:56px" %)**1–2**|(% style="width:348px" %)Battery current|(% style="width:81px" %)S16|0.1A/bit | ||
64 | |(% style="width:56px" %)**3**|(% style="width:348px" %)Minimum cell temperature|(% style="width:81px" %)S8|1ºC/bit | ||
65 | |(% style="width:56px" %)**4**|(% style="width:348px" %)Maximum cell temperature|(% style="width:81px" %)S8|1ºC/bit | ||
66 | |(% style="width:56px" %)**5**|(% style="width:348px" %)State of charge (SOC)|(% style="width:81px" %)U8|1%/bit | ||
67 | |(% style="width:56px" %)**6–7**|(% style="width:348px" %)Battery voltage|(% style="width:81px" %)U16|0.1V/bit | ||
68 | |||
69 | ==== CANID ~= 0x280+COBID (0x2A0 by default) ==== | ||
70 | |||
71 | Packet length – 8 bytes. | ||
72 | |||
73 | Packet content: | ||
74 | |||
75 | (% style="width:572px" %) | ||
76 | |(% style="width:63px" %)**Byte number**|(% style="width:345px" %)**Parameter name**|(% style="width:79px" %)**Parameter type**|(% style="width:76px" %)**Converting** | ||
77 | |(% style="width:63px" %)**0–3**|(% style="width:345px" %)((( | ||
78 | Internal signals (bitfield): | ||
79 | |||
80 | bit 0 – signal “Init” (current sensor calibration or battery modules scanning is performed); | ||
81 | |||
82 | bit 1 – signal “Charging” (0 – open, 1 – closed); | ||
83 | |||
84 | bit 2 – signal “Discharging” (0 – open, 1 – closed); | ||
85 | |||
86 | bit 3 – signal “Charging current present”; | ||
87 | |||
88 | bit 4 – signal “Discharging current present”; | ||
89 | |||
90 | bit 5 – signal “Charging/Discharging” (0 – open, 1 – closed); | ||
91 | |||
92 | bit 6 – signal “Precharging” (0 – open, 1 – closed); | ||
93 | |||
94 | bit 7 – signal “Interlock”; | ||
95 | |||
96 | bit 8 – signal “Fuse 1”; | ||
97 | |||
98 | bit 9 – signal “Fuse 2”; | ||
99 | |||
100 | bit 10 – signal “Fuse 3”; | ||
101 | |||
102 | bit 11 – signal “Heater” (0 – off, 1 – on); | ||
103 | |||
104 | bit 12 – signal “Cooler” (0 – off, 1 – on); | ||
105 | |||
106 | bit 13 – signal “Main contactor” (0 – open, 1 – closed); | ||
107 | |||
108 | bit 14 – signal “Service reset”; | ||
109 | |||
110 | bit 15 – signal “Coolant pump”; | ||
111 | |||
112 | bits 16-31 – not used. | ||
113 | )))|(% style="width:79px" %)U32|(% style="width:76px" %) | ||
114 | |(% style="width:63px" %)**4–7**|(% style="width:345px" %)((( | ||
115 | Errors 1 (bitfield): | ||
116 | |||
117 | bit 0 – error “Battery cover”; | ||
118 | |||
119 | bit 1 – error “Modules offline”; | ||
120 | |||
121 | bit 2 – “Critical error”; | ||
122 | |||
123 | bit 3 – error “Voltage unbalance (CH)”; | ||
124 | |||
125 | bit 4 – error “Voltage unbalance (DCH)”; | ||
126 | |||
127 | bit 5 – error “Current unbalance (CH)”; | ||
128 | |||
129 | bit 6 – error “Current unbalance (DCH)”; | ||
130 | |||
131 | bit 7 – error “Charging current unbalance”; | ||
132 | |||
133 | bit 8 – error “Discharging current unbalance”; | ||
134 | |||
135 | bit 9 – reserved (set to 0); | ||
136 | |||
137 | bit 10 – “CH contactor feedback error”; | ||
138 | |||
139 | bit 11 – “DCH contactor feedback error”; | ||
140 | |||
141 | bit 12 – “CH/DCH contactor feedback error”; | ||
142 | |||
143 | bit 13 – “Insulation fault”; | ||
144 | |||
145 | bit 14 – error “WDT reset”; | ||
146 | |||
147 | bit 15 – error “Overcurrent”; | ||
148 | |||
149 | bit 16 – error “Power switch error”; | ||
150 | |||
151 | bit 17 – error “High humidity”; | ||
152 | |||
153 | bit 18 – error “Water”; | ||
154 | |||
155 | bit 19 – error “Short circuit”; | ||
156 | |||
157 | bit 20 – error “Contactor high temperature”; | ||
158 | |||
159 | bit 21 – error “Stuck contactor”; | ||
160 | |||
161 | bit 22 – “HVIL error”; | ||
162 | |||
163 | bit 23 – “ADC error”; | ||
164 | |||
165 | bit 24 – “Current sensor error”; | ||
166 | |||
167 | bit 25 – “Mount error”; | ||
168 | |||
169 | bit 26 – “FS error”; | ||
170 | |||
171 | bit 27 – “High voltage fault”; | ||
172 | |||
173 | bit 28 – “PCH contactor feedback error”; | ||
174 | |||
175 | bit 29 – “Main contactor feedback error”; | ||
176 | |||
177 | bit 30 – “Precharge error”; | ||
178 | |||
179 | bit 31 – “Current limit error”. | ||
180 | )))|(% style="width:79px" %)U32|(% style="width:76px" %) | ||
181 | |||
182 | ==== CANID ~= 0x380+COBID (0x3A0 by default) ==== | ||
183 | |||
184 | Packet length – 8 bytes. | ||
185 | |||
186 | Packet content: | ||
187 | |||
188 | |(% style="width:66px" %)**Byte number**|(% style="width:339px" %)**Parameter name**|(% style="width:81px" %)**Parameter type**|(% style="width:85px" %)**Converting** | ||
189 | |(% style="width:66px" %)**0–3**|(% style="width:339px" %)((( | ||
190 | Errors 2 (bitfield): | ||
191 | |||
192 | bit 0 – “Power fault”; | ||
193 | |||
194 | bits 1-31 – not used. | ||
195 | )))|(% style="width:81px" %)U32|(% style="width:85px" %) | ||
196 | |(% style="width:66px" %)**4-5**|(% style="width:339px" %)((( | ||
197 | Discrete input signals 2 (bitfield): | ||
198 | |||
199 | bit 0 – signal “Join to charge”; | ||
200 | |||
201 | bit 1 – signal “Join to discharge; | ||
202 | |||
203 | bit 2 – signal “PCH contactor feedback”; | ||
204 | |||
205 | bit 3 – signal “Main contactor feedback”; | ||
206 | |||
207 | bit 4 – signal “Interlock”; | ||
208 | |||
209 | bit 5 – signal “Power down request”; | ||
210 | |||
211 | bits 6-15 – not used. | ||
212 | )))|(% style="width:81px" %)U16|(% style="width:85px" %) | ||
213 | |(% style="width:66px" %)**6-7**|(% style="width:339px" %)Reserved|(% style="width:81px" %)U16|(% style="width:85px" %) |