The two screen shots you posted are nearly incomprehensible, which is surprising because the 48 page Centork Modbus manual for the Modbus option card is one of the most comprehensive and best written Modbus manuals I've ever seen and the info on the pages you showed are not in that manual. http://www.centork.com//en/document/download/2143
I am not a Centork expert, so I don't know how many different lines or versions of Modbus there might be, but is there any chance you're reading the wrong Modbus document?
The map in the document I found shows Holding Registers like instantaneous torque at (4)0003 (zero based register 2) or Valve position is at (4)0004 (zero based register 3) and the bit mapping for registers 0 and 1. Pretty straight forward.
Your simulator has to be a Modbus master, because the actuator is a Modbus slave.
Thanks for your reply, as you mentioned there are many versions of centrok actuator and this is the complete manual for our model from centrok website http://www.centork.com//en/document/download/733
I'm confused because position command and position feedback is the same register number 0 as per datasheet, this right or not, or this is the starting address not the exact address for the register.
I read it like you do, data word 0000 has the position value in bits 8 -15. If you want to change the position, you need to write to data word 0000 with the new position value in bits 8-15.
page 51 states:
Nominal: This variable (Nominal) is the % of opening the user wants to open the valve
and on page 53
The following data will be exchanged when a Read Status 0x01 instruction is sent.
Their nomenclature for the slave map on page 60 is unique-ish:
0^4 means Modbus register 0, bit 4 (in a 16 bit data word)
0^7 means Modbus register 0, bit 7 (in a 16 bit data word)
1^5 means Modbus register 1, bit 5 Centronik DIP switch 5
I'm guessing, because the manual omits the list of supported Function Codes or memory areas, that "Read Status 0x01" is probably Modbus Function Code 0x01, "Read Coils". That would read the position value - the high order bits 8-15 in data word 0000.
I hope so, because if you actually have to change the status of word 0000, bit 0 (Read Status) to the value 1 in order to read the position value, you first need to know what position value to include it in bits 8-15. That doesn't make sense.
In the absence of supported Function codes, the master might use either Function Code (FC) 15 (0x0F) (Write Multiple Coils), or Function Code 06 Write single (16 bit) register, to write a setpoint/position value to a dataword that is bit packed.
It's a matter for empirical experimentation to see what works.