Карта Modbus-регистров RGBW-диммеров
Регистры устройства
Прошивка 3.0
RO / RW | Read only / Read/Write |
Выделено жирным | Значение регистра по умолчанию |
xN | Множитель, на который надо умножить число из регистра, чтобы получить значение в единицах измерения.
Не указан — считать равным 1 |
⚡ | Регистр поддерживает отправку данных с помощью событий Быстрого Modbus. |
FW | Версия прошивки устройства, с которой появился регистр. Пусто — регистр был всегда. |
Error: | Значение при ошибке |
Серый цвет ячейки | Служебный регистр: назначение, формат и содержимое может измениться в новых версиях прошивки |
Адрес | Параметры регистра no_description | Канал | Описание | Значения | FW | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex | Тип | Доступ | Формат | ||||||||
Состояние входов и счётчики нажатий | ||||||||||||
0 | 0x0000 | Discrete Input | RO | bool | Вход 1 | Состояние | 0 - неактивен 1 - активен |
|||||
1 | 0x0001 | Вход 2 | ||||||||||
2 | 0x0002 | Вход 3 | ||||||||||
3 | 0x0003 | Вход 4 | ||||||||||
32 | 0x0020 | Input | RO | u16 | Вход 1 | Счётчик замыканий | 0 − 65535 по кругу |
|||||
33 | 0x0021 | Вход 2 | ||||||||||
34 | 0x0022 | Вход 3 | ||||||||||
35 | 0x0023 | Вход 4 | ||||||||||
464 | 0x01D0 | Input | RO | u16 | Вход 1 | Счётчик короткого нажатия | 0 − 65535 по кругу |
|||||
465 | 0x01D1 | Вход 2 | ||||||||||
466 | 0x01D2 | Вход 3 | ||||||||||
467 | 0x01D3 | Вход 4 | ||||||||||
480 | 0x01E0 | Input | RO | u16 | Вход 1 | Счётчик долгого нажатия | 0 − 65535 по кругу |
|||||
481 | 0x01E1 | Вход 2 | ||||||||||
482 | 0x01E2 | Вход 3 | ||||||||||
483 | 0x01E3 | Вход 4 | ||||||||||
496 | 0x01F0 | Input | RO | u16 | Вход 1 | Счётчик двойного нажатия | 0 − 65535 по кругу |
|||||
497 | 0x01F1 | Вход 2 | ||||||||||
498 | 0x01F2 | Вход 3 | ||||||||||
499 | 0x01F3 | Вход 4 | ||||||||||
512 | 0x0200 | Input | RO | u16 | Вход 1 | Счётчик короткого, а затем долгого нажатия | 0 − 65535 по кругу |
|||||
513 | 0x0201 | Вход 2 | ||||||||||
514 | 0x0202 | Вход 3 | ||||||||||
515 | 0x0203 | Вход 4 | ||||||||||
Состояние выходов | ||||||||||||
0 | 0x0000 | Coil | RW | bool | Канал 1 | Состояние при независимой работе | 0 - выключен 1 - включён |
|||||
1 | 0x0001 | Канал 2 | ||||||||||
2 | 0x0002 | Канал 3 | ||||||||||
3 | 0x0003 | Coil | RW | bool | Канал 4 | Состояние при независимой работе или в режиме RGB+W | 0 - выключен 1 - включён |
|||||
4 | 0x0004 | Coil | RW | bool | Каналы 1 и 2 | Состояние при параллельной работе | 0 - выключен 1 - включён |
|||||
5 | 0x0005 | Каналы 3 и 4 | ||||||||||
6 | 0x0006 | Каналы 1, 2, 3, 4 | ||||||||||
7 | 0x0007 | Coil | RW | bool | Каналы 1 и 2 | Состояние каналов при работе с CCT лентой | 0 - выключен 1 - включён |
|||||
8 | 0x0008 | Каналы 3 и 4 | ||||||||||
9 | 0x0009 | Coil | RW | bool | Каналы 1, 2, 3 | Состояние каналов при работе с RGB лентой | 0 - выключен 1 - включён |
|||||
10 | 0x00010 | Coil | RW | bool | Каналы 1, 2, 3, 4 | Непрерывная смена цвета RGB ленты | 0 - выключен 1 - включён |
|||||
Управление каналами | ||||||||||||
2000 | 0x07D0 | Канал 1 | Яркость при независимой работе | Holding register | RW | u16 | 1 | % | 0 – 100 | 50 | 0xFFFF | |
2001 | 0x07D1 | Канал 2 | ||||||||||
2002 | 0x07D2 | Канал 3 | ||||||||||
2003 | 0x07D3 | Канал 4 | Яркость при независимой работе или в режиме RGB+W | Holding register | RW | u16 | 1 | % | 50 | 0xFFFF | ||
2004 | 0x07D4 | Каналы 1 и 2 | Яркость при параллельной работе | Holding register | RW | u16 | 1 | % | 50 | 0xFFFF | ||
2005 | 0x07D5 | Каналы 3 и 4 | ||||||||||
2006 | 0x07D6 | Каналы 1, 2, 3, 4 | ||||||||||
2007 | 0x07D7 | Каналы 1 и 2 | Цветовая температура CCT ленты | Holding register | RW | u16 | 1 | % | 0 – 100: * 0 - тёплый цвет * 100 - холодный цвет |
50 | 0xFFFF | |
2008 | 0x07D8 | Каналы 1 и 2 | Яркость CCT ленты | Holding register | RW | u16 | 1 | % | 0 – 100 | 50 | 0xFFFF | |
2009 | 0x07D9 | Каналы 3 и 4 | Цветовая температура CCT ленты | Holding register | RW | u16 | 1 | % | 0 – 100: * 0 - тёплый цвет * 100 - холодный цвет |
50 | 0xFFFF | |
2010 | 0x07DA | Каналы 3 и 4 | Яркость CCT ленты | Holding register | RW | u16 | 1 | % | 0 – 100 | 50 | 0xFFFF | |
2011 | 0x07DB | Компонент R | в цвете RGB ленты, RGB палитра | Holding register | RW | u16 | 1 | - | 0 – 255 | 127 | 0xFFFF | |
2012 | 0x07DC | Компонент G | ||||||||||
2013 | 0x07DD | Компонент B | ||||||||||
2014 | 0x07DE | Компонент H | в цвете RGB ленты, HSV палитра | Holding register | RW | u16 | 1 | градус | 0 – 360 | 0 | 0xFFFF | |
2015 | 0x07DF | Компонент S | % | 0 – 100 | 100 | |||||||
2016 | 0x07E0 | Компонент V | % | 50 | ||||||||
2017 | 0x07E1 | Скорость непрерывного изменения цвета RGB ленты, период увеличения Hue на 1 градус | Holding register | RW | u16 | 1 | мс | 3 – 10000 | 30 | 0xFFFF | ||
Настройка выходов и прямое управление ШИМ выходов | ||||||||||||
70 | 0x0046 | Канал 1 | Минимальный ШИМ | Holding register | RW | u16 | 0 – 2048 | 6 | ||||
71 | 0x0047 | Канал 2 | ||||||||||
72 | 0x0048 | Канал 3 | ||||||||||
73 | 0x0049 | Канал 4 | ||||||||||
80 | 0x0050 | Канал 1 | Максимальный ШИМ | Holding register | RW | u16 | 0 – 2048 | 2048 | ||||
81 | 0x0051 | Канал 2 | ||||||||||
82 | 0x0052 | Канал 3 | ||||||||||
83 | 0x0053 | Канал 4 | ||||||||||
90 | 0x005A | Канал 1 | Прямое управление | Holding register | RW | u16 | 0 – 2048 | 0 | ||||
91 | 0x005B | Канал 2 | ||||||||||
92 | 0x005C | Канал 3 | ||||||||||
93 | 0x005D | Канал 4 | ||||||||||
Обработка типов нажатий | ||||||||||||
1100 | 0x044C | Вход 1 | Время удержания входа в замкнутом состоянии для фиксации долгого нажатия | Holding register | RW | u16 | 1 | мс | 500 - 5000 | 2000 | - | |
1101 | 0x044D | Вход 2 | ||||||||||
1102 | 0x044E | Вход 3 | ||||||||||
1103 | 0x044F | Вход 4 | ||||||||||
1120 | 0x0460 | Вход 1 | Скорость изменения параметра при удержании кнопки | Holding register | RW | u16 | 1 | мс/ед. | 5 - 500 | 20 | ||
1121 | 0x0461 | Вход 2 | ||||||||||
1122 | 0x0462 | Вход 3 | ||||||||||
1123 | 0x0463 | Вход 4 | ||||||||||
1140 | 0x0474 | Вход 1 | Время двойного нажатия | Holding register | RW | u16 | 1 | мс | 100 - 2000 | 500 | ||
1141 | 0x0475 | Вход 2 | ||||||||||
1142 | 0x0476 | Вход 3 | ||||||||||
1143 | 0x0477 | Вход 4 | ||||||||||
1160 | 0x0488 | Вход 1 | Время подавления дребезга | Holding register | RW | u16 | 1 | мс | 5 - 200 | 50 | ||
1161 | 0x0489 | Вход 2 | ||||||||||
1162 | 0x048A | Вход 3 | ||||||||||
1163 | 0x048B | Вход 4 | ||||||||||
Время изменения яркости, цветовой температуры и насыщенности цвета | ||||||||||||
3000 | 0x0BB8 | Канал 1 | Время увеличения яркости при независимой работе | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3001 | 0x0BB9 | Канал 2 | ||||||||||
3002 | 0x0BBA | Канал 3 | ||||||||||
3003 | 0x0BBB | Канал 4 | ||||||||||
3004 | 0x0BBC | Каналы 1 и 2 | Время увеличения яркости при параллельной работе | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3005 | 0x0BBD | Каналы 3 и 4 | ||||||||||
3006 | 0x0BBE | Каналы 1, 2, 3, 4 | ||||||||||
3007 | 0x0BBF | Каналы 1 и 2 | Время увеличения цветовой температуры CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3008 | 0x0BC0 | Каналы 1 и 2 | Время увеличения яркости CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3009 | 0x0BC1 | Каналы 3 и 4 | Время увеличения цветовой температуры CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3010 | 0x0BC2 | Каналы 3 и 4 | Время увеличения яркости CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3011 | 0x0BC3 | HSV-H | Время увеличения цвета RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3012 | 0x0BC4 | HSV-S | Время увеличения насыщенности цвета RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3013 | 0x0BC5 | HSV-V | Время увеличения яркости RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3100 | 0x0BB8 | Канал 1 | Время уменьшения яркости при независимой работе | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3101 | 0x0BB9 | Канал 2 | ||||||||||
3102 | 0x0BBA | Канал 3 | ||||||||||
3103 | 0x0BBB | Канал 4 | ||||||||||
3104 | 0x0BBC | Каналы 1 и 2 | Время уменьшения яркости при параллельной работе | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3105 | 0x0BBD | Каналы 3 и 4 | ||||||||||
3106 | 0x0BBE | Каналы 1, 2, 3, 4 | ||||||||||
3107 | 0x0BBF | Каналы 1 и 2 | Время уменьшения цветовой температуры CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3108 | 0x0BC0 | Каналы 1 и 2 | Время уменьшения яркости CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3109 | 0x0BC1 | Каналы 3 и 4 | Время уменьшения цветовой температуры CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3110 | 0x0BC2 | Каналы 3 и 4 | Время уменьшения яркости CCT ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3111 | 0x0BC3 | HSV-H | Время уменьшения цвета RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3112 | 0x0BC4 | HSV-S | Время уменьшения насыщенности цвета RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
3113 | 0x0BC5 | HSV-V | Время уменьшения яркости RGB ленты | Holding register | RW | u16 | 1 | мс | 0 – 30000 | 100 | ||
Общие для всех режимов настройки | ||||||||||||
9 | 0x0009 | Настройка частоты ШИМ выходов | Holding register | RW | u16 | 1 | 1 – 240 F = 24 kHz / value |
8 | ||||
4000 | 0x0FA0 | Настройка режима работы диммера | Holding register | RW | u16 | Код режима можно взять в таблице режимов работы | 256 |
Wbincludes:Header Relay Registers |+ Действия по типам нажатий |- | class="text-right" | 1000 | 0x03E8 | Вход 1 | rowspan="4" | Действие при коротком нажатии | rowspan="4" | Holding register | rowspan="4" | RW | rowspan="4" | u16 | rowspan="4" | | rowspan="4" | | rowspan="4" | Смотрите формулу расчёта ниже | rowspan="4" class="text-right" | 0 | rowspan="4" | | rowspan="4" | |- | class="text-right" | 1001 | 0x03E9 | Вход 2 |- | class="text-right" | 1002 | 0x03EA | Вход 3 |- | class="text-right" | 1003 | 0x03EB | Вход 4 |- | class="text-right" | 1020 | 0x03FC | Вход 1 | rowspan="4" | Дейтсвие при долгом нажатии | rowspan="4" | Holding register | rowspan="4" | RW | rowspan="4" | u16 | rowspan="4" | | rowspan="4" | | rowspan="4" | Смотрите формулу расчёта ниже | rowspan="4" class="text-right" | 0 | rowspan="4" | | rowspan="4" | |- | class="text-right" | 1021 | 0x03FD | Вход 2 |- | class="text-right" | 1022 | 0x03FE | Вход 3 |- | class="text-right" | 1023 | 0x03FF | Вход 4 |- | class="text-right" | 1040 | 0x0410 | Вход 1 | rowspan="4" | Дейтсвие при двойном нажатии | rowspan="4" | Holding register | rowspan="4" | RW | rowspan="4" | u16 | rowspan="4" | | rowspan="4" | | rowspan="4" | Смотрите формулу расчёта ниже | rowspan="4" class="text-right" | 0 | rowspan="4" | | rowspan="4" | |- | class="text-right" | 1041 | 0x0411 | Вход 2 |- | class="text-right" | 1042 | 0x0412 | Вход 3 |- | class="text-right" | 1043 | 0x0413 | Вход 4 |- | class="text-right" | 1060 | 0x0424 | Вход 1 | rowspan="4" | Действие при коротком, а затем долгом нажатии | rowspan="4" | Holding register | rowspan="4" | RW | rowspan="4" | u16 | rowspan="4" | | rowspan="4" | | rowspan="4" | Смотрите формулу расчёта ниже | rowspan="4" class="text-right" | 0 | rowspan="4" | | rowspan="4" | |- | class="text-right" | 1061 | 0x0425 | Вход 2 |- | class="text-right" | 1062 | 0x0426 | Вход 3 |- | class="text-right" | 1063 | 0x0427 | Вход 4 |}
Для настройки действий для типа нажатия нужно в соответствующий регистр записать число, составленное по следующему правилу:
0000 0000 0000 0000
Старшие 4 бита - тип действия:
- 0 - нет действия
- 0b0001 - установить coil регистр в 0
- 0b0010 - установить coil регистр в 1
- 0b0011 - переключить coil регистр 0 <-> 1
- 0b1001 - увеличить значение в holding регистре (уменьшается на 1 за каждое событие от кнопки)
- 0b1010 - уменьшить значение в holding регистре (увеличивается на 1 за каждое событие от кнопки)
- 0b1011 - уменьшить/увеличить значение в holding регистре. Направление меняется при каждом новом нажатии.
0000 0000 0000 0000
Младшие 12 бит - номер регистра без базового адреса. То есть для coil регистров адреса начинаются с нуля, и номер регистра совпадает с его адресом. Для регистров данных - адреса начинаются с 2000 - это базовый адрес. Из адреса holding регистра нужно вычесть 2000 и это значение (от 0 до 17) поместить в младшие 12 бит.
Value = (action << 12) | reg_number
Кнопки меняют значения modbus-регистров. Могут быть изменены значения только coil регистров включения (coil 0-10) и holding регистров данных (2000-2017).
Новый формат версионирования прошивок
Изменения относительно старого формата:
- Диапазон регистров «Модель устройства» расширен до 20 регистров
- Версия формируется согласно semver и имеет формат
MAJOR.MINOR.PATCH
с опциональным суффиксом(-rc|+wb)SUFFIX
- Суффикс
-rc
означает, что прошивка предназначена для тестирования и может быть нестабильной. Хранится в регистре с отрицательным знаком - Суффикс
+wb
добавляется, когда к прошивке, зафиксированной в релизе, требуется выпустить фикс. Хранится в регистре с положительным знаком
- Суффикс
- Цифры версии доступны по отдельности в формате u16 (для суффикса - i16), регистры 320-323
- Доступно число u32, содержащее комбинацию цифр версии и позволяющее за одно сравнение понять, увеличилась или уменьшилась версия прошивки
- Число рассчитывается по формуле:
if (SUFFIX >= 0) { SUFFIX = SUFFIX + 128; } else { SUFFIX = -1 - SUFFIX; } VERSION = (MAJOR << 24) + (MINOR << 16) + (PATCH << 8) + SUFFIX;
- Число доступно для чтения в little-endian и big-endian форматах
- Число для более свежей версии всегда будет больше, чем для предыдущей, в том числе, когда прошивка переходит из тестовой в стабильную
- Таким образом обеспечивается корректное сравнение версий:
1.2.3-rc1 < 1.2.3-rc10 < 1.2.3 < 1.2.3+wb1 < 1.2.3+wb10
Wbincludes:Header Registers | 200-219 | 0x00C8 - 0x00D8 | Модель устройства | Input register | RO | null-terminated string | | | | | |rowspan="7"| 3.0.0 |- | 320 | 0x0140 |rowspan="4"| Версия прошивки в числовом формате |rowspan="4"| Input register |rowspan="4"| RO |rowspan="4"| u16 | | | MAJOR | | |- | 321 | 0x0141 | | | MINOR | | |- | 322 | 0x0142 | | | PATCH | | |- | 323 | 0x0143 | | | SUFFIX | | |- | 324-325 | 0x0144 - 0x0144 | Версия прошивки в Little Endian формате | Input register | RO | u32 | | | | | |- | 326-327 | 0x0146 - 0x0147 | Версия прошивки в Big Endian формате | Input register | RO | u32 | | | | | |- |}
Прошивка 1.0
Текущая серийная версия прошивки.
Регистр / адрес | тип | чтение/запись | значение по умолчанию | формат | назначение | Примечание |
---|---|---|---|---|---|---|
0 | holding | RW | - | 0-255 | Уровень канала G, логарифмическая кривая | |
1 | holding | RW | - | 0-255 | Уровень канала R, логарифмическая кривая | |
2 | holding | RW | - | 0-255 | Уровень канала B, логарифмическая кривая | |
3 | holding | RW | - | 0-255 | Уровень канала W, логарифмическая кривая | WB-MRGBW-D |
5 | holding | RW | 0 | 0: стандартный режим, 1: отключить управление | режим работы кнопок | |
6 | input | R | 1 - нажата, 0 - отпущена | состояние кнопки 1 | ||
7 | input | R | 1 - нажата, 0 - отпущена | состояние кнопки 2 | ||
8 | input | R | 1 - нажата, 0 - отпущена | состояние кнопки 3 (WB-MRGBW-D) | ||
9 | holding | RW | 0 | 0 - 239 | частота ШИМ * freq = 24 кГц / (value + 1)
|
|
13 | holding | RW | 100 | x 10ms (2 - 500) | Время плавного изменения яркости во время включения и выключения | |
32 | input | R | 0 | 0 - 65535 и дальше снова 0 | количество нажатий кнопки 1 | с версии 1.1.1 |
33 | input | R | 0 | 0 - 65535 и дальше снова 0 | количество нажатий кнопки 2 | с версии 1.1.1 |
34 | input | R | 0 | 0 - 65535 и дальше снова 0 | количество нажатий кнопки 3 | с версии 1.1.1 |
* Для регистра 9 приведена формула расчёта частоты. Значение регистра считается так: value=24кГц/freq−1, где freq — нужная частота. По умолчанию в регистр записано 0 — это 24 кГц: 24/24−1=0 В регистр пишется только целое число, возможные значения: 0 - 24 кГц 1 - 12 кГц 2 - 8 кГц 3 - 6 кГц 4 - 5.4 кГц 5 - 4 кГц
Адрес | Параметры регистра | Описание | Значения | |||
---|---|---|---|---|---|---|
Dec | Hex | Тип | Доступ | Формат | ||
104-105 | 0x0068 - 0x0069 | Input | RO | u32 | Время работы с момента загрузки | секунды |
121 | 0x0079 | Input | RO | u16 | Текущее напряжение питания | мВ |
110 | 0x006E | Holding | RW | u16 | Скорость порта RS-485. Настройка параметров подключения по RS-485 |
x100, Боды 12 — 1200 бит/с, 24 — 2400 бит/с, 48 — 4800 бит/с, 96 — 9600 бит/с, 192 — 19 200 бит/с, 384 — 38 400 бит/с, 576 — 57 600 бит/с, 1152 — 115 200 Кбит/с |
111 | 0x006F | Holding | RW | u16 | Настройка бита чётности порта RS-485 | 0 — нет бита чётности (none), 1 — нечётный, 2 — чётный |
112 | 0x0070 | Holding | RW | u16 | Количество стоп-битов порта RS-485 | 1, 2 |
113 | 0x0071 | Holding | RW | u16 | Время перед отправкой ответа на modbus запрос | 0 - 254 мс |
114 | 0x0072 | Holding | RW | u16 | Режим непрерывного чтения регистров с зазором | 0 - отключен 1 - включен 2 - включение сохраняется после перезагрузки |
128 | 0x0080 | Holding | RW | u16 | Modbus-адрес устройства (подробнее) | |
120 | 0x0078 | Holding | RW | u16 | Перезагрузка устройства без сохранения состояния | любое, отличное от 0 перезагружает устройство |
129 | 0x0081 | Holding | RW | u16 | Перевод в режим обновления прошивки на 2 минуты | любое, отличное от 0 переводит устройство в режим обновления прошивки |
130 | 0x0082 | Holding | RW | u8 | Отключение индикатора состояния | 0 - активен, 1 - отключен |
123 | 0x007B | Input | RO | u16 | Напряжение на микроконтроллере | мВ |
124 | 0x007C | Input | RO | u16 | Внутренняя температура микроконтроллера | x0.1, °C |
200-205 | 0x00C8 - 0x00CD | Input | RO | string | Модель устройства | |
206-219 | 0x00CE - 0x00DB | Input | RO | string | Расширение модели устройства. Для новых устройств WB-LED и WB-MAI6 поле поддерживается изначально, для остальных - в прошивках с "быстрым Modbus". Для чтения модели устройства нужно читать диапазон из 20 регистров (200 - 219). Если устройство возвращает ошибку Illegal Data Address - читать 6 регистров (200 - 205). | |
220-248 | 0x00DC - 0x00F8 | Input | RO | string | Хэш коммита и название ветки откуда собрана прошивка (2 символа в регистре) | |
250-265 | 0x00FA - 0x0109 | Input | RO | string | Версия прошивки | |
266-269 | 0x010A - 0x010D | Input | RO | u64 | Расширение серийного номера | |
270-271 | 0x010E - 0x010F | Input | RO | u32 | Серийный номер | |
290-301 | 0x0122 - 0x012D | Holding | RO | string | Сигнатура прошивки | |
330-336 | 0x014A - 0x0150 | Holding | RO | string | Версия загрузчика |
Версия прошивки в устройствах с «Быстрым Modbus»
В устройствах, поддерживающих Быстрый Modbus, используется другой формат обозначения версии прошивки.
- Диапазон регистров «Модель устройства» расширен до 20 регистров.
- Версия формируется согласно semver и имеет формат
MAJOR.MINOR.PATCH
с опциональным суффиксом(-rc|+wb)SUFFIX
:- суффикс
-rc
означает, что прошивка предназначена для тестирования и может быть нестабильной. Хранится в регистре с отрицательным знаком; - суффикс
+wb
добавляется, когда к прошивке, зафиксированной в релизе, требуется выпустить фикс. Хранится в регистре с положительным знаком.
- суффикс
- Цифры версии доступны по отдельности в формате u16 (для суффикса - s16), регистры 320-323.
- Доступно число u32, содержащее комбинацию цифр версии и позволяющее за одно сравнение понять, увеличилась или уменьшилась версия прошивки:
- число рассчитывается по формуле
if (SUFFIX >= 0) { SUFFIX = SUFFIX + 128; } else { SUFFIX = -1 - SUFFIX; } VERSION = (MAJOR << 24) + (MINOR << 16) + (PATCH << 8) + SUFFIX;
- число доступно для чтения в little-endian и big-endian форматах;
- число для более свежей версии всегда будет больше, чем для предыдущей, в том числе, когда прошивка переходит из тестовой в стабильную.
- Таким образом обеспечивается корректное сравнение версий:
1.2.3-rc1 < 1.2.3-rc10 < 1.2.3 < 1.2.3+wb1 < 1.2.3+wb10.
Адрес | Параметры регистра | Описание | Значения | |||
---|---|---|---|---|---|---|
Dec | Hex | Тип | Доступ | Формат | ||
200-219 | 0x00C8 - 0x00DB | Input | RO | string | Модель устройства | |
320 | 0x0140 | Input | RO | u16 | Версия прошивки в числовом формате | MAJOR |
321 | 0x0141 | MINOR | ||||
322 | 0x0142 | PATCH | ||||
323 | 0x0143 | s16 | SUFFIX | |||
324-325 | 0x0144 - 0x0145 | Input | RO | u32 | Версия прошивки в числовом формате | |
326-327 | 0x0146 - 0x0147 | Input | RO | u32 | Версия прошивки в Big Endian формате |