Перейти к содержанию

Навигация

Sensors Modbus Management: различия между версиями

Нет описания правки
Метка: visualeditor
(не показано 7 промежуточных версий 2 участников)
Строка 1: Строка 1:
<languages/>
<translate>
<!--T:1-->
{{DISPLAYTITLE:Управление датчиками Wirenboard по протоколу Modbus}}
{{DISPLAYTITLE:Управление датчиками Wirenboard по протоколу Modbus}}


== Параметры Modbus ==
== Параметры Modbus == <!--T:2-->


=== Modbus-адрес ===
=== Modbus-адрес === <!--T:3-->
Modbus-адрес устройств Wiren Board легко определить — он нанесен на наклейке (адрес указан в десятичном формате). Новый адрес устройства записывается командой WRITE_SINGLE_REGISTER в регистр хранения (holding register) с адресом 128 (0x80). Подробно о том, как определить (если адрес был изменен) или изменить Modbus-адрес модуля, написано на странице [[Определение и изменение Modbus-адреса устройств Wirenboard]].
Modbus-адрес устройств Wiren Board легко определить — он нанесен на наклейке (адрес указан в десятичном формате). Новый адрес устройства записывается командой WRITE_SINGLE_REGISTER в регистр хранения (holding register) с адресом 128 (0x80). Подробно о том, как определить (если адрес был изменен) или изменить Modbus-адрес модуля, написано на странице [[Определение и изменение Modbus-адреса устройств Wirenboard]].


=== Команды Modbus, поддерживаемые устройством ===
=== Команды Modbus, поддерживаемые устройством === <!--T:4-->


