Modbus-client: различия между версиями
Kilpio (обсуждение | вклад) |
Kilpio (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Общая информация == | |||
Утилита modbus-client используется для коммуникации по протоколам Modbus RTU и Modbus TCP из командной строки. Утилита modbus-client поставляется вместе с набором ПО контроллера Wiren Board. Утилита написана на C и использует открытую библиотеку [https://github.com/stephane/libmodbus libmodbus]. Форк этой утилиты, поставляемый с устройствами Wiren Board хранится [https://github.com/contactless/modbus-utils здесь]. Основная задача этой утилиты — ее использование в качестве отладочного средства или средства настройки Modbus-устройств. Поскольку на функционирующем контроллере Wiren Board запущен драйвер modbus, его необходимо останавливать перед работой с modbus-client — вместе они не могут использовать один и тот же порт RS-485. Команды останова сервиса | Утилита modbus-client используется для коммуникации по протоколам Modbus RTU и Modbus TCP из командной строки. Утилита modbus-client поставляется вместе с набором ПО контроллера Wiren Board. Утилита написана на C и использует открытую библиотеку [https://github.com/stephane/libmodbus libmodbus]. Форк этой утилиты, поставляемый с устройствами Wiren Board хранится [https://github.com/contactless/modbus-utils здесь]. Основная задача этой утилиты — ее использование в качестве отладочного средства или средства настройки Modbus-устройств. Поскольку на функционирующем контроллере Wiren Board запущен драйвер modbus, его необходимо останавливать перед работой с modbus-client — вместе они не могут использовать один и тот же порт RS-485. Команды останова сервиса | ||
Строка 5: | Строка 5: | ||
<syntaxhighlight lang="bash">service wb-mqtt-serial stop</syntaxhighlight> | <syntaxhighlight lang="bash">service wb-mqtt-serial stop</syntaxhighlight> | ||
== Вызов и аргументы командной строки == | |||
Вызов modbus_client без аргументов выдает краткое описание ключей команды: | Вызов modbus_client без аргументов выдает краткое описание ключей команды: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Строка 51: | Строка 51: | ||
* '''-p''' — номер TCP-порта устройства, с которым взаимодействует контроллер. | * '''-p''' — номер TCP-порта устройства, с которым взаимодействует контроллер. | ||
== Примеры использования == |
Версия 17:25, 8 декабря 2016
Общая информация
Утилита modbus-client используется для коммуникации по протоколам Modbus RTU и Modbus TCP из командной строки. Утилита modbus-client поставляется вместе с набором ПО контроллера Wiren Board. Утилита написана на C и использует открытую библиотеку libmodbus. Форк этой утилиты, поставляемый с устройствами Wiren Board хранится здесь. Основная задача этой утилиты — ее использование в качестве отладочного средства или средства настройки Modbus-устройств. Поскольку на функционирующем контроллере Wiren Board запущен драйвер modbus, его необходимо останавливать перед работой с modbus-client — вместе они не могут использовать один и тот же порт RS-485. Команды останова сервиса
для WB4:
service wb-homa-modbus stop
и для WB5:
service wb-mqtt-serial stop
Вызов и аргументы командной строки
Вызов modbus_client без аргументов выдает краткое описание ключей команды:
modbus_client [--debug] [-m {rtu|tcp}] [-a<slave-addr=1>] [-c<read-no>=1]
[-r<start-addr>=100] [-t<f-type>] [-o<timeout-ms>=1000] [{rtu-params|tcp-params}] serialport|host [<write-data>]
NOTE: if first reference address starts at 0, set -0
f-type:
(0x01) Read Coils, (0x02) Read Discrete Inputs, (0x05) Write Single Coil
(0x03) Read Holding Registers, (0x04) Read Input Registers, (0x06) WriteSingle Register
(0x0F) WriteMultipleCoils, (0x10) Write Multiple register
rtu-params:
b<baud-rate>=9600
d{7|8}<data-bits>=8
s{1|2}<stop-bits>=1
p{none|even|odd}=even
tcp-params:
p<port>=502
Examples (run with default mbServer at port 1502):
Write data: modbus_client --debug -mtcp -t0x10 -r0 -p1502 127.0.0.1 0x01 0x02 0x03
Read that data: modbus_client --debug -mtcp -t0x03 -r0 -p1502 127.0.0.1 -c3
Значения параметров (адрес, таймаут, тип функции и т.д.) можно указывать как в шестнадцатеричном (0x**), так и в десятичном виде.
- Первый аргумент --debug — произвольный. Он может указываться в любой позиции и включает отладку, выводя на экран шестнадцатеричные коды отправляемых и принимаемых данных.
- Следующий аргумент -m. Он должен указываться первым в командной строке, или вторым, если первый аргумент — --debug или имя файла порта RS-485. Аргумент определяет тип используемого протокола -mrtu — Modbus RTU, -mtcp — Modbus TCP.
- Аргумент -a задает Modbus-адрес устройства, к которому мы обращаемся. Если аргумент не используется, то по умолчанию выбирается адрес 0x01.
- Аргумент -с определяет, какое количество элементов мы запрашиваем. По умолчанию — один.
- Аргумент -r задает начальный адрес для чтения или записи. По умолчанию используется значение 100 (0x64).
- Аргумент -t указывает код функции Modbus. Кратко они перечислены в выводе modbus_client, подробнее значения кодов описаны на странице Протокол Modbus.
- Аргумент -o задает таймаут в миллисекундах (по умолчанию 1000).
- Аргумент -0 (ноль) уменьшает на единицу адрес, задаваемый аргументом -r. Это может быть полезным при работе с устройствами с нестандартной адресацией.
Затем указываются специфические параметры протокола (Modbus RTU или Modbus TCP). Несмотря на информацию, выводимую в подсказке, эти параметры также начинаются со знака '-' (минус).
Для Modbus RTU:
- -b — скорость передачи данных по последовательной линии (по умолчанию — 9600).
- -d — количество передаваемых бит данных (7 или 8, по умолчанию — 8).
- -s — количество стоповых битов (1 или 2, по умолчанию — 1).
- -p — контроль четности (-p none — нет проверки, -p even — передается бит контроля на четность, -p odd — передается бит контроля на нечетность). По умолчанию передается бит контроля на четность(E).
Для Modbus TCP:
- -p — номер TCP-порта устройства, с которым взаимодействует контроллер.