I've been trying to set WMaxLimPct (part of model 123, immediate controls) on my APSystems ECU-R / YC600 and it does not work.
model.WMaxLimPct.cvalue = 100.0
model.write() # this gives a timeout
The problem seems to be that the other end does not support function code 0x06 (single-register write), but only 0x10 (multi-register write), while pysunspec2 contains some logic to use single-register writes if only a single change was done on the model.
By manually disabling the check (changing if count == 1: in sunspec2/modbus/modbus.py line 781 to if False), writes always use function 0x10 and they succeed; values get updated correctly.
I've been trying to set WMaxLimPct (part of model 123, immediate controls) on my APSystems ECU-R / YC600 and it does not work.
The problem seems to be that the other end does not support function code 0x06 (single-register write), but only 0x10 (multi-register write), while
pysunspec2contains some logic to use single-register writes if only a single change was done on the model.By manually disabling the check (changing
if count == 1:insunspec2/modbus/modbus.pyline 781 toif False), writes always use function 0x10 and they succeed; values get updated correctly.