"Модбасятина"
Jul. 17th, 2025 05:13 pmДобавил в утилиту для работы с модбас-устройствами "по словарю" еще и "псевдонимы". Позволяет вместо того, чтобы вспоминать, как там запустить мотор или сбросить ошибку, просто дать команду "cw/ccw/clearerr"… Параметров пока негусто:
Я не утруждал себя отдельным флагом "-S" для запуска сервера, как в некоторых других: клиента все равно нет, а уж если указан "node", то значит сервер. "Псевдонимы" только в серверном режиме работают. А в standalone-режиме можно писать в любые регистры без проверки (мало ли: вдруг не было в "словаре" этого предусмотрено).
Дамп можно запускать в новые файлы (в этом случае автоматом закрывается старый).
У самого сервера, помимо команд вида "alias" или "register [= value]", есть и команды:
Если сюда еще и добавить работу с "read/write coil[s]", отпадет необходимость запускать терминал для тестирования какой-нибудь новой убогой релюшки со своим убогим протоколом...
Как ни презираю я модбас, все-таки пришлось с этой дрянью поработать (и даже местами на своих железках реализовать).
-D, --dictionary=arg file with dictionary (format: code register value writeable)
-N, --node=arg node "IP", or path (could be "\0path" for anonymous UNIX-socket)
-O, --outdic=arg output dictionary for full device dump by input dictionary registers
-R, --readc registers (by keycodes, checked by dictionary) to read; multiply parameter
-U, --unixsock UNIX socket instead of INET
-W, --writec write new value to register by keycode (format: keycode=val); multiply parameter
-a, --alias=arg file with aliases in format 'name : command to run'
-b, --baudrate=arg modbus baudrate (default: 9600)
-d, --device=arg modbus device (default: /dev/ttyUSB0)
-h, --help show this help
-k, --dumpkey dump entry with this keycode; multiply parameter
-o, --outfile=arg file with parameter's dump
-r, --readr registers (by address) to read; multiply parameter
-s, --slave=arg slave ID (default: 1)
-t, --dumptime=arg dumping time interval (seconds, default: 0.1)
-v, --verbose verbose level (each -v adds 1)
-w, --writer write new value to register (format: reg=val); multiply parameter
Я не утруждал себя отдельным флагом "-S" для запуска сервера, как в некоторых других: клиента все равно нет, а уж если указан "node", то значит сервер. "Псевдонимы" только в серверном режиме работают. А в standalone-режиме можно писать в любые регистры без проверки (мало ли: вдруг не было в "словаре" этого предусмотрено).
Дамп можно запускать в новые файлы (в этом случае автоматом закрывается старый).
У самого сервера, помимо команд вида "alias" или "register [= value]", есть и команды:
clodump: stop dump and close current dump file newdump: open new dump file or get name of current list: list all dictionary (as getter) or given register (as setter: by codename or value) alias: list all of aliases (as getter) or with given name (by setter)
Если сюда еще и добавить работу с "read/write coil[s]", отпадет необходимость запускать терминал для тестирования какой-нибудь новой убогой релюшки со своим убогим протоколом...
Как ни презираю я модбас, все-таки пришлось с этой дрянью поработать (и даже местами на своих железках реализовать).