How To Read/Write Data from 2 Modbus Slave Devices & Multiple Registers

 To read/write data from two Modbus RTU slave devices and access multiple registers, you need to configure your S7-300 or S7-1200 as the Modbus RTU Master. Below is a step-by-step guide:


1. Hardware Requirements

For S7-300 (Modbus RTU Master)

  • CP341 (with RS485 interface) + Modbus RTU Loadable Driver
    OR
  • RS232/USB to RS485 Modbus Converter (like Anybus, Moxa, or Westermo)

For S7-1200 (Modbus RTU Master)

  • CM1241 (RS485 Module) (if your PLC doesn't have a built-in RS485 port)

2. Software Configuration in TIA Portal or STEP 7

Function Blocks for Modbus RTU

  • MB_COMM_LOAD → Initializes the serial port.
  • MB_MASTER → Sends requests to read/write Modbus registers.

3. Steps to Read/Write Multiple Registers from Two Slaves

Step 1: Configure the Modbus Communication Port

  • For S7-300, configure the CP341/CP340 module.
  • For S7-1200, use MB_COMM_LOAD to initialize RS485.

MB_COMM_LOAD Parameters

Parameter Description
PORT RS485 (CM1241 or CP341)
BAUD 9600, 19200, etc.
PARITY Even/Odd/None
STOP_BITS 1 or 2

Step 2: Read Registers from Modbus Slaves

Use MB_MASTER to read multiple registers from each slave device.

MB_MASTER Parameters

Parameter Description
REQ Trigger signal (rising edge)
MODE 1 (Read Holding Registers)
DATA_ADDR Start register address
DATA_LEN Number of registers to read
SLAVE Slave ID (e.g., 1 or 2)
DONE High when data is received
ERROR High if communication fails
DATA_PTR Pointer to store data
Example
  1. Slave 1 (ID = 1), Read Registers 40001-40010

    • SLAVE = 1
    • DATA_ADDR = 0
    • DATA_LEN = 10
    • Store data in DB10.DBB0
  2. Slave 2 (ID = 2), Read Registers 40011-40020

    • SLAVE = 2
    • DATA_ADDR = 10
    • DATA_LEN = 10
    • Store data in DB10.DBB10

Step 3: Write Data to Multiple Registers

To write to a Modbus slave, use MB_MASTER with MODE = 2 (Write Multiple Registers).

  • Example: Write data to Slave 1 at address 40050-40055
    • SLAVE = 1
    • MODE = 2
    • DATA_ADDR = 50
    • DATA_LEN = 6
    • Source data from DB20.DBB0

4. Execution Logic

  • Call MB_COMM_LOAD once at startup.
  • Continuously call MB_MASTER in a cyclic loop (OB1).
  • Use a state machine or timer to alternate between Slave 1 and Slave 2.
  • Use the DONE bit to trigger the next read/write operation.

5. Summary

  • Use MB_MASTER twice (once for each Slave).
  • Configure correct Slave ID and Register Addresses.
  • Ensure polling intervals are set properly.
  • Implement error handling (timeout, retries).

Next Steps

  • Do you need a sample PLC program for Modbus RTU communication?
  • What are the register addresses for your Modbus devices?

Post a Comment

Previous Post Next Post