WB Dimmers Modbus Registers Map: различия между версиями

Материал из Wiren Board
(Вынес регистры прошивки 3.0 на отдельную страницу.)
Строка 1: Строка 1:
{{DISPLAYTITLE:Карта Modbus-регистров RGBW-диммеров}}
{{DISPLAYTITLE:Карта Modbus-регистров RGBW-диммеров}}
== Регистры устройства ==
== Регистры устройства ==
=== Прошивка 3.0 ===
Здесь описываются регистры прошивки версии 1.0.
{{Wbincludes:Header Registers Universal|fw=true|channel=true}}
|-
! colspan="9" style="text-align: left;"| Состояние входов и счётчики нажатий
|-
| class ="text-right" | 0
| 0x0000
| rowspan="4" | Discrete Input
| rowspan="4" | RO
| rowspan="4" | bool 
| Вход 1
| rowspan="4" | Состояние
| rowspan="4" | 0 - неактивен<br />1 - активен<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 1
| 0x0001
| Вход 2
|-
| class ="text-right" | 2
| 0x0002
| Вход 3
|-
| class ="text-right" | 3
| 0x0003
| Вход 4
|-
| class ="text-right" | 32
| 0x0020
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Счётчик замыканий
| rowspan="4" | 0 − 65535<br /> по кругу<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 33
| 0x0021
| Вход 2
|-
| class ="text-right" | 34
| 0x0022
| Вход 3
|-
| class ="text-right" | 35
| 0x0023
| Вход 4
|-
| class ="text-right" | 464
| 0x01D0
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Счётчик короткого нажатия
| rowspan="4" | 0 − 65535<br /> по кругу<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 465
| 0x01D1
| Вход 2
|-
| class ="text-right" | 466
| 0x01D2
| Вход 3
|-
| class ="text-right" | 467
| 0x01D3
| Вход 4
|-
| class ="text-right" | 480
| 0x01E0
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Счётчик долгого нажатия
| rowspan="4" | 0 − 65535<br /> по кругу<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 481
| 0x01E1
| Вход 2
|-
| class ="text-right" | 482
| 0x01E2
| Вход 3
|-
| class ="text-right" | 483
| 0x01E3
| Вход 4
|-
| class ="text-right" | 496
| 0x01F0
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Счётчик двойного нажатия
| rowspan="4" | 0 − 65535<br /> по кругу<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 497
| 0x01F1
| Вход 2
|-
| class ="text-right" | 498
| 0x01F2
| Вход 3
|-
| class ="text-right" | 499
| 0x01F3
| Вход 4
|-
| class ="text-right" | 512
| 0x0200
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Счётчик короткого, а затем долгого нажатия
| rowspan="4" | 0 − 65535<br /> по кругу<br />Error: 0
| rowspan="4" |
|-
| class ="text-right" | 513
| 0x0201
| Вход 2
|-
| class ="text-right" | 514
| 0x0202
| Вход 3
|-
| class ="text-right" | 515
| 0x0203
| Вход 4
|-
! colspan="9" style="text-align: left;"| Состояние выходов
|-
| class ="text-right" | 0
| 0x0000
| rowspan="3" | Coil
| rowspan="3" | RW
| rowspan="3" | bool
| Канал 1
| rowspan="3" | Состояние при независимой работе
| rowspan="3" | '''0''' - выключен<br /> 1 - включён
| rowspan="3" |
|-
| class="text-right" | 1
| 0x0001
| Канал 2
|-
| class="text-right" | 2
| 0x0002
| Канал 3
|-
| class ="text-right" | 3
| 0x0003
| Coil
| RW
| bool
| Канал 4
| Состояние при независимой работе или в режиме RGB+W
| '''0''' - выключен<br /> 1 - включён
|
|-
| class ="text-right" | 4
| 0x0004
| rowspan="3" | Coil
| rowspan="3" | RW
| rowspan="3" | bool
| Каналы 1 и 2
| rowspan="3" | Состояние при параллельной работе
| rowspan="3" | '''0''' - выключен<br /> 1 - включён
| rowspan="3" |
|-
| class="text-right" | 5
| 0x0005
| Каналы 3 и 4
|-
| class="text-right" | 6
| 0x0006
| Каналы 1, 2, 3, 4
|-
| class ="text-right" | 7
| 0x0007
| rowspan="2" | Coil
| rowspan="2" | RW
| rowspan="2" | bool
| Каналы 1 и 2
| rowspan="2" | Состояние каналов при работе с CCT лентой
| rowspan="2" | '''0''' - выключен<br /> 1 - включён
| rowspan="2" |
|-
| class="text-right" | 8
| 0x0008
| Каналы 3 и 4
|-
| class ="text-right" | 9
| 0x0009
| Coil
| RW
| bool
| Каналы 1, 2, 3
| Состояние каналов при работе с RGB лентой
| '''0''' - выключен<br /> 1 - включён
|
|-
| class ="text-right" | 10
| 0x00010
| Coil
| RW
| bool
| Каналы 1, 2, 3, 4
| Непрерывная смена цвета RGB ленты
| '''0''' - выключен<br /> 1 - включён
|
|-
! colspan="9" style="text-align: left;"| Управление каналами
|-
| class ="text-right" | 2000
| 0x07D0
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16
| Канал 1
| rowspan="3" | Яркость при независимой работе
| rowspan="3" | x1, %<br /> 0 - 100 ('''50''')<br />Error: 0xFFFF
| rowspan="3" |
|-
| class="text-right" | 2001
| 0x07D1
| Канал 2
|-
| class="text-right" | 2002
| 0x07D2
| Канал 3
|-
| class ="text-right" | 2003
| 0x07D3
| Holding
| RW
| u16
| Канал 4
| Яркость при независимой работе
| x1, %<br />0 - 100 ('''50''')<br />Error: 0xFFFF
|
|-
| class ="text-right" | 2004
| 0x07D4
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16
| Каналы 1 и 2
| rowspan="3" | Яркость при параллельной работе
| rowspan="3" | x1, %<br /> 0 - 100 ('''50''')<br />Error: 0xFFFF
| rowspan="3" |
|-
| class="text-right" | 2005
| 0x07D5
| Каналы 3 и 4
|-
| class="text-right" | 2006
| 0x07D6
| Каналы 1, 2, 3, 4
|-
| class ="text-right" | 2007
| 0x07D7
| Holding
| RW
| u16
| Каналы 1 и 2
| Цветовая температура CCT ленты
| x1, %<br />0 - 100 ('''50''')<br />* 0 - тёплый цвет<br />* 100 - холодный цвет<br />Error: 0xFFFF
|
|-
| class ="text-right" | 2008
| 0x07D8
| Holding
| RW
| u16
| Каналы 1 и 2
| Яркость CCT ленты
| x1, %<br />0 - 100 ('''50''')<br />Error: 0xFFFF
|
|-
| class ="text-right" | 2009
| 0x07D9
| Holding
| RW
| u16
| Каналы 3 и 4
| Цветовая температура CCT ленты
| x1, %<br />0 - 100 ('''50''')<br />* 0 - тёплый цвет<br />* 100 - холодный цвет<br />Error: 0xFFFF
|
|-
| class ="text-right" | 2010
| 0x07DA
| Holding
| RW
| u16
| Каналы 3 и 4
| Яркость CCT ленты
| x1, %<br />0 - 100 ('''50''')<br />Error: 0xFFFF
|
|-
| class ="text-right" | 2011
| 0x07DB
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16
| Компонент R
| rowspan="3" | в цвете RGB ленты, RGB палитра
| rowspan="3" | x1<br /> 0 - 255 ('''127''')<br />Error: 0xFFFF
| rowspan="3" |
|-
| class="text-right" | 2012
|  | 0x07DC
|  | Компонент G
|-
| class="text-right" | 2013
|  | 0x07DD
|  | Компонент B
|-
| class ="text-right" | 2014
| 0x07DE
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16
| Компонент H
| rowspan="3" | в цвете RGB ленты, HSV палитра
| x1, градус<br /> '''0''' - 360 <br />Error: 0xFFFF
| rowspan="3" |
|-
| class="text-right" | 2015
|  | 0x07DF
|  | Компонент S
|  | x1, %<br />0 - '''100'''<br />Error: 0xFFFF
|-
| class="text-right" | 2016
|  | 0x07E0
|  | Компонент V
|  | x1, %<br />0 - 100 ('''50''')<br />Error: 0xFFFF
|-
| class ="text-right" | 2017
| 0x07E1
| Holding
| RW
| u16
|
| Скорость непрерывного изменения цвета RGB ленты, период увеличения Hue на 1 градус
| x1, миллисекунды<br />3 - 10000 ('''30''')<br />Error: 0xFFFF
|
|-
! colspan="9" style="text-align: left;"| Настройка выходов и прямое управление ШИМ выходов
|-
| class ="text-right" | 70
| 0x0046
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Канал 1
| rowspan="4" | Минимальный ШИМ
| rowspan="4" | 0 – 2048 ('''6''')
| rowspan="4" |
|-
| class="text-right" | 71
| 0x0047
| Канал 2
|-
| class="text-right" | 72
| 0x0048
| Канал 3
|-
| class="text-right" | 73
| 0x0049
| Канал 4
|-
| class ="text-right" | 80
| 0x0050
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Канал 1
| rowspan="4" | Максимальный ШИМ
| rowspan="4" | 0 – '''2048'''
| rowspan="4" |
|-
| class="text-right" | 81
| 0x0051
| Канал 2
|-
| class="text-right" | 82
| 0x0052
| Канал 3
|-
| class="text-right" | 83
| 0x0053
| Канал 4
|-
| class ="text-right" | 90
| 0x005A
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Канал 1
| rowspan="4" | Прямое управление
| rowspan="4" | '''0''' – 2048
| rowspan="4" |
|-
| class="text-right" | 91
| 0x005B
| Канал 2
|-
| class="text-right" | 92
| 0x005C
| Канал 3
|-
| class="text-right" | 93
| 0x005D
| Канал 4
|-
! colspan="9" style="text-align: left;"| Обработка типов нажатий
|-
| class ="text-right" | 1100
| 0x044C
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Время удержания входа в замкнутом состоянии для фиксации долгого нажатия
| rowspan="4" | x1, миллисекунды<br />500 – 5000 ('''2000''')
| rowspan="4" |
|-
| class="text-right" | 1101
| 0x044D
| Вход 2
|-
| class="text-right" | 1102
| 0x044E
| Вход 3
|-
| class="text-right" | 1103
| 0x044F
| Вход 4
|-
| class ="text-right" | 1120
| 0x0460
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Скорость изменения параметра при удержании кнопки
| rowspan="4" | x1, миллисекунды/ед.<br />5 – 500 ('''20''')
| rowspan="4" |
|-
| class="text-right" | 1121
| 0x0461
| Вход 2
|-
| class="text-right" | 1122
| 0x0462
| Вход 3
|-
| class="text-right" | 1123
| 0x0463
| Вход 4
|-
| class ="text-right" | 1140
| 0x0474
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Время двойного нажатия
| rowspan="4" | x1, миллисекунды<br />100 – 2000 ('''500''')
| rowspan="4" |
|-
| class="text-right" | 1141
| 0x0475
| Вход 2
|-
| class="text-right" | 1142
| 0x0476
| Вход 3
|-
| class="text-right" | 1143
| 0x0477
| Вход 4
|-
| class ="text-right" | 1160
| 0x0488
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Вход 1
| rowspan="4" | Время подавления дребезга
| rowspan="4" | x1, миллисекунды<br />5 – 200 ('''50''')
| rowspan="4" |
|-
| class="text-right" | 1161
| 0x0489
| Вход 2
|-
| class="text-right" | 1162
| 0x048A
| Вход 3
|-
| class="text-right" | 1163
| 0x048B
| Вход 4
|-
! colspan="9" style="text-align: left;"| Время изменения яркости, цветовой температуры и насыщенности цвета
|-
| class ="text-right" | 3000
| 0x0BB8
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Канал 1
| rowspan="4" | Время увеличения яркости при независимой работе
| rowspan="4" | x1, миллисекунды<br />0 – 30000 ('''100''')
| rowspan="4" |
|-
| class="text-right" | 3001
| 0x0BB9
| Канал 2
|-
| class="text-right" | 3002
| 0x0BBA
| Канал 3
|-
| class="text-right" | 3003
| 0x0BBB
| Канал 4
|-
| class ="text-right" | 3004
| 0x0BBС
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16 
| Каналы 1 и 2
| rowspan="3" | Время увеличения яркости при параллельной работе
| rowspan="3" | x1, миллисекунды<br />0 – 30000 ('''100''')
| rowspan="3" |
|-
| class="text-right" | 3005
| 0x0BBD
| Каналы 3 и 4
|-
| class="text-right" | 3006
| 0x0BBE
| Каналы 1, 2, 3, 4
|-
| class ="text-right" | 3007
| 0x0BBF
| Holding
| RW
| u16 
| Каналы 1 и 2
| Время увеличения цветовой температуры CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3008
| 0x0BC0
| Holding
| RW
| u16 
| Каналы 1 и 2
| Время увеличения яркости CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3009
| 0x0BC1
| Holding
| RW
| u16 
| Каналы 3 и 4
| Время увеличения цветовой температуры CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3010
| 0x0BC2
| Holding
| RW
| u16 
| Каналы 3 и 4
| Время увеличения яркости CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3011
| 0x0BC3
| Holding
| RW
| u16 
| HSV-H
| Время увеличения цвета RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3012
| 0x0BC3
| Holding
| RW
| u16 
| HSV-S
| Время увеличения насыщенности цвета RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3013
| 0x0BC3
| Holding
| RW
| u16 
| HSV-V
| Время увеличения яркости RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3100
| 0x0C1C
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16 
| Канал 1
| rowspan="4" | Время уменьшения яркости при независимой работе
| rowspan="4" | x1, миллисекунды<br />0 – 30000 ('''100''')
| rowspan="4" |
|-
| class="text-right" | 3101
| 0x0BB9
| Канал 2
|-
| class="text-right" | 3102
| 0x0BBA
| Канал 3
|-
| class="text-right" | 3103
| 0x0BBB
| Канал 4
|-
| class ="text-right" | 3104
| 0x0C20
| rowspan="3" | Holding
| rowspan="3" | RW
| rowspan="3" | u16 
| Каналы 1 и 2
| rowspan="3" | Время уменьшения яркости при параллельной работе
| rowspan="3" | x1, миллисекунды<br />0 – 30000 ('''100''')
| rowspan="3" |
|-
| class="text-right" | 3105
| 0x0BBD
| Каналы 3 и 4
|-
| class="text-right" | 3106
| 0x0BBE
| Каналы 1, 2, 3, 4
|-
| class ="text-right" | 3107
| 0x0C23
| Holding
| RW
| u16 
| Каналы 1 и 2
| Время уменьшения цветовой температуры CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3108
| 0x0C24
| Holding
| RW
| u16 
| Каналы 1 и 2
| Время уменьшения яркости CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3109
| 0x0C25
| Holding
| RW
| u16 
| Каналы 3 и 4
| Время уменьшения цветовой температуры CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3110
| 0x0C26
| Holding
| RW
| u16 
| Каналы 3 и 4
| Время уменьшения яркости CCT ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3111
| 0x0C27
| Holding
| RW
| u16 
| HSV-H
| Время уменьшения цвета RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3112
| 0x0C28
| Holding
| RW
| u16 
| HSV-S
| Время уменьшения насыщенности цвета RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
| class ="text-right" | 3113
| 0x0C29
| Holding
| RW
| u16 
| HSV-V
| Время уменьшения яркости RGB ленты
| x1, миллисекунды<br />0 – 30000 ('''100''')
|
|-
! colspan="9" style="text-align: left;"| Общие для всех режимов настройки
|-
| class ="text-right" | 9
| 0x0009
| Holding
| RW
| u16 
|
| Настройка частоты ШИМ выходов
| x1<br />1 – 240 ('''8''')<br />F = 24 kHz / value
|
|-
| class ="text-right" | 4000
| 0x0FA0
| Holding
| RW
| u16 
|
| Настройка режима работы диммера
| Код режима можно взять в [[WB-MRGBW-D_Modbus_LED_Dimmer#Режимы | таблице режимов работы]]<br />'''256'''
|
|-
|}
 
{{Wbincludes:Header Registers Universal|fw=true|channel=true}}
|+ Действия по типам нажатий
|-
| class ="text-right" | 1000
| 0x03E8
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16
| Вход 1
| rowspan="4" | Действие при коротком нажатии
| rowspan="4" | Смотрите формулу расчёта ниже<br />'''0'''
| 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
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16
| Вход 1
| rowspan="4" | Действие при долгом нажатии
| rowspan="4" | Смотрите формулу расчёта ниже<br />'''0'''
| 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
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16
| Вход 1
| rowspan="4" | Действие при двойном нажатии
| rowspan="4" | Смотрите формулу расчёта ниже<br />'''0'''
| 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
| rowspan="4" | Holding
| rowspan="4" | RW
| rowspan="4" | u16
| Вход 1
| rowspan="4" | Действие при коротком, а затем долгом нажатии
| rowspan="4" | Смотрите формулу расчёта ниже<br />'''0'''
| 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 и имеет формат <code>MAJOR.MINOR.PATCH</code> с опциональным суффиксом <code>(-rc|+wb)SUFFIX</code>
*: Суффикс <code>-rc</code> означает, что прошивка предназначена для тестирования и может быть нестабильной. Хранится в регистре с отрицательным знаком
*: Суффикс <code>+wb</code> добавляется, когда к прошивке, зафиксированной в релизе, требуется выпустить фикс. Хранится в регистре с положительным знаком
* Цифры версии доступны по отдельности в формате u16 (для суффикса - i16), регистры 320-323
* Доступно число u32, содержащее комбинацию цифр версии и позволяющее за одно сравнение понять, увеличилась или уменьшилась версия прошивки
*: Число рассчитывается по формуле:
*: <syntaxhighlight>
if (SUFFIX >= 0) {
    SUFFIX = SUFFIX + 128;
} else {
    SUFFIX = -1 - SUFFIX;
}
VERSION = (MAJOR << 24) + (MINOR << 16) + (PATCH << 8) + SUFFIX;
</syntaxhighlight>
*: Число доступно для чтения в little-endian и big-endian форматах
*: Число для более свежей версии всегда будет больше, чем для предыдущей, в том числе, когда прошивка переходит из тестовой в стабильную
*: Таким образом обеспечивается корректное сравнение версий:
*:<syntaxhighlight lang="js">
1.2.3-rc1 < 1.2.3-rc10 < 1.2.3 < 1.2.3+wb1 < 1.2.3+wb10
</syntaxhighlight>
 
{{Wbincludes:Header Registers Universal|fw=true}}
|-
| class ="text-right" | 200-219
| 0x00C8 - 0x00DB
| Input
| RO
| string
| Модель устройства
|
| rowspan="7" | 3.0.0
|-
| class ="text-right" | 320
| 0x0140
| rowspan="4" | Input
| rowspan="4" | RO
| rowspan="4" | u16 
| rowspan="4" | Версия прошивки в числовом формате
| MAJOR
|-
| class ="text-right" | 321
| 0x0141
| MINOR
|-
| class ="text-right" | 322
| 0x0142
| PATCH
|-
| class ="text-right" | 323
| 0x0143
| SUFFIX
|-
| class ="text-right" | 324-325
| 0x0144 - 0x0145
| Input
| RO
| u32
| Версия прошивки в числовом формате
|-
| class ="text-right" | 326-327
| 0x0146 - 0x0147
| Input
| RO
| u32
| Версия прошивки в Big Endian формате
|-
|}
 
=== Прошивка 1.0 ===
Устаревшая версия прошивки.


{|  border="1" class="wikitable" style="text-align:center"
{|  border="1" class="wikitable" style="text-align:center"

Версия 16:38, 24 марта 2022

Регистры устройства

Здесь описываются регистры прошивки версии 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 кГц


Общие для всех Modbus-устройств Wiren Board регистры
Адрес Параметры регистра Описание Значения
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.
    


Регистры для хранения версии прошивки в устройствах с быстрым Modbus
Адрес Параметры регистра Описание Значения
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 формате