9. Modicon Programming

9.1 Supported Modbus Commands

The MDB-100 interface supports 5 Modbus commands: command 1 (0x01: read coil

status), command 3 (0x03: read holding registers), command 5 (0x05: force single

coil), command 6 (0x06: preset single register) and command 16 (0x10: preset multiple registers). Not all registers or coils support all commands (for example, read-only registers cannot be written to with a command 16). For more information, refer to section 10. The following limits represent the maximum number of registers and coils that can be read/written in one packet transaction:

Command

RTU Mode

RTU Mode

ASCII Mode

ASCII Mode

Read Max

Write Max

Read Max

Write Max

 

1

32 coils

N/A

32 coils

N/A

3

125 registers

N/A

61 registers

N/A

5

N/A

1 coil only

N/A

1 coil only

6

N/A

1 register only

N/A

1 register only

16

N/A

123 registers

N/A

59 registers

9.2 Programmable Pointer Register Function

MDB-100 registers 0x6000 0x601F and 0x6080 0x609F are used as programmable pointer and data registers, respectively. Registers 0x6000 0x601F (32 total) are used to define other register addresses from which you would like to read or write, and registers 0x6080 0x609F (32 total) are the actual registers used to access the data located at the register addresses defined in registers 0x6000 0x601F. For example, if you would like to continuously read the data from registers 0xFE03, 0xFE04, 0xFE06, and 0xFD00, the standard register configuration would require 3 read commands to be issued: one reading 2 registers starting at register 0xFE03, one reading 1 register starting at register 0xFE06, and one reading 1 register starting at register 0xFD00. To conserve network bandwidth and speed processing time, however, the programmable pointer registers can be used to allow the same information to be accessed, but by only issuing 1 command which reads 4 registers.

To configure this function, program as many registers as necessary (up to 32) in the range 0x6000 0x601F with the register numbers of the registers you would like to continuously access. In this example, we would set register 0x6000 to 0xFE03 (the first register number we want to access), register 0x6001 to 0xFE04, register 0x6002 to 0xFE06, and register 0x6003 to 0xFD00. The data located at these drive status registers can then be obtained by accessing the corresponding registers in the range 0x6080 0x609F (data register 0x6080 corresponds to address register 0x6000, data register 0x6081 corresponds to address register 0x6001, etc.) Therefore, the 4 registers that are to be monitored can now be accessed simply by issuing 1 holding register read command with a length of 4 starting from register 0x6080. The returned

15