При реализации одного из проектов столкнулся с необходимостью диспетчеризации оборудования производства ГК «ВЗЛЁТ» (расходомеры, теплосчетчики).
Хотелось бы поделиться опытом.
Измерительные приборы ГК «ВЗЛЁТ» поддерживают стандартный протокол ModBus RTU.
Однако, при составлении шаблона драйвера ModBus и подключении к шине ModBus необходимо учитывать некоторые «ньюансы».
1. В описании регистров ModBus, размещенном на сайте ГК «ВЗЛЁТ», для некоторых переменных неверно указан тип данных.
Например в описании Теплосчетчика ТСРВ, для значения общей накопленной тепловой энергии Qтс (начальный регистр 8040h), указан тип данных long+float.
На самом деле, значение Qтс в регистрах 8040h-8041h, 8042h-8043h представлено в формате int+float.
2. Для получения накопительных параметров (например, общая тепловая энергия Q, общая тепловая мощность Е и т.д.) необходимо запрашивать СТРОГО 4 регистра (2 первых регистра – целая часть, 2 вторых регистра – дробная часть).
3. Эти регистры являются Регистрами ввода (не HoldingRegisters), поэтому для них необходимо использовать функцию чтения 03h.
4. На клеммах интерфейса RS485 перепутаны контакты А и В.
К контакту «А» разъёма RS485 прибора ВЗЛЁТ необходимо подключать «-» шины RS485.
PS
Некоторое обсуждение особенностей опроса есть на форуме ГК Взлет https://vzljot.ru/forum/index.php?topic=5794.0