Wiki source code of 6.1 CANopen PDO protocol

Version 1.1 by Admin on 2024/12/05 14:09

Show last authors
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 3.x 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 – 32 (0x20).
15
16 The BMS Main 3.x 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 3.x 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 (0x1A0 by default) ====
38
39 Packet length – 8 bytes.
40
41 Packet content:
42
43 (% style="width:574px" %)
44 |(% style="width:64px" %)**Byte number**|(% style="width:333px" %)**Parameter name**|(% style="width:89px" %)**Parameter type**|(% style="width:87px" %)**Converting**
45 |(% style="width:64px" %)**0**|(% style="width:333px" %)(((
46 Discrete input signals 1 (bitfield):
47
48 bit 0 – signal “Battery cover”;
49
50 bit 1 – signal “Charger connected”;
51
52 bit 2 – signal “Power down request”;
53
54 bit 3 – signal “Inhibit charging”;
55
56 bit 4 – signal “Inhibit discharging”;
57
58 bit 5 – signal “CH contactor feedback”;
59
60 bit 6 – signal “DCH contactor feedback”;
61
62 bit 7 – signal “Insulation status”.
63 )))|(% style="width:89px" %)U8|(% style="width:87px" %)
64 |(% style="width:64px" %)**1–2**|(% style="width:333px" %)Battery current|(% style="width:89px" %)S16|(% style="width:87px" %)0.1A/bit
65 |(% style="width:64px" %)**3**|(% style="width:333px" %)Minimum cell temperature|(% style="width:89px" %)S8|(% style="width:87px" %)1ºC/bit
66 |(% style="width:64px" %)**4**|(% style="width:333px" %)Maximum cell temperature|(% style="width:89px" %)S8|(% style="width:87px" %)1ºC/bit
67 |(% style="width:64px" %)**5**|(% style="width:333px" %)State of charge (SOC)|(% style="width:89px" %)U8|(% style="width:87px" %)1%/bit
68 |(% style="width:64px" %)**6–7**|(% style="width:333px" %)Battery voltage|(% style="width:89px" %)U16|(% style="width:87px" %)0.1V/bit
69
70 ==== CANID ~= 0x280+COBID (0x2A0 by default) ====
71
72 Packet length – 8 bytes.
73
74 Packet content:
75
76 (% style="width:575px" %)
77 |(% style="width:57px" %)**Byte number**|(% style="width:334px" %)**Parameter name**|(% style="width:92px" %)**Parameter type**|(% style="width:86px" %)**Converting**
78 |(% style="width:57px" %)**0–3**|(% style="width:334px" %)(((
79 Internal signals (bitfield):
80
81 bit 0 — signal "Low SOC";
82
83 bit 1 — signal "High charging current";
84
85 bit 2 — signal “Charging” (0 – open, 1 – closed);
86
87 bit 3 — signal "Allow charging" (0 – open, 1 – closed);
88
89 bit 4 — signal "Charging current present";
90
91 bit 5 — signal “Discharging” (0 – open, 1 – closed);
92
93 bit 6 — signal "Discharging current present";
94
95 bit 7 — signal "Voltage too high for charging";
96
97 bit 8 — signal "Heater" (0 – off, 1 – on);
98
99 bit 9 — signal "Cooler" (0 – off, 1 – on);
100
101 bit 10 — signal “Shutdown request (HYG/Spirit)”;
102
103 bit 11 — signal “Init” (current sensor calibration or BMS Logic scanning is performed);
104
105 bit 12 — signal “Precharging” (0 – open, 1 – closed);
106
107 bit 13 — signal “Shutdown request (Combilift)”;
108
109 bit 14 — signal "Cell analysis";
110
111 bit 15 — signal “Balancing 1”;
112
113 bit 16 — signal “Balancing 2”;
114
115 bit 17 — signal “Discharging (AUX)” (0 – open, 1 – closed);
116
117 bit 18 — signal “Power down ACK”;
118
119 bit 19 — signal “Crown EWS”;
120
121 bit 20 — signal “Main contactor” (0 – open, 1 – closed);
122
123 bit 21 — signal “Service reset”;
124
125 bit 22 — signal “Charging/Discharging” (0 – open, 1 – closed);
126
127 bit 23 — signal “Ready to charge”;
128
129 bit 24 — signal “Ready to discharge”;
130
131 bit 25 — signal “Power up”;
132
133 bits 26-31 — not used.
134 )))|(% style="width:92px" %)U32|(% style="width:86px" %)
135 |(% style="width:57px" %)**4–7**|(% style="width:334px" %)(((
136 Errors 1 (bitfield):
137
138 bit 0 — error "Overcurrent";
139
140 bit 1 — error "Undervoltage";
141
142 bit 2 — error "Overvoltage";
143
144 bit 3 — error "Low temperature (DCH)";
145
146 bit 4 — error "High temperature (DCH)";
147
148 bit 5 — error "Battery cover";
149
150 bit 6 — error "High humidity";
151
152 bit 7 — error "Water";
153
154 bit 8 — error "Logic high temperature";
155
156 bit 9 — error "Logic offline";
157
158 bit 10 — "Critical error";
159
160 bit 11 — "Crown error";
161
162 bit 12 — "Cell count error";
163
164 bit 13 — error "HYG offline";
165
166 bit 14 — reserved (set to 0);
167
168 bit 15 — error "Combilift offline";
169
170 bit 16 — error "Short circuit";
171
172 bit 17 — error "High contactor temperature";
173
174 bit 18 — "Logic count error";
175
176 bit 19 — "ADC error";
177
178 bit 20 — “Current sensor error”;
179
180 bit 21 — “CH contactor cycles error”;
181
182 bit 22 — “DCH contactor cycles error”;
183
184 bit 23 — error "Shunt offline";
185
186 bit 24 — “Shunt error”;
187
188 bit 25 — reserved (set to 0);
189
190 bit 26 — error “WDT reset”;
191
192 bit 27 — error "No temperature sensors";
193
194 bit 28 — error "Temperature sensor shorted";
195
196 bit 29 — error “Spirit offline”;
197
198 bits 30-31 – not used.
199 )))|(% style="width:92px" %)U32|(% style="width:86px" %)
200
201 ==== CANID ~= 0x380+COBID (0x3A0 by default) ====
202
203 Packet length – 8 bytes.
204
205 Packet content:
206
207 (% style="width:579px" %)
208 |(% style="width:66px" %)**Byte number**|(% style="width:328px" %)**Parameter name**|(% style="width:96px" %)**Parameter type**|(% style="width:88px" %)**Converting**
209 |(% style="width:66px" %)**0–3**|(% style="width:328px" %)(((
210 Errors 2 (bitfield):
211
212 bit 0 — error "Low temperature (CH)";
213
214 bit 1 — error “High temperature (CH)”;
215
216 bit 2 — reserved (set to 0);
217
218 bit 3 — reserved (set to 0);
219
220 bit 4 — error “Unallowable charging”;
221
222 bit 5 — error “Stuck contactor”;
223
224 bit 6 — “CH contactor feedback error”;
225
226 bit 7 — “DCH contactor feedback error”;
227
228 bit 8 — “Insulation fault”;
229
230 bit 9 — “PCH contactor feedback error”;
231
232 bit 10 — “CH/DCH contactor feedback error”;
233
234 bit 11 — “Main contactor feedback error”;
235
236 bit 12 — reserved (set to 0);
237
238 bit 13 — “General error”;
239
240 bit 14 — “High voltage fault”;
241
242 bit 15 — “Power switch error”;
243
244 bit 16 — “HVIL error”;
245
246 bit 17 — “Precharge error”;
247
248 bit 18 — “Power fault”;
249
250 bits 19-31 — not used.
251 )))|(% style="width:96px" %)U32|(% style="width:88px" %)
252 |(% style="width:66px" %)**4-5**|(% style="width:328px" %)(((
253 Discrete input signals 2 (bitfield):
254
255 bit 0 – signal “Charge request”;
256
257 bit 1 – signal “Precharge request;
258
259 bit 2 – signal “Discharge request”;
260
261 bit 3 – signal “PCH contactor feedback”;
262
263 bit 4 – signal “CH/DCH contactor feedback”;
264
265 bit 5 – signal “Main contactor feedback”;
266
267 bit 6 – signal “Interlock”;
268
269 bit 7 – signal “Fuse 1”;
270
271 bit 8 – signal “Fuse 2”;
272
273 bit 9 – signal “Fuse 3”;
274
275 bit 10 – signal “Circuit breaker status”;
276
277 bit 11 – signal “Balancing request”;
278
279 bit 12 – signal “Close Main contactor”;
280
281 bits 13-15 – not used.
282 )))|(% style="width:96px" %)U16|(% style="width:88px" %)
283 |(% style="width:66px" %)**6-7**|(% style="width:328px" %)Reserved|(% style="width:96px" %)U16|(% style="width:88px" %)
284
285