Перейти к содержанию

Навигация

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

Строка 122: Строка 122:
Обратите внимание, утилита modbus_client при записи заменила 1 на 0x00FF, поскольку именно это значение служит для включения реле. Любое ненулевое значение будет заменено на 0x00FF, поэкспериментируйте.
Обратите внимание, утилита modbus_client при записи заменила 1 на 0x00FF, поскольку именно это значение служит для включения реле. Любое ненулевое значение будет заменено на 0x00FF, поэкспериментируйте.


6. Включим все четные реле и выключим все нечетные. Для этого используем функцию 15 (Write Multiple Coils). В модуле всего 14 реле, так что мы должны передать значения для 14 регистров с 0 по 13.
6. Включим все нечетные реле и выключим все четные. Для этого используем функцию 15 (Write Multiple Coils). В модуле всего 14 реле, так что мы должны передать значения для 14 регистров с 0 по 13.


<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/ttyAPP1 -a1 -t0x0f -r0x00 -c 14 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000 0x00FF 0x0000</syntaxhighlight>
Строка 132: Строка 132:
<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>
Обратите внимание на структуру запроса:
[01] — адрес
[0F] — код функции Write Multiple Coils
[00][00] — адрес первого регистра флагов для записи
[00][0E] — количество элементов для записи (14)
[02] — количество байт данных
[55][15] — 01010101 00010101 (помним про big-endian формат представления данных: первое реле — младший бит первого байта, 8 реле — старший бит первого байта, 9 реле — младший бит второго байта)
[1A][97] — CRC16
А так же на структуру ответа:
<01> — адрес
<0F> — код функции Write Multiple Coils
<00><00> — адрес первого регистра флагов для записи
<00><0E> — количество записанных регистров
<D4><0F> — CRC16
5813

правок