4. Протокол CANopen
CANopen protocol
Общая информация
Устройство BMS IMD реализует протокол CiA 301 CANopen для управления режимом работы и мониторинга внутреннего состояния.
Основные характеристики:
- Поддерживаются стандартные 11-битные идентификаторы сообщений.
- Скорость обмена – 125, 250 (по умолчанию), 500 или 1000 кбит/с.
- Идентификатор COBID устройства по умолчанию – 22 (0x16).
Поддерживаемые режимы передачи данных:
- SDO (для настройки устройства).
- PDO (для обмена данными с другими элементами системы).
- Heartbeat producer (настраивается).
Ниже даётся описание параметров, передаваемых в режиме PDO и SDO. В колонке «Тип параметра»:
- U8 – беззнаковое 8-разрядное число;
- U16 – беззнаковое 16-разрядное число;
- S16 – знаковое 16-разрядное число;
- U32 – беззнаковое 32-разрядное число.
Порядок байт в словах – от младшего к старшему (little endian).
Сообщения TPDO
CANID = 0x180+COBID (по умолчанию 0x196)
Длина пакета – 8 байт. Период отправки – 100 мс.
Содержимое пакета:
Байт | Имя параметра | Тип параметра | Кодирование |
0 | INSULATION_STATUS – статус изоляции: 0 – NO_DATA (нет данных о сопротивлении изоляции); 1 – OK (сопротивление изоляции в норме); 2 – WARNING (предупреждение о низком сопротивлении изоляции; сопротивление изоляции меньше уровня WARNING_RESISTANCE, но больше уровня ALARM_RESISTANCE); 3 – ALARM (сообщении об аварийно-низком сопротивлении изоляции; сопротивление изоляции меньше уровня ALARM_RESISTANCE). Примечание – При сбросе ALLOW_WORK и до первого измерения устанавливается статус NO_DATA. | U8 | - |
1 | INTERNAL_ERROR – статус внутренней ошибки (битовое поле): бит 0 – LOW_BUS_VOLTAGE_ERROR (низкое напряжение батареи); бит 1 – TIMEOUT_ERROR (тайм-аут переходного процесса измерения); бит 2 – ANOMALY_ERROR (аномальное состояние между плюсовой и минусовой шиной батареи и шасси, может указывать на периодический контакт шин батареи с шасси); бит 3 – SELF_TEST_ERROR (ошибка самопроверки); биты 4-7 – не используются. | U8 | - |
2 | STATE – состояние работы: 0 – NOT_WORKING (устройство не работает); 1 – WORKING (устройство работает); 2 – CRITICAL_FAULT (критический сбой в работе устройства). | U8 | - |
3-7 | Резерв (установлены в 0) | - | - |
- CANID = 0x280+COBID (по умолчанию 0x296)
Длина пакета – 8 байт. Период отправки – 100 мс.
Содержимое пакета:
Байт | Имя параметра | Тип параметра | Кодирование |
0 | RESISTANCE_CALCULATED – флаг расчёта сопротивления изоляции: 0 – значения сопротивлений изоляции не рассчитаны; 1 – значения сопротивлений изоляции рассчитаны. | U8 | - |
1-2 | RESISTANCE_PLUS – сопротивление изоляции между «плюсом» шины питания и шасси: 0 – минимальное сопротивление 10000 – максимальное сопротивление | U16 | 1кОм/бит |
3-4 | RESISTANCE_MINUS – сопротивление изоляции между «минусом» шины питания и шасси: 0 – минимальное сопротивление 10000 – максимальное сопротивление | U16 | 1кОм/бит |
5 | BUS_VOLATGE_ CALCULATED – флаг расчёта напряжения шины питания: 0 – значение напряжения не рассчитано; 1 – значение напряжения рассчитано. | U8 | - |
6-7 | BUS_VOLTAGE – напряжение шины питания | U16 | 0,1В/бит |
SDO dictionary
To set the WARNING and ALARM signal generation levels, the following settings are available, which can be changed via the CANopen SDO protocol:
Parameter name | Index | Subindex | Parameter type | Converting |
ALARM_RESISTANCE – ALARM signal generation level (default 50kOhm) | 0x4010 | 0x01 | U16 | 1kOhm/bit |
WARNING_RESISTANCE – WARNING signal generation level (default 100kOhm) | 0x4010 | 0x02 | U16 | 1kOhm/bit |
An example of setting ALARM_RESISTANCE to 50 kOhm (0x0032):
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | |
Command | 0x2B | 0x10 | 0x40 | 0x01 | 0x32 | 0x00 | 0x00 | 0x00 |
Answer | 0x60 | 0x10 | 0x40 | 0x01 | 0x00 | 0x00 | 0x00 | 0x00 |
An example of setting WARNING_RESISTANCE to 100 kOhm (0x0064):
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | |
Command | 0x2B | 0x10 | 0x40 | 0x02 | 0x64 | 0x00 | 0x00 | 0x00 |
Answer | 0x60 | 0x10 | 0x40 | 0x02 | 0x00 | 0x00 | 0x00 | 0x00 |