Hello, i'm trying to write a DeepSea8610's device slave address register, through a Modbus TCP connection. however, when I try to write a new value I got "Illegal Data Address" over the logger info. I've already checked the OPC client connection configuration to disable the read only statement, I've turn off the span gaps option, I've turn on "Force Multiple Register Writes" tonusea Modbus Function 16
Do you have documentation that shows what register you should be writing to? Can you get a Wireshark capture?
From the logs it looks like it’s already using Write Multiple Registers, so that’s probably not the issue.
Hi Kevin, these are the registers, I have to calculate the real registers based on the offset and page shown in the documentation.
The problem is that I need to write the value on register offset 8 and its compliement on 9.
Calculating the real holding registers are 4104 and 4105
I needed to add 1 because of the 1-base configuration so they will be 4105 and 4106.
I tried also to write HRI4105 but I got the same error.
Could you help me please?
You will not be able to create Ignition OPC tags for any of the registers that are marked write-only. For those, you will need to use the
system.opc.write*() functions directly. You probably won't have any problems with spanned gaps based on that formula (the gaps are too big to span anyways).
Given the value for offset 8 is in a python variable named
sysCtlKey, you would do something like this:
system.opc.writeValues('Ignition OPC UA Server', ['[devName]HRUS4105', '[devName]HRUS4106], [sysCtlKey, ~sysCtlKey])
It works ! Thank you very much