AC800M Controller as Modbus Slave
Invensys side act as master and AC800M as slave
Invensy need to accesses all type of registers in the below range
1-9999 0000 to 270E Discrete Output Coils 10001-19999 0000 to 270E Discrete Input Contacts 30001-39999 0000 to 270E Analog Input Registers 40001-49999 0000 to 270E Analog Output Holding Registers
In ABB side we have only %MW and %MX for accessing the variable, Invensys can read with Function code 4 first address only if the address in AC800M Controller is configured as %MW1
Is this configuration is correct or not ?
Addressing format is correct ?
The leading digit in the modbus address is used to define the register or coil type. So ....
MX0001 - is boolean Read (input) Coil 1
MX1001 - is boolean ReadWrite (holding) coil 1
MW3001 - is integer read (input) Register 1
MW4001 - is integer read/write (holding) Register 1
All four are the same ADDRESS - ie they are all Address=1. And the register type can be assumed from the modbus Function Code that is used to read or write the data from that address.
Hence, Many implementations of modbus just ignore the address type info in the leading digit altogether. Which is what is happening here.
Function Code 4 reads an input register - so it can ONLY read address 3xxxx. Using FC4 with %MW1, The "3" is implied and the FC reads data from %MW30001