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

Нет описания правки
Строка 78: Строка 78:


== Примеры использования с оборудованием Wiren Board == <!--T:15-->
== Примеры использования с оборудованием Wiren Board == <!--T:15-->
===Проверка подключения к устройству и считывание адреса===
<!--T:21-->
Все устройства Wiren Board с протоколом Modbus RTU хранят адрес в регистре 0x80, поэтому для проверки подключения удобно считывать именно его.
Читаем содержимое регистра 0x80 с устройства с адреса 2 с помощью функции 0x03 (Read Holding Registers):
<!--T:22-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a2 -t0x03 -r0x80</syntaxhighlight>   
Ответ:
<syntaxhighlight lang="bash">Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[02][03][00][80][00][01][85][D1]
Waiting for a confirmation...
<02><03><02><00><02><7D><85>
SUCCESS: read 1 of elements:
        Data: 0x0002</syntaxhighlight>
===Запись нового адреса===


<!--T:17-->
<!--T:17-->
1. Запись нового адреса устройства WB-MR14 в регистр 0x80, используя функцию 0x06 (Write Single Register).
Записываем новый адреса устройства в регистр 0x80, используя функцию 0x06 (Write Single Register):


<!--T:18-->
<!--T:18-->
Строка 101: Строка 119:
Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду).
Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду).


<!--T:21-->
----
2. Проверка: читаем содержимое регистра 0x80 (теперь уже с устройства с адресом 0x02) с помощью функции 0x03 (Read Holding Registers). Заметим, что в устройствах Wiren Board функции 0x03 и 0x04 взаимозаменяемы и приводят к одному и тому же результату.


<!--T:22-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a2 -t0x03 -r0x80</syntaxhighlight>   
Ответ:
<syntaxhighlight lang="bash">Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[02][03][00][80][00][01][85][D1]
Waiting for a confirmation...
<02><03><02><00><02><7D><85>
SUCCESS: read 1 of elements:
        Data: 0x0002</syntaxhighlight>


<!--T:23-->
<!--T:23-->