Modbus-client: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 119: | Строка 119: | ||
Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду). | Здесь не указан адрес, который нужно задать устройству и устройство получит неизвестный адрес. Для исправления, нужно обратиться к устройству по специальному адресу 0x00 (см. первую команду). | ||
===Чтение сигнатуры устройства== | |||
<!--T:23--> | <!--T:23--> | ||
Прочтем регистры релейного модуля WB-MR14 с адресом 0x01, содержащие сигнатуру устройства, WBMR14. Известно, что сигнатура хранится по адресу 200 и занимает 6 регистров. | |||
<!--T:24--> | <!--T:24--> | ||
Строка 146: | Строка 145: | ||
В старых версиях прошивки <syntaxhighlight lang="bash">| xxd -r -p</syntaxhighlight> не было нужно. | В старых версиях прошивки <syntaxhighlight lang="bash">| xxd -r -p</syntaxhighlight> не было нужно. | ||
===Включение реле релейного модуля=== | |||
<!--T:28--> | <!--T:28--> | ||
На модуле WB-MR14 включим реле с номером 6 (адреса регистрв флагов начинаются с нуля, помним об этом!). Используем для этого команду 0x05 (Write Single Coil): | |||
<syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x05 -r0x05 0x01</syntaxhighlight> | <syntaxhighlight lang="bash">modbus_client --debug -mrtu -pnone -s2 /dev/ttyRS485-1 -a1 -t0x05 -r0x05 0x01</syntaxhighlight> | ||
Ответ: | Ответ: | ||
Строка 170: | Строка 159: | ||
<!--T:29--> | <!--T:29--> | ||
Обратите внимание, утилита modbus_client при записи заменила 1 на 0x00FF, поскольку именно это значение служит для включения реле. Любое ненулевое значение будет заменено на 0x00FF, поэкспериментируйте. | Обратите внимание, утилита modbus_client при записи заменила 1 на 0x00FF, поскольку именно это значение служит для включения реле. Любое ненулевое значение будет заменено на 0x00FF, поэкспериментируйте. | ||
===Одновременное включение нескольких реле=== | |||
<!--T:30--> | <!--T:30--> | ||
Включим все нечетные реле и выключим все четные. Для этого используем функцию 15 (Write Multiple Coils). В модуле всего 14 реле, так что мы должны передать значения для 14 регистров с 0 по 13. | |||
<!--T:31--> | <!--T:31--> | ||
Строка 184: | Строка 174: | ||
<01><0F><00><00><00><0E><D4><0F> | <01><0F><00><00><00><0E><D4><0F> | ||
SUCCESS: written 14 elements!</syntaxhighlight> | SUCCESS: written 14 elements!</syntaxhighlight> | ||
<!--T:32--> | <!--T:32--> |