Skip to main content

CODESYS example: ModbusTCP-RTU-Slave

Introduction

In this example, we configure and run both a Modbus TCP slave and a Modbus RTU slave on the RevPi Connect+ with CODESYS Control for Linux ARM/ARM64. The application is designed to copy the first 10 holding registers to the 10 input registers of both slaves.

Prerequisites

Hardware Requirements

  • RevPi Connect+
  • One Modbus TCP slave
  • One Modbus RTU slave

Software Requirements

  • CODESYS Development System installed on your PC

Preparation

Hardware Setup:

Tipp: For detailed instructions about how to set up your system, refer to the Getting Started guide.

Software Setup:

note: To ensure a compatible system with suitable software, please refer the following links:

Overview

The following figure provides an overview of the CODESYS device tree for the setup:

CODESYS Device Tree Overview

Adapting for RevPi Core or Compact

To adapt the project for RevPi Core or RevPi Compact:

▷ Right-click on RevPi Connect in the CODESYS device tree.

▷ Select Update device.

▷ Choose RevPi Core or RevPi Compact as the replacement and rename the device accordingly.

Step 1: Configuring Modbus RTU Serial Port

For RevPi Connect or RevPi Core:

  1. Edit the configuration file:

    sudo nano /etc/CODESYSControl_User
  2. Add the following line:

    [SysCom]  
    Linux.Devicefile=/dev/ttyUSB
  3. Map the COM ports in CODESYS as follows:

    • /dev/ttyUSB0 → COM port 1
    • /dev/ttyUSB1 → COM port 2
    • /dev/ttyUSBn → COM port n

    If an extra USB-485 converter is connected, the correct COM port has to be identified.

For RevPi Compact:

  • Default RS485 Port:
    ▷ Edit /etc/CODESYSControl_User and add:
    [SysCom]  
    Linux.Devicefile=/dev/ttyAMA
  • Using USB-485 Converter:
    ▷ Add the following line instead:
    [SysCom]  
    Linux.Devicefile=/dev/ttyUSB

Step2: Configuring Modbus RTU Slave

Configuring Modbus RTU Slave

▷ Map Holding Registers and Input Registers to the application POU_Modbus to make the data accessible to the application logic.

Configuring Modbus RTU Slave

Step 3: Configuring Modbus TCP Slave

The configuration for the Modbus TCP slave is similar to that for the Modbus RTU slave.

Step 4: Simulating Modbus TCP and RTU Masters

  1. Required Software:

    • Use the application QModMaster for simulation. You can download it here.
  2. Functionality:

    • Write Multiple Registers: Writes data to the holding registers of the slave.
    • Read Holding Registers: Reads back the input register data of the Modbus TCP/RTU slave running on the RevPi device.

Configuring Modbus RTU Master

Configuring Modbus RTU Master

Step 5: Modbus TCP Unit ID

  • The Modbus TCP Unit ID serves the same function as the slave ID.
  • The Unit ID 255 is recommended for addressing the gateway itself.
  • When using QModMaster, note that it uses Unit ID 0 instead of 255 for addressing the gateway.

Configuring Modbus RTU Master

Configuring Modbus RTU Master