Yacht Devices Новости: Подключение Orion BMS2 к NMEA 2000 через Bridge YDNB-07

18.06.2020

Рассказываем, как подключить систему контроля аккумуляторов Orion BMS2 к судовой сети NMEA 2000.

Orion BMS2

Рисунок 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.

Настройка скорости CAN в Orion BMS2

Рисунок 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.

Сообщения CAN в Orion BMS2

Рисунок 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. Он очень прост: если вы знакомы с любым языком программирования, освоите его за час.