4. Протокол CANopen

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

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)--

    1. CANID = 0x280+COBID (по умолчанию 0x296)

Длина пакета – 8 байт. Период отправки – 100 мс.

Содержимое пакета:

БайтИмя параметраТип параметраКодирование
0

RESISTANCE_CALCULATED – флаг расчёта сопротивления изоляции:

0 – значения сопротивлений изоляции не рассчитаны;

1 – значения сопротивлений изоляции рассчитаны.

U8-
1-2

RESISTANCE_PLUS – сопротивление изоляции между «плюсом» шины питания и шасси:

0 – минимальное сопротивление

10000 – максимальное сопротивление

U161кОм/бит
3-4

RESISTANCE_MINUS – сопротивление изоляции между «минусом» шины питания и шасси:

0 – минимальное сопротивление

10000 – максимальное сопротивление

U161кОм/бит
5

BUS_VOLATGE_ CALCULATED – флаг расчёта напряжения шины питания:

0 – значение напряжения не рассчитано;

1 – значение напряжения рассчитано.

U8-
6-7BUS_VOLTAGE – напряжение шины питанияU160,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 nameIndexSubindexParameter typeConverting
ALARM_RESISTANCE – ALARM signal generation level (default 50kOhm)0x40100x01U161kOhm/bit
WARNING_RESISTANCE – WARNING signal generation level (default 100kOhm)0x40100x02U161kOhm/bit

An example of setting ALARM_RESISTANCE to 50 kOhm (0x0032):

 Byte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
Command0x2B0x100x400x010x320x000x000x00
Answer0x600x100x400x010x000x000x000x00

An example of setting WARNING_RESISTANCE to 100 kOhm (0x0064):

 Byte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6Byte 7
Command0x2B0x100x400x020x640x000x000x00
Answer0x600x100x400x020x000x000x000x00