Исходный код вики 4. CANopen protocol

Редактировал(а) Admin 2025/01/29 10:58

Последние авторы
1 (% data-numbered-headings-start="4" style="--numbered-headings-start: 3;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %)
2 = Протокол CANopen =
3
4 == Общая информация ==
5
6 Устройство BMS IMD реализует протокол CiA 301 CANopen для управления режимом работы и мониторинга внутреннего состояния.
7
8 Основные характеристики:
9
10 * Поддерживаются стандартные 11-битные идентификаторы сообщений.
11 * Скорость обмена – 125, 250 (по умолчанию), 500 или 1000 кбит/с.
12 * Идентификатор **COBID** устройства по умолчанию – 22 (0x16).
13
14 Поддерживаемые режимы передачи данных:
15
16 * SDO (для настройки устройства).
17 * PDO (для обмена данными с другими элементами системы).
18 * Heartbeat producer (настраивается).
19
20 Ниже даётся описание параметров, передаваемых в режиме PDO и SDO. В колонке «Тип параметра»:
21
22 * U8 – беззнаковое 8-разрядное число;
23 * U16 – беззнаковое 16-разрядное число;
24 * S16 – знаковое 16-разрядное число;
25 * U32 – беззнаковое 32-разрядное число.
26
27 Порядок байт в словах – от младшего к старшему (**little endian**).
28
29 == Сообщения TPDO ==
30
31 === CANID ~= 0x180+COBID (по умолчанию 0x196) ===
32
33 Длина пакета – 8 байт. Период отправки – 100 мс.
34
35 Содержимое пакета:
36
37 (% style="width:742px" %)
38 |**Байт**|**Имя параметра**|**Тип параметра**|**Кодирование**
39 |**0**|(((
40 **INSULATION_STATUS** – статус изоляции:
41
42 0 – NO_DATA (нет данных о сопротивлении изоляции);
43
44 1 – OK (сопротивление изоляции в норме);
45
46 2 – WARNING (предупреждение о низком сопротивлении изоляции; сопротивление изоляции меньше уровня WARNING_RESISTANCE, но больше уровня ALARM_RESISTANCE);
47
48 3 – ALARM (сообщении об аварийно-низком сопротивлении изоляции; сопротивление изоляции меньше уровня ALARM_RESISTANCE).
49
50 Примечание – При сбросе ALLOW_WORK и до первого измерения устанавливается статус NO_DATA.
51 )))|U8|-
52 |**1**|(((
53 **INTERNAL_ERROR** – статус внутренней ошибки (битовое поле):
54
55 бит 0 – LOW_BUS_VOLTAGE_ERROR (низкое напряжение батареи);
56
57 бит 1 – TIMEOUT_ERROR (тайм-аут переходного процесса измерения);
58
59 бит 2 – ANOMALY_ERROR (аномальное состояние между плюсовой и минусовой шиной батареи и шасси, может указывать на периодический контакт шин батареи с шасси);
60
61 бит 3 – SELF_TEST_ERROR (ошибка самопроверки);
62
63 биты 4-7 – не используются.
64 )))|U8|-
65 |**2**|(((
66 **STATE** – состояние работы:
67
68 0 – NOT_WORKING (устройство не работает);
69
70 1 – WORKING (устройство работает);
71
72 2 – CRITICAL_FAULT (критический сбой в работе устройства).
73 )))|U8|-
74 |**3-7**|Резерв (установлены в 0)|-|-
75
76 === CANID ~= 0x280+COBID (по умолчанию 0x296) ===
77
78 Длина пакета – 8 байт. Период отправки – 100 мс.
79
80 Содержимое пакета:
81
82 (% style="width:747px" %)
83 |**Байт**|(% style="width:509px" %)**Имя параметра**|(% style="width:91px" %)**Тип параметра**|(% style="width:102px" %)**Кодирование**
84 |**0**|(% style="width:509px" %)(((
85 **RESISTANCE_CALCULATED** – флаг расчёта сопротивления изоляции:
86
87 0 – значения сопротивлений изоляции не рассчитаны;
88
89 1 – значения сопротивлений изоляции рассчитаны.
90 )))|(% style="width:91px" %)U8|(% style="width:102px" %)-
91 |**1-2**|(% style="width:509px" %)(((
92 **RESISTANCE_PLUS** – сопротивление изоляции между «плюсом» шины питания и шасси:
93
94 0 – минимальное сопротивление
95
96 10000 – максимальное сопротивление
97 )))|(% style="width:91px" %)U16|(% style="width:102px" %)1кОм/бит
98 |**3-4**|(% style="width:509px" %)(((
99 **RESISTANCE_MINUS** – сопротивление изоляции между «минусом» шины питания и шасси:
100
101 0 – минимальное сопротивление
102
103 10000 – максимальное сопротивление
104 )))|(% style="width:91px" %)U16|(% style="width:102px" %)1кОм/бит
105 |**5**|(% style="width:509px" %)(((
106 **BUS_VOLATGE_ CALCULATED** – флаг расчёта напряжения шины питания:
107
108 0 – значение напряжения не рассчитано;
109
110 1 – значение напряжения рассчитано.
111 )))|(% style="width:91px" %)U8|(% style="width:102px" %)-
112 |**6-7**|(% style="width:509px" %)**BUS_VOLTAGE** – напряжение шины питания|(% style="width:91px" %)U16|(% style="width:102px" %)0,1В/бит
113
114 == Сообщения RPDO ==
115
116 === CANID ~= 0x200+COBID (по умолчанию 0x216) ===
117
118 Длина пакета – 8 байт. Период отправки – 100 мс.
119
120 Содержимое пакета:
121
122 (% style="width:748px" %)
123 |**Байт**|(% style="width:515px" %)**Имя параметра**|(% style="width:89px" %)**Тип параметра**|(% style="width:99px" %)**Кодирование**
124 |**0**|(% style="width:515px" %)(((
125 **ALLOW_WORK** – команда разрешения работы устройства:
126
127 0 – запрет работы;
128
129 1 – разрешение работы.
130 )))|(% style="width:89px" %)U8|(% style="width:99px" %)-
131 |**1**|(% style="width:515px" %)(((
132 **FORCE_SELFTEST** – команда принудительного запуска самодиагностики устройства:
133
134 0 – запуск самодиагностики по внутреннему алгоритму;
135
136 1 – принудительный запуск самодиагностики (если активно, то выполняется только самодиагностика).
137 )))|(% style="width:89px" %)U8|(% style="width:99px" %)-
138 |**2-7**|(% style="width:515px" %)Резерв (установлены в 0)|(% style="width:89px" %)-|(% style="width:99px" %)-
139
140 == Словарь SDO ==
141
142 Для установки уровней формирования сигналов WARNING и ALARM предназначены следующие настройки, доступные для изменения по протоколу CANopen SDO:
143
144 (% style="width:744px" %)
145 |(% style="width:360px" %)**Имя параметра**|(% style="width:67px" %)**Индекс**|(% style="width:93px" %)**Подиндекс**|(% style="width:120px" %)**Тип параметра**|(% style="width:100px" %)**Кодирование**
146 |(% style="width:360px" %)**ALARM_RESISTANCE** – уровень формирования сигнала ALARM (по умолчанию 50кОм)|(% style="width:67px" %)0x4010|(% style="width:93px" %)0x01|(% style="width:120px" %)U16|(% style="width:100px" %)1кОм/бит
147 |(% style="width:360px" %)**WARNING_RESISTANCE** – уровень формирования сигнала WARNING (по умолчанию 100кОм)|(% style="width:67px" %)0x4010|(% style="width:93px" %)0x02|(% style="width:120px" %)U16|(% style="width:100px" %)1кОм/бит
148
149 Пример установки ALARM_RESISTANCE значения 50кОм (0x0032):
150
151 | |**Байт 0**|**Байт 1**|**Байт 2**|**Байт 3**|**Байт 4**|**Байт 5**|**Байт 6**|**Байт 7**
152 |**Команда**|0x2B|0x10|0x40|0x01|**0x32**|**0x00**|0x00|0x00
153 |**Ответ**|0x60|0x10|0x40|0x01|0x00|0x00|0x00|0x00
154
155 Пример установки WARNING_RESISTANCE значения 100кОм (0x0064):
156
157 | |**Байт 0**|**Байт 1**|**Байт 2**|**Байт 3**|**Байт 4**|**Байт 5**|**Байт 6**|**Байт 7**
158 |**Команда**|0x2B|0x10|0x40|0x02|**0x64**|**0x00**|0x00|0x00
159 |**Ответ**|0x60|0x10|0x40|0x02|0x00|0x00|0x00|0x00
160
161