Исходный код вики 6.2 Modbus protocol
Редактировал(а) Admin 2025/03/20 12:16
Скрыть последних авторов
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | (% data-numbered-headings-start="6" style="--numbered-headings-start: 5;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %) |
2 | = Communication protocols = | ||
3 | |||
4 | (% data-numbered-headings-start="2" style="--numbered-headings-start: 1;font-size: 0px;color: rgba(0, 0, 0, 0.0);margin-bottom: 0px; margin-top: 0px;" %) | ||
5 | == Modbus protocol == | ||
6 | |||
![]() |
16.1 | 7 | === Общая информация === |
![]() |
1.1 | 8 | |
![]() |
16.1 | 9 | Плата BMS Main 3 реализует протокол Modbus для настройки и чтения состояния АКБ и BMS. BMS является Modbus-сервером и отвечает на команды Modbus-клиента. |
![]() |
1.1 | 10 | |
![]() |
16.1 | 11 | Взаимодействие с устройством осуществляется через шину RS-485 (Modbus RTU) или сеть Ethernet (Modbus TCP). |
![]() |
1.1 | 12 | |
![]() |
16.1 | 13 | Параметры шины RS-485: |
![]() |
1.1 | 14 | |
![]() |
16.1 | 15 | * частота, бит/с — 600, 1200, 2400, 4800, 9600 (по умолчанию), 19200, 38400, 57600, 115200; |
16 | * длина слова, бит — 8; | ||
17 | * четность — нет; | ||
18 | * адрес устройства (по умолчанию) — 32. | ||
![]() |
1.1 | 19 | |
![]() |
16.1 | 20 | Параметры Ethernet: |
![]() |
1.1 | 21 | |
![]() |
16.1 | 22 | * порт — 502. |
![]() |
1.1 | 23 | |
![]() |
16.1 | 24 | Ниже приводятся описание Input и Holding регситров. В колонке «Тип параметра»: |
![]() |
1.1 | 25 | |
![]() |
16.1 | 26 | * U8 – беззнаковое 8-разрядное число; |
27 | * U16 – беззнаковое 16-разрядное число; | ||
28 | * S16 – знаковое 16-разрядное число; | ||
29 | * U32 – беззнаковое 32-разрядное число. | ||
30 | * REAL32 — число с плавающей точкой одинарной точности (стандарт [[IEEE 754>>url:https://ru.wikipedia.org/wiki/IEEE_754]]); | ||
31 | * U8[x] — массив беззнаковых 8-разрядных чисел длиной x; | ||
32 | * U16[x] — массив беззнаковых 16-разрядных чисел длиной x; | ||
33 | * REAL32[x] — массив чисел с плавающей точкой одинарной точности длиной x. | ||
![]() |
1.1 | 34 | |
![]() |
16.1 | 35 | Порядок байт в словах – от младшего к старшему (**little endian**). |
![]() |
1.1 | 36 | |
![]() |
16.1 | 37 | === Регистры ввода === |
![]() |
1.1 | 38 | |
![]() |
5.3 | 39 | (% style="width:616px" %) |
![]() |
16.1 | 40 | |(% style="width:70px" %)**Регистр**|(% style="width:91px" %)**Количество регистров**|(% style="width:437px" %)**Содержимое**|(% style="width:37px" %)**Тип параметра** |
41 | |(% style="width:70px" %)**0x0000**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
42 | Аппаратная версия: | ||
![]() |
1.1 | 43 | |
![]() |
16.1 | 44 | byte 0 — минорная версия; |
![]() |
1.1 | 45 | |
![]() |
16.1 | 46 | byte 1 — мажорная версия. |
![]() |
5.3 | 47 | )))|(% style="width:37px" %)U8[2] |
![]() |
16.1 | 48 | |(% style="width:70px" %)**0x0001-0x0002**|(% style="width:91px" %)2|(% style="width:437px" %)((( |
49 | Версия ВПО: | ||
![]() |
1.1 | 50 | |
![]() |
16.1 | 51 | byte 0 — версия патча; |
![]() |
1.1 | 52 | |
![]() |
16.1 | 53 | byte 1 — минорная версия; |
![]() |
1.1 | 54 | |
![]() |
16.1 | 55 | byte 2 — мажорная версия; |
![]() |
1.1 | 56 | |
![]() |
16.1 | 57 | byte 3 — не используется (установлен в 0). |
![]() |
5.3 | 58 | )))|(% style="width:37px" %)U8[4] |
![]() |
16.1 | 59 | |(% style="width:70px" %)**0x0003-0x0004**|(% style="width:91px" %)2|(% style="width:437px" %)((( |
60 | Версия загрузчика (ubl): | ||
![]() |
1.1 | 61 | |
![]() |
16.1 | 62 | byte 0 — версия патча; |
![]() |
1.1 | 63 | |
![]() |
16.1 | 64 | byte 1 — минорная версия; |
![]() |
1.1 | 65 | |
![]() |
16.1 | 66 | byte 2 — мажорная версия; |
![]() |
1.1 | 67 | |
![]() |
16.1 | 68 | byte 3 — не используется (установлен в 0). |
![]() |
5.3 | 69 | )))|(% style="width:37px" %)U8[4] |
![]() |
16.1 | 70 | |(% colspan="4" style="width:70px" %)**Состояние батареи** |
71 | |(% style="width:70px" %)**0x2000**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
72 | Дискретные входы 1 (битовое поле): | ||
![]() |
1.1 | 73 | |
![]() |
16.1 | 74 | бит 0 – сигнал «Открыта АКБ»; |
![]() |
1.1 | 75 | |
![]() |
16.1 | 76 | бит 1 – сигнал «Подключено ЗУ»; |
![]() |
1.1 | 77 | |
![]() |
16.1 | 78 | бит 2 – сигнал «Запрос на отключение питания»; |
![]() |
1.1 | 79 | |
![]() |
16.1 | 80 | бит 3 – сигнал «Запрет заряда»; |
![]() |
1.1 | 81 | |
![]() |
16.1 | 82 | бит 4 – сигнал «Запрет разряда»; |
![]() |
1.1 | 83 | |
![]() |
16.1 | 84 | бит 5 – сигнал «Обратная связь контактора заряда»; |
![]() |
1.1 | 85 | |
![]() |
16.1 | 86 | бит 6 – сигнал «Обратная связь контактора разряда»; |
![]() |
1.1 | 87 | |
![]() |
16.1 | 88 | бит 7 – сигнал «Статус контроля изоляции». |
![]() |
1.1 | 89 | |
![]() |
16.1 | 90 | бит 8 – сигнал «Запрос на заряд»; |
![]() |
1.1 | 91 | |
![]() |
16.1 | 92 | бит 9 – сигнал «Запрос на предзаряд»; |
![]() |
1.1 | 93 | |
![]() |
16.1 | 94 | бит 10 – сигнал «Запрос на разряд»; |
![]() |
1.1 | 95 | |
![]() |
16.1 | 96 | бит 11 – сигнал «Обратная связь контактора предзаряда»; |
![]() |
1.1 | 97 | |
![]() |
16.1 | 98 | бит 12 – сигнал «Обратная связь комбинированного контактора заряда/разряда»; |
![]() |
1.1 | 99 | |
![]() |
16.1 | 100 | бит 13 – сигнал «Обратная связь главного контактора»; |
![]() |
1.1 | 101 | |
![]() |
16.1 | 102 | бит 14 – сигнал целостности высоковольной цепи; |
![]() |
1.1 | 103 | |
![]() |
16.1 | 104 | бит 15 – сигнал состояния предохранителя 1. |
![]() |
5.3 | 105 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 106 | |(% style="width:70px" %)**0x2001-0x2002**|(% style="width:91px" %)2|(% style="width:437px" %)Ток (сенсор 1, высокой диапазон), А|(% style="width:37px" %)REAL32 |
107 | |(% style="width:70px" %)**0x2003-0x2004**|(% style="width:91px" %)2|(% style="width:437px" %)Температура 1, °C|(% style="width:37px" %)REAL32 | ||
108 | |(% style="width:70px" %)**0x2005-0x2006**|(% style="width:91px" %)2|(% style="width:437px" %)Влажность, RH%|(% style="width:37px" %)REAL32 | ||
109 | |(% style="width:70px" %)**0x2007-0x2008**|(% style="width:91px" %)2|(% style="width:437px" %)((( | ||
110 | Регистр ошибок 1 (битовое поле): | ||
![]() |
1.1 | 111 | |
![]() |
16.1 | 112 | бит 0 – ошибка «Превышение тока»; |
![]() |
1.1 | 113 | |
![]() |
16.1 | 114 | бит 1 – ошибка «Низкое напряжение»; |
![]() |
1.1 | 115 | |
![]() |
16.1 | 116 | бит 2 – ошибка «Высокое напряжение»; |
![]() |
1.1 | 117 | |
![]() |
16.1 | 118 | бит 3 – ошибка «Низкая температура (разряд)»; |
![]() |
1.1 | 119 | |
![]() |
16.1 | 120 | бит 4 – ошибка «Высокая температура (разряд)»; |
![]() |
1.1 | 121 | |
![]() |
16.1 | 122 | бит 5 – ошибка «Открыта крышка АКБ»; |
![]() |
1.1 | 123 | |
![]() |
16.1 | 124 | бит 6 – ошибка «Повышенная влажность»; |
![]() |
1.1 | 125 | |
![]() |
16.1 | 126 | бит 7 – ошибка «Вода»; |
![]() |
1.1 | 127 | |
![]() |
16.1 | 128 | бит 8 – ошибка «Перегрев Logic»; |
![]() |
1.1 | 129 | |
![]() |
16.1 | 130 | бит 9 – ошибка «Потеря связи c Logic»; |
![]() |
1.1 | 131 | |
![]() |
16.1 | 132 | бит 10 – критическая ошибка; |
![]() |
1.1 | 133 | |
![]() |
16.1 | 134 | бит 11 – ошибка Crown; |
![]() |
1.1 | 135 | |
![]() |
16.1 | 136 | бит 12 – ошибка «Несоответствие кол-ва ячеек»; |
![]() |
1.1 | 137 | |
![]() |
16.1 | 138 | бит 13 – ошибка «Потеря связи с HYG»; |
![]() |
1.1 | 139 | |
![]() |
16.1 | 140 | бит 14 – флаг о необходимости квитировать записи в журнале ошибок; |
![]() |
1.1 | 141 | |
![]() |
16.1 | 142 | бит 15 – ошибка «Потеря связи с Combilift»; |
![]() |
1.1 | 143 | |
![]() |
16.1 | 144 | бит 16 – ошибка «Короткое замыкание»; |
![]() |
1.1 | 145 | |
![]() |
16.1 | 146 | бит 17 – ошибка «Перегрев контактора»; |
![]() |
1.1 | 147 | |
![]() |
16.1 | 148 | бит 18 – ошибка «Несоответствие кол-ва Logic»; |
![]() |
1.1 | 149 | |
![]() |
16.1 | 150 | бит 19 – ошибка АЦП; |
![]() |
1.1 | 151 | |
![]() |
16.1 | 152 | бит 20 – ошибка в цепи подключения датчика тока (обрыв или короткое замыкание); |
![]() |
1.1 | 153 | |
![]() |
16.1 | 154 | бит 21 – большая частота переключений контактора заряда; |
![]() |
1.1 | 155 | |
![]() |
16.1 | 156 | бит 22 – большая частота переключений контактора разряда; |
![]() |
1.1 | 157 | |
![]() |
16.1 | 158 | бит 23 – ошибка «Потеря связи с BMS Current Sensor»; |
![]() |
1.1 | 159 | |
![]() |
16.1 | 160 | бит 24 – внутренняя ошибка BMS Current Sensor; |
![]() |
1.1 | 161 | |
![]() |
16.1 | 162 | бит 25 – ошибка контрольной суммы настроек платы; |
![]() |
1.1 | 163 | |
![]() |
16.1 | 164 | бит 26 – флаг перезапуска платы по требованию WDT; |
![]() |
1.1 | 165 | |
![]() |
16.1 | 166 | бит 27 – ошибка «Нет датчиков температуры»; |
![]() |
1.1 | 167 | |
![]() |
16.1 | 168 | бит 28 – ошибка «КЗ датчика температуры»; |
![]() |
1.1 | 169 | |
![]() |
16.1 | 170 | бит 29 – ошибка «Потеря связи со Spirit»; |
![]() |
1.1 | 171 | |
![]() |
16.1 | 172 | биты 30-31 – не используются. |
![]() |
5.3 | 173 | )))|(% style="width:37px" %)U32 |
![]() |
16.1 | 174 | |(% style="width:70px" %)**0x2009-0x200A**|(% style="width:91px" %)2|(% style="width:437px" %)((( |
175 | Флаги состояния (битовое поле): | ||
![]() |
1.1 | 176 | |
![]() |
16.1 | 177 | бит 0 – сигнал «SOC ниже заданного уровня»; |
![]() |
1.1 | 178 | |
![]() |
16.1 | 179 | бит 1 – сигнал «Ток заряда выше заданного уровня»; |
![]() |
1.1 | 180 | |
![]() |
16.1 | 181 | бит 2 – состояние контактора заряда (0 – разомкнуто, 1 – замкнуто); |
![]() |
1.1 | 182 | |
![]() |
16.1 | 183 | бит 3 – сигнал «Разрешение ЗУ»; |
![]() |
1.1 | 184 | |
![]() |
16.1 | 185 | бит 4 – сигнал «Заряд АКБ» (детектируется ток заряда); |
![]() |
1.1 | 186 | |
![]() |
16.1 | 187 | бит 5 – состояние контактора разряда (0 – разомкнуто, 1 – замкнуто); |
![]() |
1.1 | 188 | |
![]() |
16.1 | 189 | бит 6 – сигнал «Разряд АКБ» (детектируется ток разряда); |
![]() |
1.1 | 190 | |
![]() |
16.1 | 191 | бит 7 – сигнал «Повышенное напряжение» (EВ); |
![]() |
1.1 | 192 | |
![]() |
16.1 | 193 | бит 8 – сигнал «Нагрев АКБ»; |
![]() |
1.1 | 194 | |
![]() |
16.1 | 195 | бит 9 – сигнал «Охлаждение АКБ»; |
![]() |
1.1 | 196 | |
![]() |
16.1 | 197 | бит 10 – сигнал на отключение контактора разряда от погрузчика HYG; |
![]() |
1.1 | 198 | |
![]() |
16.1 | 199 | бит 11 – сигнал об инициализации платы (во время инициализации калибруется датчик тока и сканируются платы BMS Logic); |
![]() |
1.1 | 200 | |
![]() |
16.1 | 201 | бит 12 – состояние контактора предзаряда; |
![]() |
1.1 | 202 | |
![]() |
16.1 | 203 | бит 13 – сигнал на отключение контактора разряда от погрузчика Combilift; |
![]() |
1.1 | 204 | |
![]() |
16.1 | 205 | бит 14 – сигнал о запущенном процессе анализа ячеек (Cell analysis); |
![]() |
1.1 | 206 | |
![]() |
16.1 | 207 | бит 15 – сигнал на балансировку серии батареи №1; |
![]() |
1.1 | 208 | |
![]() |
16.1 | 209 | бит 16 – сигнал на балансировку серии батареи №2; |
![]() |
1.1 | 210 | |
![]() |
16.1 | 211 | бит 17 – состояние дополнительного (AUX) контактора разряда (0 – разомкнуто, 1 – замкнуто); |
![]() |
1.1 | 212 | |
![]() |
16.1 | 213 | бит 18 – подтверждение отключения питания; |
![]() |
1.1 | 214 | |
![]() |
16.1 | 215 | бит 19 – сигнал EWS от погрузчика Crown; |
![]() |
1.1 | 216 | |
![]() |
16.1 | 217 | бит 20 – состояние главного контактора (0 – разомкнут, 1 - замкнут); |
![]() |
1.1 | 218 | |
![]() |
16.1 | 219 | бит 21 – сигнал служебного сброса системы; |
![]() |
1.1 | 220 | |
![]() |
16.1 | 221 | бит 22 – состояние комбинированного контактора заряда/разряда (0 – разомкнуто, 1 – замкнуто); |
![]() |
1.1 | 222 | |
![]() |
16.1 | 223 | бит 23 – сигнал «Готовность заряжаться»; |
![]() |
1.1 | 224 | |
![]() |
16.1 | 225 | бит 24 – сигнал «Готовность разряжаться»; |
![]() |
1.1 | 226 | |
![]() |
16.1 | 227 | бит 25 – сигнал включения платы "Power up"; |
![]() |
1.1 | 228 | |
![]() |
16.1 | 229 | бит 26 – сигнал “External 1”; |
![]() |
5.6 | 230 | |
![]() |
16.1 | 231 | биты 27-31 – не используются. |
![]() |
5.3 | 232 | )))|(% style="width:37px" %)U32 |
![]() |
16.1 | 233 | |(% style="width:70px" %)**0x200B**|(% style="width:91px" %)1|(% style="width:437px" %)((( |
234 | Состояние дискретных выходов (битовое поле): | ||
![]() |
1.1 | 235 | |
![]() |
16.1 | 236 | бит 0 — состояние выхода №1; |
![]() |
1.1 | 237 | |
![]() |
16.1 | 238 | бит 1 — состояние выхода №2; |
![]() |
1.1 | 239 | |
![]() |
16.1 | 240 | бит 2 — состояние выхода №3; |
![]() |
1.1 | 241 | |
![]() |
16.1 | 242 | бит 3 — состояние выхода №4; |
![]() |
1.1 | 243 | |
![]() |
16.1 | 244 | биты 4-15 — не используются. |
![]() |
5.3 | 245 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 246 | |(% style="width:70px" %)**0x200C**|(% style="width:91px" %)1|(% style="width:437px" %)((( |
247 | Состояние силовых ключей (битовое поле): | ||
![]() |
1.1 | 248 | |
![]() |
16.1 | 249 | бит 0 — состояние силового ключа 1 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 250 | |
![]() |
16.1 | 251 | бит 1 — состояние силового ключа 2 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 252 | |
![]() |
16.1 | 253 | бит 2 — состояние силового ключа 3 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 254 | |
![]() |
16.1 | 255 | бит 3 — состояние силового ключа 4 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 256 | |
![]() |
16.1 | 257 | бит 4 — состояние силового ключа 5 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 258 | |
![]() |
16.1 | 259 | бит 5 — состояние силового ключа 6 (0 – открыт, 1 – закрыт); |
![]() |
1.1 | 260 | |
![]() |
16.1 | 261 | биты 6-15 — не используются. |
![]() |
5.3 | 262 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 263 | |(% style="width:70px" %)**0x200E-0x200F**|(% style="width:91px" %)2|(% style="width:437px" %)((( |
264 | Регистр ошибок 2 (битовое поле): | ||
![]() |
1.1 | 265 | |
![]() |
16.1 | 266 | бит 0 – ошибка «Низкая температура (заряд)»; |
![]() |
1.1 | 267 | |
![]() |
16.1 | 268 | бит 1 – ошибка «Высокая температура (заряд)»; |
![]() |
1.1 | 269 | |
![]() |
16.1 | 270 | бит 2 – ошибка монтирования SD-карты; |
![]() |
1.1 | 271 | |
![]() |
16.1 | 272 | бит 3 – ошибка записи/чтения SD-карты; |
![]() |
1.1 | 273 | |
![]() |
16.1 | 274 | бит 4 – ошибка «Недопустимый заряд» (заряд батареи через контактор разряда); |
![]() |
1.1 | 275 | |
![]() |
16.1 | 276 | бит 5 – ошибка «Залипание контактора»; |
![]() |
1.1 | 277 | |
![]() |
16.1 | 278 | бит 6 – «Ошибка обр. связи контактора заряда»; |
![]() |
1.1 | 279 | |
![]() |
16.1 | 280 | бит 7 – «Ошибка обр. связи контактора разряда»; |
![]() |
1.1 | 281 | |
![]() |
16.1 | 282 | бит 8 – ошибка «Нарушение изоляции»; |
![]() |
1.1 | 283 | |
![]() |
16.1 | 284 | бит 9 – «Ошибка обр. связи контактора предзаряда»; |
![]() |
1.1 | 285 | |
![]() |
16.1 | 286 | бит 10 – «Ошибка обр. связи комбинированного контактора заряда/разряда»; |
![]() |
1.1 | 287 | |
![]() |
16.1 | 288 | бит 11 – «Ошибка обр. связи главного контактора»; |
![]() |
1.1 | 289 | |
![]() |
16.1 | 290 | бит 12 – не используются (set to 0); |
![]() |
1.1 | 291 | |
![]() |
16.1 | 292 | бит 13 – общая ошибка; |
![]() |
1.1 | 293 | |
![]() |
16.1 | 294 | бит 14 — ошибка высокого напряжения; |
![]() |
1.1 | 295 | |
![]() |
16.1 | 296 | бит 15 — ошибка силового ключа; |
![]() |
1.1 | 297 | |
![]() |
16.1 | 298 | бит 16 — ошибка проверки целостности высоковольтной цепи ; |
![]() |
1.1 | 299 | |
![]() |
16.1 | 300 | бит 17 — ошибка предзаряда; |
![]() |
1.1 | 301 | |
![]() |
16.1 | 302 | бит 18 — ошибка “Power fault”; |
![]() |
1.1 | 303 | |
![]() |
16.1 | 304 | бит 19 — ошибка ограничения тока; |
![]() |
7.1 | 305 | |
![]() |
16.1 | 306 | биты 20-31 — не используются. |
![]() |
5.3 | 307 | )))|(% style="width:37px" %)U32 |
![]() |
16.1 | 308 | |(% style="width:70px" %)**0x2010**|(% style="width:91px" %)1|(% style="width:437px" %)Адрес устройства BMS Logic, чьи параметры отображаются в регистрах 0x2011-0x20C9|(% style="width:37px" %)U16 |
309 | |(% style="width:70px" %)**0x2011**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
310 | Состояние BMS Logic (битовое поле): | ||
![]() |
1.1 | 311 | |
![]() |
16.1 | 312 | бит 0 — устройство обнаружено; |
![]() |
1.1 | 313 | |
![]() |
16.1 | 314 | бит 1 — устройство онлайн; |
![]() |
1.1 | 315 | |
![]() |
16.1 | 316 | бит 2 — устройство готово к работе; |
![]() |
1.1 | 317 | |
![]() |
16.1 | 318 | бит 3 — данные с устройства актуальны; |
![]() |
1.1 | 319 | |
![]() |
16.1 | 320 | бит 4 — датчик температуры №1 обнаружен; |
![]() |
1.1 | 321 | |
![]() |
16.1 | 322 | бит 5 — датчик температуры №2 обнаружен; |
![]() |
1.1 | 323 | |
![]() |
16.1 | 324 | бит 6 — датчик температуры №1 закорочен; |
![]() |
1.1 | 325 | |
![]() |
16.1 | 326 | бит 7 — датчик температуры №2 закорочен; |
![]() |
1.1 | 327 | |
![]() |
16.1 | 328 | биты 8-15 — не используются. |
![]() |
5.3 | 329 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 330 | |(% style="width:70px" %)**0x2012-0x2013**|(% style="width:91px" %)2|(% style="width:437px" %)Температура BMS Logic, °C|(% style="width:37px" %)REAL32 |
331 | |(% style="width:70px" %)**0x2014-0x2015**|(% style="width:91px" %)2|(% style="width:437px" %)((( | ||
332 | Флаги балансировки ячеек (битовое поле): | ||
![]() |
1.1 | 333 | |
![]() |
16.1 | 334 | бит i —балансировочный резистор подключен к i-вой ячейке. |
![]() |
5.3 | 335 | )))|(% style="width:37px" %)U32 |
![]() |
16.1 | 336 | |(% style="width:70px" %)**0x2016-0x2029**|(% style="width:91px" %)20|(% style="width:437px" %)((( |
337 | Массив состояний ячеек. Каждый элемент массива соответствует ячейке и является битовым полем: | ||
![]() |
1.1 | 338 | |
![]() |
16.1 | 339 | бит 0 — ячейка подключена; |
![]() |
1.1 | 340 | |
![]() |
16.1 | 341 | бит 1 — температурный датчик подключен; |
![]() |
1.1 | 342 | |
![]() |
16.1 | 343 | бит 2 — к ячейке следует подключить балансировочный резистор; |
![]() |
1.1 | 344 | |
![]() |
16.1 | 345 | бит 3 — балансировочный резистор подключен к ячейке; |
![]() |
1.1 | 346 | |
![]() |
16.1 | 347 | бит 4 — температурный датчик закорочен; |
![]() |
1.1 | 348 | |
![]() |
16.1 | 349 | бит 5 — провода подключены к ячейке; |
![]() |
1.1 | 350 | |
![]() |
16.1 | 351 | биты 6-15 — не используются. |
![]() |
5.3 | 352 | )))|(% style="width:37px" %)U16[20] |
![]() |
16.1 | 353 | |(% style="width:70px" %)**0x202A-0x2051**|(% style="width:91px" %)40|(% style="width:437px" %)Массив напряжений ячеек (В)|(% style="width:37px" %)REAL32[20] |
354 | |(% style="width:70px" %)**0x2052-0x2079**|(% style="width:91px" %)40|(% style="width:437px" %)Массив температур ячеек (°C)|(% style="width:37px" %)REAL32[20] | ||
355 | |(% style="width:70px" %)**0x207A-0x20A1**|(% style="width:91px" %)40|(% style="width:437px" %)Массив степеней заряда ячеек (SOC) ~(%)|(% style="width:37px" %)REAL32[20] | ||
356 | |(% style="width:70px" %)**0x20A2-0x20C9**|(% style="width:91px" %)40|(% style="width:437px" %)Массив сопротивлений ячеек (Ом)|(% style="width:37px" %)REAL32[20] | ||
357 | |(% style="width:70px" %)**0x20CA**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
358 | Версия платы BMS Logic: | ||
![]() |
1.1 | 359 | |
![]() |
16.1 | 360 | байт 0 – минорная версия; |
![]() |
1.1 | 361 | |
![]() |
16.1 | 362 | байт 1 – мажорная версия. |
![]() |
5.3 | 363 | )))|(% style="width:37px" %)U8[2] |
![]() |
16.1 | 364 | |(% style="width:70px" %)**0x20CB-0x20CC**|(% style="width:91px" %)2|(% style="width:437px" %)((( |
365 | Версия ВПО BMS Logic: | ||
![]() |
1.1 | 366 | |
![]() |
16.1 | 367 | байт 0 – версия патча; |
![]() |
1.1 | 368 | |
![]() |
16.1 | 369 | байт 1 – минорная версия; |
![]() |
1.1 | 370 | |
![]() |
16.1 | 371 | байт 2 – мажорная версия; |
![]() |
1.1 | 372 | |
![]() |
16.1 | 373 | байт 3 – не используется (установлен в 0). |
![]() |
5.3 | 374 | )))|(% style="width:37px" %)U8[4] |
![]() |
16.1 | 375 | |(% style="width:70px" %)**0x20CD**|(% style="width:91px" %)1|(% style="width:437px" %)Количество подключенных ячеек к BMS Logic|(% style="width:37px" %)U16 |
376 | |(% style="width:70px" %)**0x20CE**|(% style="width:91px" %)1|(% style="width:437px" %)Серийный номер BMS Logic|(% style="width:37px" %)U16 | ||
377 | |(% style="width:70px" %)**0x20F0-0x20F1**|(% style="width:91px" %)2|(% style="width:437px" %)Температура 2, °C|(% style="width:37px" %)REAL32 | ||
378 | |(% style="width:70px" %)**0x20F2-0x20F3**|(% style="width:91px" %)2|(% style="width:437px" %)Напряжение питания, В|(% style="width:37px" %)REAL32 | ||
379 | |(% style="width:70px" %)**0x20F4**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
380 | Дискретные входы 2 (битовое поле): | ||
![]() |
1.1 | 381 | |
![]() |
16.1 | 382 | бит 0 – состояние предохранителя 2; |
![]() |
1.1 | 383 | |
![]() |
16.1 | 384 | бит 1 – состояние предохранителя 3; |
![]() |
1.1 | 385 | |
![]() |
16.1 | 386 | бит 2 – состояние защитного прерывателя цепи; |
![]() |
1.1 | 387 | |
![]() |
16.1 | 388 | биты 3-15 – не используются. |
![]() |
5.3 | 389 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 390 | |(% style="width:70px" %)**0x2100-0x2101**|(% style="width:91px" %)2|(% style="width:437px" %)Степень заряда АКБ (SOC), %|(% style="width:37px" %)REAL32 |
391 | |(% style="width:70px" %)**0x2102**|(% style="width:91px" %)1|(% style="width:437px" %)Количество устройств BMS Logic|(% style="width:37px" %)U16 | ||
392 | |**0x2103**|1|Количество ячеек|U16 | ||
393 | |**0x2104-0x2105**|2|Напряжение АКБ, В|REAL32 | ||
394 | |**0x2106-0x2107**|2|Сопротивление АКБ, Ом|REAL32 | ||
395 | |**0x2108-0x2109**|2|Эффективная ёмкость АКБ, А×ч|REAL32 | ||
396 | |**0x210A-0x210B**|2|Эффективность балансировки ячеек, %|REAL32 | ||
397 | |**0x210C-0x210D**|2|Степень работоспособности батареи (SOH), %|REAL32 | ||
398 | |**0x210E-0x210F**|2|Глубина разряда батареи, А×ч|REAL32 | ||
399 | |**0x2110-0x2111**|2|Минимальная температура среди устройств BMS Logic|REAL32 | ||
400 | |**0x2112**|1|Адрес устройства Logic, имеющего минимальную температуру|U16 | ||
401 | |**0x2113-0x2114**|2|Максимальная температура среди устройств BMS Logic|REAL32 | ||
402 | |**0x2115**|1|Адрес устройства Logic, имеющего максимальную температуру|U16 | ||
403 | |**0x2116-0x2117**|2|Скорость обмена с устройствами BMS Logic, ком./с|REAL32 | ||
404 | |**0x2118-0x2119**|2|Минимальная температура ячейки|REAL32 | ||
405 | |**0x211A**|1|Адрес устройства Logic, к которому подключена ячейка с минимальной температурой|U16 | ||
406 | |**0x211B**|1|Номер ячейки с минимальной температурой|U16 | ||
407 | |**0x211C-0x211D**|2|Максимальная температура ячейки|REAL32 | ||
408 | |**0x211E**|1|Адрес устройства Logic, к которому подключена ячейка с максимальной температурой|U16 | ||
409 | |**0x211F**|1|Номер ячейки с максимальной температурой|U16 | ||
410 | |**0x2120-0x2121**|2|Минимальное напряжение среди ячеек|REAL32 | ||
411 | |**0x2122**|1|Адрес устройства Logic, к которому подключена ячейка с минимальным напряжением|U16 | ||
412 | |**0x2123**|1|Номер ячейки с минимальным напряжением|U16 | ||
413 | |**0x2124-0x2125**|2|Максимальное напряжение среди ячеек|REAL32 | ||
414 | |**0x2126**|1|Адрес устройства Logic, к которому подключена ячейка с максимальным напряжением|U16 | ||
415 | |**0x2127**|1|Номер ячейки с максимальным напряжением|U16 | ||
416 | |**0x2128**|1|((( | ||
417 | Флаг наличия ошибки: | ||
![]() |
1.1 | 418 | |
![]() |
16.1 | 419 | 0 — нет ошибок; |
![]() |
1.1 | 420 | |
![]() |
16.1 | 421 | 1 — имеются ошибки. |
422 | )))|U16 | ||
423 | |**0x2130-0x2131**|2|Энергия, полученная от зарядного устройства, Вт×ч|REAL32 | ||
424 | |**0x2132-0x2133**|2|Энергия, потреблённая нагрузкой, Вт×ч|REAL32 | ||
425 | |**0x2134-0x2135**|2|Энергия, рассеянная на балансировочных резисторах, Вт×ч|REAL32 | ||
426 | |**0x217B-0x217C**|2|Заряд, полученный батареей от зарядного устройства, А×ч|REAL32 | ||
427 | |**0x217D-0x217E**|2|Заряд, переданный нагрузке от батареи, А×ч|REAL32 | ||
428 | |**0x21B8**|1|Флаг индикации балансировки ячеек|U16 | ||
429 | |**0x21CA-0x21CB**|2|Среднее напряжение ячеек в батарее, В|REAL32 | ||
430 | |(% style="width:70px" %)**0x2400-0x2401**|(% style="width:91px" %)2|(% style="width:437px" %)Ток (сенсор 1, малый диапазон), A|(% style="width:37px" %)REAL32 | ||
431 | |(% style="width:70px" %)((( | ||
![]() |
5.5 | 432 | **0x2402-0x2403** |
![]() |
16.1 | 433 | )))|(% style="width:91px" %)2|(% style="width:437px" %)Итоговый ток АКБ, A|(% style="width:37px" %)REAL32 |
434 | |(% style="width:70px" %)**0x2410**|(% style="width:91px" %)1|(% style="width:437px" %)((( | ||
435 | Состояние батареи: | ||
![]() |
1.1 | 436 | |
![]() |
16.1 | 437 | 0 – Неизвестно; |
![]() |
1.1 | 438 | |
![]() |
16.1 | 439 | 1 – Charing ON – заряд; |
![]() |
1.1 | 440 | |
![]() |
16.1 | 441 | 2 – Charging OFF – нет заряда; |
![]() |
1.1 | 442 | |
![]() |
16.1 | 443 | 3 – Relaxed (after charging) – батарея в состоянии релаксации после заряда; |
![]() |
1.1 | 444 | |
![]() |
16.1 | 445 | 4 – Discharging ON – разряд; |
![]() |
1.1 | 446 | |
![]() |
16.1 | 447 | 5 – Discharging OFF – нет разряда; |
![]() |
1.1 | 448 | |
![]() |
16.1 | 449 | 6 – Relaxed (after discharging) – батарея в состоянии релаксации после разряда. |
![]() |
5.3 | 450 | )))|(% style="width:37px" %)U16 |
![]() |
16.1 | 451 | |(% style="width:70px" %)**0x2411-0x2412**|(% style="width:91px" %)2|(% style="width:437px" %)Время нахождения в текущем состоянии (см. 0x2410), сек|(% style="width:37px" %)U32 |
![]() |
1.1 | 452 | |
![]() |
16.1 | 453 | === Регистры хранения === |
![]() |
1.1 | 454 | |
![]() |
5.3 | 455 | (% style="width:617px" %) |
![]() |
16.1 | 456 | |(% style="width:71px" %)**Register address**|(% style="width:75px" %)**Количество регистров**|(% style="width:375px" %)**Содержимое**|(% style="width:82px" %)**Тип параметра** |
457 | |(% style="width:71px" %)**0x4000**|(% style="width:75px" %)1|(% style="width:375px" %)Адрес устройства BMS Logic, чьи параметры должны отображаться в регистрах 0x2011-0x20C9|(% style="width:82px" %)U16 | ||
458 | |(% style="width:71px" %)**0x5100**|(% style="width:75px" %)1|(% style="width:375px" %)((( | ||
459 | Программное управление сигналом "Battery cover". Возможные значения: | ||
![]() |
1.1 | 460 | |
![]() |
16.1 | 461 | 0 – сбросить сигнал; |
![]() |
1.1 | 462 | |
![]() |
16.1 | 463 | 1 – установить сигнал; |
![]() |
1.1 | 464 | |
![]() |
16.1 | 465 | 2-65535 – использовать физическое состояние сигнала "Battery cover". |
466 | )))|(% style="width:82px" %)U16 | ||
467 | |**0x5100**|1|((( | ||
468 | Программное управление сигналом "Battery cover". Возможные значения: | ||
![]() |
1.1 | 469 | |
![]() |
16.1 | 470 | 0 – сбросить сигнал; |
![]() |
1.1 | 471 | |
![]() |
16.1 | 472 | 1 – установить сигнал; |
![]() |
1.1 | 473 | |
![]() |
16.1 | 474 | 2-65535 – использовать физическое состояние сигнала "Battery coВer". |
475 | )))|U16 | ||
476 | |**0x5101**|1|((( | ||
477 | Программное управление сигналом "Charger connected". Возможные значения: | ||
![]() |
1.1 | 478 | |
![]() |
16.1 | 479 | 0 – сбросить сигнал; |
![]() |
1.1 | 480 | |
![]() |
16.1 | 481 | 1 – установить сигнал; |
![]() |
1.1 | 482 | |
![]() |
16.1 | 483 | 2-65535 – использовать физическое состояние сигнала "Charger connected". |
484 | )))|U16 | ||
485 | |**0x5102**|1|((( | ||
486 | Программное управление сигналом "Power down request". Возможные значения: | ||
![]() |
1.1 | 487 | |
![]() |
16.1 | 488 | 0 – сбросить сигнал; |
![]() |
1.1 | 489 | |
![]() |
16.1 | 490 | 1 – установить сигнал; |
![]() |
1.1 | 491 | |
![]() |
16.1 | 492 | 2-65535 – использовать физическое состояние сигнала "Power down request". |
493 | )))|U16 | ||
494 | |**0x5103**|1|((( | ||
495 | Программное управление сигналом "Inhibit charging". Возможные значения: | ||
![]() |
1.1 | 496 | |
![]() |
16.1 | 497 | 0 – сбросить сигнал; |
![]() |
1.1 | 498 | |
![]() |
16.1 | 499 | 1 – установить сигнал; |
![]() |
1.1 | 500 | |
![]() |
16.1 | 501 | 2-65535 – использовать физическое состояние сигнала "Inhibit charging". |
502 | )))|U16 | ||
503 | |**0x5104**|1|((( | ||
504 | Программное управление сигналом "Inhibit discharging". Возможные значения: | ||
![]() |
1.1 | 505 | |
![]() |
16.1 | 506 | 0 – сбросить сигнал; |
![]() |
1.1 | 507 | |
![]() |
16.1 | 508 | 1 – установить сигнал; |
![]() |
1.1 | 509 | |
![]() |
16.1 | 510 | 2-65535 – использовать физическое состояние сигнала "Inhibit discharging". |
511 | )))|U16 | ||
512 | |**0x5105**|1|((( | ||
513 | Программное управление сигналом "Charging contactor feedback". Возможные значения: | ||
![]() |
1.1 | 514 | |
![]() |
16.1 | 515 | 0 – сбросить сигнал; |
![]() |
1.1 | 516 | |
![]() |
16.1 | 517 | 1 – установить сигнал; |
![]() |
1.1 | 518 | |
![]() |
16.1 | 519 | 2-65535 – использовать физическое состояние сигнала "Charging contactor feedback". |
520 | )))|U16 | ||
521 | |**0x5106**|1|((( | ||
522 | Программное управление сигналом "Discharging contactor feedback". Возможные значения: | ||
![]() |
1.1 | 523 | |
![]() |
16.1 | 524 | 0 – сбросить сигнал; |
![]() |
1.1 | 525 | |
![]() |
16.1 | 526 | 1 – установить сигнал; |
![]() |
1.1 | 527 | |
![]() |
16.1 | 528 | 2-65535 – использовать физическое состояние сигнала "Discharging contactor feedback". |
529 | )))|U16 | ||
530 | |**0x5107**|1|((( | ||
531 | Программное управление сигналом "Insulation status". Возможные значения: | ||
![]() |
1.1 | 532 | |
![]() |
16.1 | 533 | 0 – сбросить сигнал; |
![]() |
1.1 | 534 | |
![]() |
16.1 | 535 | 1 – установить сигнал; |
![]() |
1.1 | 536 | |
![]() |
16.1 | 537 | 2-65535 – использовать физическое состояние сигнала "Insulation status". |
538 | )))|U16 | ||
539 | |**0x5108**|1|((( | ||
540 | Программное управление сигналом "Charge request". Возможные значения: | ||
![]() |
1.1 | 541 | |
![]() |
16.1 | 542 | 0 – сбросить сигнал; |
![]() |
1.1 | 543 | |
![]() |
16.1 | 544 | 1 – установить сигнал; |
![]() |
1.1 | 545 | |
![]() |
16.1 | 546 | 2-65535 – использовать физическое состояние сигнала "Charge request". |
547 | )))|U16 | ||
548 | |**0x5109**|1|((( | ||
549 | Программное управление сигналом "Precharge request". Возможные значения: | ||
![]() |
1.1 | 550 | |
![]() |
16.1 | 551 | 0 – сбросить сигнал; |
![]() |
1.1 | 552 | |
![]() |
16.1 | 553 | 1 – установить сигнал; |
![]() |
1.1 | 554 | |
![]() |
16.1 | 555 | 2-65535 – использовать физическое состояние сигнала "Precharge request". |
556 | )))|U16 | ||
557 | |**0x510A**|1|((( | ||
558 | Программное управление сигналом "Discharge request". Возможные значения: | ||
![]() |
1.1 | 559 | |
![]() |
16.1 | 560 | 0 – сбросить сигнал; |
![]() |
1.1 | 561 | |
![]() |
16.1 | 562 | 1 – установить сигнал; |
![]() |
1.1 | 563 | |
![]() |
16.1 | 564 | 2-65535 – использовать физическое состояние сигнала "Discharge request". |
565 | )))|U16 | ||
566 | |**0x510B**|1|((( | ||
567 | Программное управление сигналом "PCH contactor feedback". Возможные значения: | ||
![]() |
1.1 | 568 | |
![]() |
16.1 | 569 | 0 – сбросить сигнал; |
![]() |
1.1 | 570 | |
![]() |
16.1 | 571 | 1 – установить сигнал; |
![]() |
1.1 | 572 | |
![]() |
16.1 | 573 | 2-65535 – использовать физическое состояние сигнала "PCH contactor feedback". |
574 | )))|U16 | ||
575 | |**0x510C**|1|((( | ||
576 | Программное управление сигналом "CH/DCH contactor feedback". Возможные значения: | ||
![]() |
1.1 | 577 | |
![]() |
16.1 | 578 | 0 – сбросить сигнал; |
![]() |
1.1 | 579 | |
![]() |
16.1 | 580 | 1 – установить сигнал; |
![]() |
1.1 | 581 | |
![]() |
16.1 | 582 | 2-65535 – использовать физическое состояние сигнала "CH/DCH contactor feedback". |
583 | )))|U16 | ||
584 | |**0x510D**|1|((( | ||
585 | Программное управление сигналом "Main contactor feedback". Возможные значения: | ||
![]() |
1.1 | 586 | |
![]() |
16.1 | 587 | 0 – сбросить сигнал; |
![]() |
1.1 | 588 | |
![]() |
16.1 | 589 | 1 – установить сигнал; |
![]() |
1.1 | 590 | |
![]() |
16.1 | 591 | 2-65535 – использовать физическое состояние сигнала "Main contactor feedback". |
592 | )))|U16 | ||
593 | |**0x510E**|1|((( | ||
594 | Программное управление сигналом "Interlock". Возможные значения: | ||
![]() |
1.1 | 595 | |
![]() |
16.1 | 596 | 0 – сбросить сигнал; |
![]() |
1.1 | 597 | |
![]() |
16.1 | 598 | 1 – установить сигнал; |
![]() |
1.1 | 599 | |
![]() |
16.1 | 600 | 2-65535 – использовать физическое состояние сигнала "Interlock". |
601 | )))|U16 | ||
602 | |**0x510F**|1|((( | ||
603 | Программное управление сигналом "Fuse 1". Возможные значения: | ||
![]() |
1.1 | 604 | |
![]() |
16.1 | 605 | 0 – сбросить сигнал; |
![]() |
1.1 | 606 | |
![]() |
16.1 | 607 | 1 – установить сигнал; |
![]() |
1.1 | 608 | |
![]() |
16.1 | 609 | 2-65535 – использовать физическое состояние сигнала "Fuse 1". |
610 | )))|U16 | ||
611 | |**0x5110**|1|((( | ||
612 | Программное управление сигналом "Fuse 2". Возможные значения: | ||
![]() |
1.1 | 613 | |
![]() |
16.1 | 614 | 0 – сбросить сигнал; |
![]() |
1.1 | 615 | |
![]() |
16.1 | 616 | 1 – установить сигнал; |
![]() |
1.1 | 617 | |
![]() |
16.1 | 618 | 2-65535 – использовать физическое состояние сигнала "Fuse 2". |
619 | )))|U16 | ||
620 | |**0x5111**|1|((( | ||
621 | Программное управление сигналом "Fuse 3". Возможные значения: | ||
![]() |
1.1 | 622 | |
![]() |
16.1 | 623 | 0 – сбросить сигнал; |
![]() |
1.1 | 624 | |
![]() |
16.1 | 625 | 1 – установить сигнал; |
![]() |
1.1 | 626 | |
![]() |
16.1 | 627 | 2-65535 – использовать физическое состояние сигнала "Fuse 3". |
628 | )))|U16 | ||
629 | |(% style="width:71px" %)**0x5112**|(% style="width:75px" %)1|(% style="width:375px" %)((( | ||
630 | Программное управление сигналом "Circuit breaker status". | ||
![]() |
1.1 | 631 | |
![]() |
16.1 | 632 | Возможные значения: |
![]() |
1.1 | 633 | |
![]() |
16.1 | 634 | 0 – сбросить сигнал; |
![]() |
1.1 | 635 | |
![]() |
16.1 | 636 | 1 – установить сигнал; |
![]() |
1.1 | 637 | |
![]() |
16.1 | 638 | 2-65535 – использовать физическое состояние сигнала |
![]() |
1.1 | 639 | |
![]() |
16.1 | 640 | "Circuit breaker status". |
641 | )))|(% style="width:82px" %)U16 | ||
642 | |(% style="width:71px" %)**0x5113**|(% style="width:75px" %)1|(% style="width:375px" %)((( | ||
643 | Программное управление сигналом "Balancing request" signal. Allowable values: | ||
![]() |
1.1 | 644 | |
![]() |
16.1 | 645 | Возможные значения: |
![]() |
1.1 | 646 | |
![]() |
16.1 | 647 | 0 – сбросить сигнал; |
![]() |
12.1 | 648 | |
![]() |
16.1 | 649 | 1 – установить сигнал; |
![]() |
12.1 | 650 | |
![]() |
16.1 | 651 | 2-65535 – использовать физическое состояние сигнала |
![]() |
12.1 | 652 | |
![]() |
16.1 | 653 | "Balancing request". |
654 | )))|(% style="width:82px" %)U16 | ||
655 | |(% style="width:71px" %)**0x5114**|(% style="width:75px" %)1|(% style="width:375px" %)((( | ||
656 | Программное управление сигналом "Close Main contactor" signal. | ||
657 | |||
658 | Возможные значения: | ||
659 | |||
660 | 0 – сбросить сигнал; | ||
661 | |||
662 | 1 – установить сигнал; | ||
663 | |||
664 | 2-65535 – использовать физическое состояние сигнала | ||
665 | |||
666 | "Close Main contactor". | ||
667 | )))|(% style="width:82px" %)U16 | ||
668 | |(% style="width:71px" %)**0x5115**|(% style="width:75px" %)1|(% style="width:375px" %)((( | ||
669 | Программное управление сигналом "Close External 1" signal. | ||
670 | |||
671 | Возможные значения: | ||
672 | |||
673 | 0 – сбросить сигнал; | ||
674 | |||
675 | 1 – установить сигнал; | ||
676 | |||
677 | 2-65535 – использовать физическое состояние сигнала | ||
678 | |||
679 | "Close External 1". | ||
680 | )))|(% style="width:82px" %)U16 | ||
681 | |||
![]() |
1.1 | 682 |