|
Метка: новое перенаправление |
(не показана 1 промежуточная версия 1 участника) |
Строка 1: |
Строка 1: |
| <languages/>
| | #REDIRECT [[Working with WB devices without a controller]] |
| <translate>
| |
| <!--T:1-->
| |
| {{DISPLAYTITLE:Управление устройствами Wiren Board по протоколу Modbus}}
| |
| | |
| == Параметры Modbus == <!--T:2-->
| |
| | |
| === Modbus-адрес === <!--T:3-->
| |
| Modbus-адрес устройств Wiren Board легко определить — он нанесен на наклейке (адрес указан в десятичном формате). Новый адрес устройства записывается командой WRITE_SINGLE_REGISTER в регистр хранения (holding register) с адресом 128 (0x80). Подробно о том, как определить (если адрес был изменен) или изменить Modbus-адрес модуля, написано на странице [[Определение и изменение Modbus-адреса устройств Wirenboard]].
| |
| | |
| === Команды Modbus, поддерживаемые устройством === <!--T:4-->
| |
| | |
| <!--T:5-->
| |
| Датчики Wirenboard поддерживают все основные команды Modbus. Подробнее смотрите здесь: [[Протокол Modbus#Коды функций чтения и записи регистров|Коды функций чтения и записи регистров]].
| |
| | |
| === Modbus-регистры устройства === <!--T:6-->
| |
| Данные и конфигурационные параметры Modbus-устройств хранятся в Modbus-регистрах. Для каждого типа устройств имеются свои карты Modbus-регистров, ссылки на которых приводятся на страницах соответствующих устройств.
| |
| | |
| ===Сигнатура устройства === <!--T:7-->
| |
| | |
| <!--T:8-->
| |
| По адресу 200 хранится сигнатура модуля длиной 6 байт. Сигнатура уникальна для каждой модели устройств Wiren Board и позволяет идентифицировать модель по Modbus:
| |
| | |
| <!--T:9-->
| |
| Для получения сигнатуры устройства нужно выполнить команду READ_HOLDING_REGISTERS по адресу 200 (длина 6 регистров). Запись в эту область памяти не поддерживается, при попытке записи в недопустимое место возвращается ошибка 3. Пустые места в тексте сигнатуры забиваются значением 0x00.
| |
| Начиная с регистра 220 записана дата сборки прошивки, в формате "число'''x00'''время'''x00'''" в виде строки (пример: 'Jan 27 2017 17:01:13'). Длина записи — 21 регистр.
| |
| | |
| == Управление устройствами из командной строки == <!--T:10-->
| |
| Программное обеспечение контроллера Wiren Board включает в себя утилиту modbus_client для работы с устройствами, подключенными к выходам RS-485, по протоколу Modbus, подробное описание команды находится на странице [[Modbus-client]]. Доступ к командной строке описан в статье [[SSH]].
| |
| | |
| === Пример чтения модели устройства === <!--T:11-->
| |
| Проверим, верно ли, что мы подключились именно к модулю нужного типа. (Модуль wb-mqtt-serial должен быть предварительно остановлен). По адресу 200 хранится уникальная сигнатура длиной в 6 регистров. Прочтем 6 регистров, начиная с адреса 200, и преобразуем полученный шестнадцатеричный ответ в символьную строку:
| |
| | |
| <!--T:12-->
| |
| <syntaxhighlight lang="bash">
| |
| | |
| export DEV_PORT=/dev/ttyRS485-1 #Correct this!
| |
| export DEV_ADDR=189 #Correct this!
| |
| | |
| echo -e `modbus_client --debug -mrtu -pnone -s2 $DEV_PORT \
| |
| -a$DEV_ADDR -t0x03 -r200 -c 6 | \
| |
| grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'` </syntaxhighlight>
| |
| | |
| <!--T:13-->
| |
| В результате выполнения команды получаем строку, например '''WBMS'''. Модуль WB-MS в примере имеет Modbus-адрес 189.
| |
| </translate>
| |