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

м
Нет описания правки
(Отметить эту версию для перевода)
м
Строка 91: Строка 91:


<!--T:18-->
<!--T:18-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a0x00 -t0x06 -r0x80 0x02</syntaxhighlight>
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a0x00 -t0x06 -r0x80 0x02</syntaxhighlight>
Где 0x02 - адрес, который нужно задать.
Где 0x02 - адрес, который нужно задать.
Ответ:
Ответ:
<syntaxhighlight lang="bash">Data to write: 0x2
<syntaxhighlight lang="bash">Data to write: 0x2
Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[00][06][00][80][00][02][08][32]
[00][06][00][80][00][02][08][32]
Waiting for a confirmation...
Waiting for a confirmation...
Строка 106: Строка 106:
<!--T:20-->
<!--T:20-->
Пример '''неправильного''' использования команды:
Пример '''неправильного''' использования команды:
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a0x00 -t0x06 -r0x80</syntaxhighlight>
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a0x00 -t0x06 -r0x80</syntaxhighlight>
Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду).
Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду).


Строка 114: Строка 114:


  <!--T:22-->
  <!--T:22-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a2 -t0x03 -r0x80</syntaxhighlight>     
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a2 -t0x03 -r0x80</syntaxhighlight>     
Ответ:  
Ответ:  
  <syntaxhighlight lang="bash">Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
  <syntaxhighlight lang="bash">Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[02][03][00][80][00][01][85][D1]
[02][03][00][80][00][01][85][D1]
Waiting for a confirmation...
Waiting for a confirmation...
Строка 128: Строка 128:


<!--T:24-->
<!--T:24-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x03 -r200 -c 6</syntaxhighlight>
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x03 -r200 -c 6</syntaxhighlight>
Ответ:
Ответ:
<syntaxhighlight lang="bash">Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
<syntaxhighlight lang="bash">Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
Строка 139: Строка 139:
<!--T:25-->
<!--T:25-->
В ответе мы получили 6 16-битных значений, в каждом из которых содержится код одного ASCII-символа. Преобразуем их, заменив начальные '''0x00''' на '''/x''' и удалив пробелы, к виду \x57 и т.д., который понятен команде echo, и выведем на экран получившееся:
В ответе мы получили 6 16-битных значений, в каждом из которых содержится код одного ASCII-символа. Преобразуем их, заменив начальные '''0x00''' на '''/x''' и удалив пробелы, к виду \x57 и т.д., который понятен команде echo, и выведем на экран получившееся:
<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/ttyRS485-1 \
-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'`| xxd -r -p </syntaxhighlight>
grep Data | sed -e 's/0x00/\\\x/g' -e 's/Data://' -e 's/\s//g'`| xxd -r -p </syntaxhighlight>
Строка 153: Строка 153:
4. Определим текущий адрес устройства, подключенного к Wiren Board. Адрес нам неизвестен и мы не хотим его менять.
4. Определим текущий адрес устройства, подключенного к Wiren Board. Адрес нам неизвестен и мы не хотим его менять.
Для этого в командной строке выполним циклическую команду опроса регистра 0x80 устройств с адресами с 1 по 247:
Для этого в командной строке выполним циклическую команду опроса регистра 0x80 устройств с адресами с 1 по 247:
<syntaxhighlight lang="bash">root@wirenboard:~# for i in {1..247}; do modbus_client -mrtu /dev/ttyAPP1 --debug -a$i -t3 -r0x80 -s2 -pnone; done 2>/dev/null | grep Data: </syntaxhighlight>
<syntaxhighlight lang="bash">root@wirenboard:~# for i in {1..247}; do modbus_client -mrtu /dev/ttyRS485-1 --debug -a$i -t3 -r0x80 -s2 -pnone; done 2>/dev/null | grep Data: </syntaxhighlight>
Ответ:     
Ответ:     
<syntaxhighlight lang="bash">        Data: 0x0072</syntaxhighlight>
<syntaxhighlight lang="bash">        Data: 0x0072</syntaxhighlight>
Строка 161: Строка 161:
----
----
5. На модуле WB-MR14 включим реле с номером 6 (адреса регистрв флагов начинаются с нуля, помним об этом!). Используем для этого команду 0x05 (Write Single Coil):
5. На модуле WB-MR14 включим реле с номером 6 (адреса регистрв флагов начинаются с нуля, помним об этом!). Используем для этого команду 0x05 (Write Single Coil):
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x05 -r0x05 0x01</syntaxhighlight>
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x05 -r0x05 0x01</syntaxhighlight>
Ответ:
Ответ:
<syntaxhighlight lang="bash">Data to write: 0x1
<syntaxhighlight lang="bash">Data to write: 0x1
Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][05][00][05][FF][00][9C][3B]
[01][05][00][05][FF][00][9C][3B]
Waiting for a confirmation...
Waiting for a confirmation...
Строка 178: Строка 178:


<!--T:31-->
<!--T:31-->
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyAPP1 -a1 -t0x0f -r0x00 -c 14 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000</syntaxhighlight>
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x0f -r0x00 -c 14 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000</syntaxhighlight>
Ответ:
Ответ:
<syntaxhighlight lang="bash">Data to write: 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00  
<syntaxhighlight lang="bash">Data to write: 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00 0xff 0x00  
Opening /dev/ttyAPP1 at 9600 bauds (N, 8, 2)
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[01][0F][00][00][00][0E][02][55][15][1A][97]
[01][0F][00][00][00][0E][02][55][15][1A][97]
Waiting for a confirmation...
Waiting for a confirmation...
237

правок