<!--T:5-->
Датчики Wirenboard поддерживают все основные команды Modbus. Подробнее смотрите здесь: [[Протокол Modbus#Коды функций чтения и записи регистров|Коды функций чтения и записи регистров]].
Датчики Wirenboard поддерживают все основные команды Modbus. Подробнее смотрите здесь: [[Протокол Modbus#Коды функций чтения и записи регистров|Коды функций чтения и записи регистров]].


=== Карта регистров хранения (Holding Registers)===
=== Карта регистров хранения (Holding Registers)=== <!--T:6-->


<!--T:7-->
{|  border="1" class="wikitable" style="text-align:center"
{|  border="1" class="wikitable" style="text-align:center"
!rowspan="2"|Регистр/ адрес
!rowspan="2"|Регистр/ адрес
Строка 195: Строка 201:
|
|
|-
|-
|91||holding||RW||20 (200 ms)||× 10 ms
|91||holding||RW||20 (200 ms)||× 10 ms
||Время усреднения шума
||Время усреднения шума
Строка 202: Строка 209:
|S
|S
|S
|S
|
|-
 
|92
||holding
||RW||0||x0.0625||Служебный регистр HOLD_REG_SPL_RAW_OFFSET - сдвиг значения АЦП
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|S
|S
|S
|4.9.0
|-
 
|93
||holding
||RW||0||x0.1dB||Служебный регистр HOLD_REG_SPL_OFFSET - поправка к значению уровня шума
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|S
|S
|S
|4.9.0
|-
 
 
 
 
|-
|-
|95
|95
Строка 227: Строка 260:
|-
|-


<!--T:8-->
|97||holding||RW||0 — 10||c
|97||holding||RW||0 — 10||c
||Период между вспышками сигнальных светодиодов  
||Период между вспышками сигнальных светодиодов  
Строка 238: Строка 272:




<!--T:9-->
|98||holding||RW||0 — 50||мс
|98||holding||RW||0 — 50||мс
||Длительность вспышки светодиодов  
||Длительность вспышки светодиодов  
Строка 252: Строка 287:




<!--T:10-->
|99||holding||RW||16|| 1 = 0.0625C
|99||holding||RW||16|| 1 = 0.0625C
||(доступно с версии прошивки 3.10.0) Фильтр подозрительных значений для датчиков 1-Wire (85.000C, 127.937C). Значения отбрасываются, если предыдущее отличается от подозрительного больше, чем на значение регистра*0.0625C. Запишите 0, чтобы отключить фильтр.
||(доступно с версии прошивки 3.10.0) Фильтр подозрительных значений для датчиков 1-Wire (85.000C, 127.937C). Значения отбрасываются, если предыдущее отличается от подозрительного больше, чем на значение регистра*0.0625C. Запишите 0, чтобы отключить фильтр.
Строка 263: Строка 299:




|100
||input
||R||||||Служебный регистр HOLD_REG_SPL_RAW_INT
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|S
|S
|S
|
|-




<!--T:11-->
|101
|101
||input
||input
Строка 272: Строка 320:
|-
|-


<!--T:12-->
|102
|102
||input
||input
Строка 280: Строка 329:




|103
||holding
||RW||||||Служебный регистр HOLD_REG_ILLUMINANCE_MODE
|<nowiki>+</nowiki>
|<nowiki>+</nowiki>
|<nowiki>+</nowiki>
|<nowiki>-</nowiki>
|<nowiki>-</nowiki>
|
|-
<!--T:13-->
|104-105
|104-105
||input
||input
Строка 287: Строка 349:
|-
|-


<!--T:14-->
|106||input||R|| ||  
|106||input||R|| ||  
|| Служебный регистр INPUT_REG_SGPC3_BASELINE
|| Служебный регистр INPUT_REG_SGPC3_BASELINE
Строка 297: Строка 360:
|-
|-


<!--T:15-->
|107||input||R|| ||  
|107||input||R|| ||  
|| Служебный регистр INPUT_REG_SGPC3_RAW_SIGNAL
|| Служебный регистр INPUT_REG_SGPC3_RAW_SIGNAL
Строка 321: Строка 385:




<!--T:16-->
| 110 || holding || RW || 96 ||  baud rate / 100 || скорость порта RS-485, '''делённая на 100'''. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 <br>([[UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]])
| 110 || holding || RW || 96 ||  baud rate / 100 || скорость порта RS-485, '''делённая на 100'''. Допустимые скорости: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 <br>([[UART_Communication_Settings|Настройка параметров обмена данными по RS-485 для modbus-устройств Wiren Board]])
|colspan="5"|все
|colspan="5"|все
Строка 412: Строка 477:
|-
|-


<!--T:17-->
|}
|}


===Карта регистров флагов (Coils)===
===Карта регистров флагов (Coils)=== <!--T:18-->
Регистры, связанные с ИК-управлением, описаны в статье [[WB-MSx_Consumer_IR_Manual]].
Регистры, связанные с ИК-управлением, описаны в статье [[WB-MSx_Consumer_IR_Manual]].


<!--T:19-->
{|  border="1" class="wikitable" style="text-align:center"
{|  border="1" class="wikitable" style="text-align:center"
!Начальный адрес || Количество || Назначение || В модификациях
!Начальный адрес || Количество || Назначение || В модификациях
Строка 432: Строка 499:
|3
|3
|1
|1
|Включение датчика CO2
| style="text-align:left"|Включение датчика CO2 (1-вкл, 0-выкл)
|WB-MSW v.3
|WB-MSW v.3
|4.1.0
|4.1.0
Строка 444: Строка 511:
|}
|}


===Сигнатура устройства ===
===Сигнатура устройства === <!--T:20-->


<!--T:21-->
По адресу 200 хранится сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:
По адресу 200 хранится сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:


<!--T:22-->
{| class="wikitable"
{| class="wikitable"
! style="font-weight: bold;" | Модуль
! style="font-weight: bold;" | Модуль
Строка 465: Строка 534:
|}
|}


<!--T:23-->
Для получения сигнатуры устройства нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00.  
Для получения сигнатуры устройства нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00.  
Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.
Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.


== Управление модулем из командной строки ==
== Управление модулем из командной строки == <!--T:24-->
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].
Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].


=== Пример чтения регистров ===
=== Пример чтения регистров === <!--T:25-->
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный шестнадцатеричный ответ в символьную строку:
Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный шестнадцатеричный ответ в символьную строку:


<!--T:26-->
<syntaxhighlight lang="bash">echo  -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 \
<syntaxhighlight lang="bash">echo  -e `modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 \
-a1 -t0x03 -r200 -c 6 | \
-a1 -t0x03 -r200 -c 6 | \
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight>
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight>


<!--T:27-->
В результате выполнения команды получаем строку, например '''WBMS'''. Модуль WB-MS в примере имеет Modbus-адрес 1.
В результате выполнения команды получаем строку, например '''WBMS'''. Модуль WB-MS в примере имеет Modbus-адрес 1.
</translate>