Yacht Devices Новости: Подключение Orion BMS2 к NMEA 2000 через Bridge YDNB-07
18.06.2020
Рассказываем, как подключить систему контроля аккумуляторов Orion BMS2 к судовой сети NMEA 2000.
Рисунок 1. Orion BMS2
Система Orion BMS предназначена для управления и защиты литий-ионных аккумуляторных батарей электромобилей EV, подключаемых гибридов PHEV и гибридов HEV. Она соответствует высоким требованиям автомобильной отрасли.
Новая BMS2 имеет программируемый интерфейс CAN. По просьбе клиента мы разработали программу для Bridge YDNB-07 , преобразующую напряжение, ток, температуру и оценку ёмкости от BMS2 в соответствующие PGN NMEA 2000.
Решение позволяет подключить к одной шине CAN до трёх BMS2 и передать в NMEA 2000 данные трёх аккумуляторов через один YDNB-07.
Устройство передаёт в NMEA 2000 следующие PGN:
- 127506 «DC Detailed Status»
- 127508 «Battery Status»
Доступные данные NMEA 2000:
- напряжение и ток аккумулятора;
- уровень заряда SOC и состояние SOH;
- расчётное оставшееся время работы;
- суммарно израсходованные ампер-часы с момента полного заряда;
- температура корпуса аккумулятора.
Шина CAN устройств BMS2 будет гальванически развязана от шины NMEA 2000.
Мы проверили программу и готовы поделиться ею.
1. Подключение Bridge к шинам CAN
Устройства BMS2 подключаются к интерфейсу CAN2 YDNB-07. Помимо CAN High и CAN Low, на CAN2 нужно подать питание +10..+30 В постоянного тока. Интерфейс CAN2 YDNB-07 подключается к сети NMEA 2000.
Несколько BMS2 можно объединить в общую CAN-сеть. Каждому задаётся отдельный адрес, как показано ниже. У BMS2 два интерфейса — CAN1 и CAN2; в примере используем CAN2.
2. Настройка BMS2
Для настройки нужна программа Orion BMS 2 Utility. Установите её, запустите и подключитесь к BMS. В главном окне откройте «CANBUS Settings» и установите CANBUS #2 Frquency [kbps] в 250.
Рисунок 2. Настройка скорости CAN
Нажмите «Edit CAN bus messages». В редакторе зададим 29-битные идентификаторы исходящих сообщений. Для различения BMS используем подход J1939 и NMEA 2000: младший байт 29-битного идентификатора кадра обозначает адрес устройства BMS2.
Создадим два PGN с восемью байтами данных для передачи BMS2 через CAN2.
2.1 «BMS 2 SOC/SOH»
CAN message ID: 0xFF00xx, где xx — адрес BMS2. Интервал: 1496 мс. Длина: 8 байтов.
- [0] Pack State of Charge (1 byte, units in %, resolution 0.5 %) UNSIGNED
- [1] Pack State of Health (1 byte, units in %, resolution 1 %) UNSIGNED
- [2-3] Pack Amphours (2 byte, units Ahr, resolution 0.1 Ahr) UNSIGNED
- [4-5] Pack Current (2 byte, units A, resolution 0.1 A) - SIGNED
- [6] Internal Temperature (1 byte signed, units °C, resolution 1 °C) SIGNED
- [7] Reserved
2.1 «BMS 2 Live Data»
CAN message ID: 0xFF01xx, где xx — адрес BMS2. Интервал: 1496 мс. Длина: 8 байтов.
- [0-1] Pack Voltage (2 byte, units V, resolution 0.1 V) UNSIGNED
- [2-3] Pack Current (2 byte, units A, resolution 0.1 A) SIGNED
- [4-5] Adaptive Total Capacity (2 byte, units Ahr, resolution 0.1 Ahr) UNSIGNED
- [6-7] Adaptive Amphours (2 byte, units Ahr, resolution 0.1 Ahr) UNSIGNED
Адрес BMS2 может быть 0, 1 или 2. Он совпадёт с «DC Instance»/«Battery Instance» в NMEA 2000.
Рисунок 3. Настройка сообщений CAN
В редакторе «CAN bus messages» создайте два новых сообщения PGN.
В разделе «Message settings»:
- отметьте «Extended ID» и нажмите «Apply», чтобы в столбце «ID» можно было вводить 29-битные значения;
- задайте speed (ms) = 1496;
- задайте CANBUS interface = CAN2;
- установите Receive/transmit в Transmit;
- нажмите Apply.
В основной таблице введите идентификатор в столбец «ID». Для первой BMS2 это 0xFF0000 и 0xFF0100, для второй — 0xFF0001 и 0xFF0101, для третьей — 0xFF0002 и 0xFF0102. Задайте Length равным 8.
Затем настройте байты данных. Учтите: некоторые поля занимают один байт, другие — два.
Для всех полей задайте Bit Order (First) = Most Significant Bit.
Для двухбайтовых полей задайте Byte Order = Little Endian.
Для знаковых значений отметьте «Signed», для беззнаковых снимите отметку.
Нажимайте Apply перед переходом к следующему полю.
По завершении нажмите «Send profile changes to BMS». BMS2 перезагрузится и начнёт передавать заданные PGN в CAN2.
3. Программа для NMEA 2000 Bridge YDNB-07
Полная программа доступна здесь. Переименуйте файл в YDNB.CFG и загрузите в Bridge. Если подключения и настройки BMS2 верны, данные аккумулятора появятся на совместимом картплоттере или дисплее NMEA 2000.
Замечание об использовании SLOT3 (см. строку 174 программы). Здесь показано, как использовать слот памяти устройства в качестве большого буфера. Три участка SLOT3 по 12 байтов хранят промежуточные данные до трёх BMS.
Для обновления данных загружаем слот через LOAD, меняем значения и сохраняем через SAVE. Загрузка заменяет содержимое текущего буфера, поэтому перед LOAD необходимо сохранить нужные данные из него.
# SLOT3 as working memory array
# load the slot
load(SLOT3)
# set values
# data TTL counter
set (DATA + X * 12, UINT8, 0)
# data values obtained from BMS2 are in variables B,C,F,G
set (DATA + X * 12 + 1, UINT8, B)
set (DATA + X * 12 + 2, UINT8, C)
set (DATA + X * 12 + 3, UINT16, F)
set (DATA + X * 12 + 9, INT8, G)
#save the slot
save(SLOT3)
4. В заключение
Наш NMEA 2000 Bridge YDNB-07 — мощный инструмент для собственных шлюзов. Программа Orion BMS2 занимает всего 116 строк без комментариев, поскольку язык Bridge специально создан для CAN. Он очень прост: если вы знакомы с любым языком программирования, освоите его за час.


