Applies To: |
|
Summary: |
My Krohne flow meter supports only modbus
digital addresses greater than 001000. But, when I try to read a
modbus address in the range 001001-001008 the error "Address is out
of range" is returned.
I can see from the kernel debug log that Citect is requesting a 16-bit block of data beginning at address 000993 even though I have no such address configured in my variable tag database. Debug <port name> To READ 0000 <port name> <IOServer> 000993 16 Is there a way to force Citect to only read addresses above 001000 so my read request will succeed? |
Solution: |
By default, Citect will block read
requests for the Modbus protocol into a 16-bit block starting on a
16-bit boundary. So if a read request is made for an address in the
range 001001-001008, Citect will block the read request into a
16-bit block beginning at address 00993. If an address within the
block does not exist on the I/O device then the read will fail.
The solution in this case is to allow the blocking of reads on an 8-bit boundary by adding 0x1000 to the OPTIONS field for the Modbus protocol specification in the PROTDIR.DBF located in the Citect\Bin folder (new value = 0x137f). You must perform a full re-compile of the project and restart Citect. The new debug log should look like the following and the read request should now succeed: Debug <port name> To READ 0000 <port name> <IOServer> 001001 8 |
Keywords: |
Related Links
Attachments