Python Minimal Modbus Long Integer
Получил Modbus RTU, работающий с ПЛК для всех переменных, но 32-битные целочисленные значения в двойном слове, по-видимому, имеют проблему с избыточным кругом.
Код ПЛК делится на несколько состояний, запускаемых битами, чтобы исключить любые проблемы синхронизации. Сначала ПЛК записывает ноль для первых 14 чисел двойного слова от DD1 до DD15. При следующем переходе битов DD1 к DD4 получает максимальное отрицательное значение -2147483648.
Следующие DD6-DD9 получают 255. Следующие DD11-DD14 получают 123456. DD5 и DD10 намеренно оставляются в виде нулей.
ПЛК Dataview показывает все эти значения правильно.
Когда я запускаю код Python с Minimal Modbus, данные считываются правильно для всех значений, кроме DD5 (00FF), DD9 (0000), DD10(E240) и DD14 (0000).
Код Python3.6, чтобы прочитать это:
import minimalmodbus
rawDD = clickplc1.read_long(DDadr_plc, 3,True)
Я перепроверил это с чтением в группе
reglist = clickplc1.read_registers(DDadr_plc, 30, functioncode=3)
и qModMaster. Оба показали одинаковые проблемы с прочитанными словами группы.
Не уверен, что проверить?