12 063
правки
м |
(Отметить эту версию для перевода) |
||
Строка 2: | Строка 2: | ||
<translate> | <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"|Регистр/ адрес | ||
Строка 230: | Строка 233: | ||
|- | |- | ||
<!--T:8--> | |||
|97||holding||RW||0 — 10||c | |97||holding||RW||0 — 10||c | ||
||Период между вспышками сигнальных светодиодов | ||Период между вспышками сигнальных светодиодов | ||
Строка 241: | Строка 245: | ||
<!--T:9--> | |||
|98||holding||RW||0 — 50||мс | |98||holding||RW||0 — 50||мс | ||
||Длительность вспышки светодиодов | ||Длительность вспышки светодиодов | ||
Строка 255: | Строка 260: | ||
<!--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, чтобы отключить фильтр. | ||
Строка 268: | Строка 274: | ||
<!--T:11--> | |||
|101 | |101 | ||
||input | ||input | ||
Строка 275: | Строка 282: | ||
|- | |- | ||
<!--T:12--> | |||
|102 | |102 | ||
||input | ||input | ||
Строка 283: | Строка 291: | ||
<!--T:13--> | |||
|104-105 | |104-105 | ||
||input | ||input | ||
Строка 290: | Строка 299: | ||
|- | |- | ||
<!--T:14--> | |||
|106||input||R|| || | |106||input||R|| || | ||
|| Служебный регистр INPUT_REG_SGPC3_BASELINE | || Служебный регистр INPUT_REG_SGPC3_BASELINE | ||
Строка 300: | Строка 310: | ||
|- | |- | ||
<!--T:15--> | |||
|107||input||R|| || | |107||input||R|| || | ||
|| Служебный регистр INPUT_REG_SGPC3_RAW_SIGNAL | || Служебный регистр INPUT_REG_SGPC3_RAW_SIGNAL | ||
Строка 324: | Строка 335: | ||
<!--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"|все | ||
Строка 415: | Строка 427: | ||
|- | |- | ||
<!--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" | ||
!Начальный адрес || Количество || Назначение || В модификациях | !Начальный адрес || Количество || Назначение || В модификациях | ||
Строка 447: | Строка 461: | ||
|} | |} | ||
===Сигнатура устройства === | ===Сигнатура устройства === <!--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;" | Модуль | ||
Строка 468: | Строка 484: | ||
|} | |} | ||
<!--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> | </translate> |
правки