eddy_em: (Default)
[personal profile] eddy_em
Добавил в утилиту для работы с модбас-устройствами "по словарю" еще и "псевдонимы". Позволяет вместо того, чтобы вспоминать, как там запустить мотор или сбросить ошибку, просто дать команду "cw/ccw/clearerr"… Параметров пока негусто:
  -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]", отпадет необходимость запускать терминал для тестирования какой-нибудь новой убогой релюшки со своим убогим протоколом...

Как ни презираю я модбас, все-таки пришлось с этой дрянью поработать (и даже местами на своих железках реализовать).

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 08:45 pm
Powered by Dreamwidth Studios