如何在Java中建立Modbus TCP连接

概述

在本文中,我将向你介绍如何在Java中建立Modbus TCP连接。 Modbus是一个用于工业自动化的通信协议,广泛应用于PLC等设备之间的通信。

流程

下面是建立Modbus TCP连接的步骤:

步骤 操作
1 导入Modbus库
2 创建Modbus客户端
3 配置Modbus连接
4 建立连接
5 发送请求
6 接收响应
7 关闭连接

代码示例

步骤1:导入Modbus库
// 导入Modbus库
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.net.TCPMasterConnection;
步骤2:创建Modbus客户端
// 创建Modbus TCP连接
TCPMasterConnection connection = new TCPMasterConnection(InetAddress.getByName("127.0.0.1"));
connection.setPort(502); // 设置Modbus TCP端口
connection.connect(); // 连接到Modbus设备
步骤3:配置Modbus连接
// 创建Modbus请求
ReadInputRegistersRequest req = new ReadInputRegistersRequest(0, 10); // 读取地址0开始的10个寄存器
req.setUnitID(1); // 设置Modbus单元ID

// 创建Modbus事务
ModbusTCPTransaction trans = new ModbusTCPTransaction(connection);
trans.setRequest(req); // 设置请求
步骤4:建立连接
// 发送Modbus请求
trans.execute(); // 执行Modbus事务
步骤5:发送请求
// 处理Modbus响应
ReadInputRegistersResponse res = (ReadInputRegistersResponse) trans.getResponse(); // 获取响应
int[] registers = res.getRegisters(); // 获取寄存器值
步骤6:接收响应
// 打印寄存器值
for (int register : registers) {
    System.out.println("Register Value: " + register);
}
步骤7:关闭连接
// 关闭Modbus连接
connection.close();

完整示例

import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.net.TCPMasterConnection;

import java.net.InetAddress;

public class ModbusExample {

    public static void main(String[] args) {
        try {
            // 创建Modbus TCP连接
            TCPMasterConnection connection = new TCPMasterConnection(InetAddress.getByName("127.0.0.1"));
            connection.setPort(502); // 设置Modbus TCP端口
            connection.connect(); // 连接到Modbus设备

            // 创建Modbus请求
            ReadInputRegistersRequest req = new ReadInputRegistersRequest(0, 10); // 读取地址0开始的10个寄存器
            req.setUnitID(1); // 设置Modbus单元ID

            // 创建Modbus事务
            ModbusTCPTransaction trans = new ModbusTCPTransaction(connection);
            trans.setRequest(req); // 设置请求

            // 发送Modbus请求
            trans.execute(); // 执行Modbus事务

            // 处理Modbus响应
            ReadInputRegistersResponse res = (ReadInputRegistersResponse) trans.getResponse(); // 获取响应
            int[] registers = res.getRegisters(); // 获取寄存器值

            // 打印寄存器值
            for (int register : registers) {
                System.out.println("Register Value: " + register);
            }

            // 关闭Modbus连接
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

图示

gantt
    title Modbus TCP连接建立流程
    dateFormat  YYYY-MM-DD
    section Modbus TCP连接建立
    导入Modbus库           :done, 2022-01-01, 1d
    创建Modbus客户端       :done, after 导入Modbus库, 1d
    配置Modbus连接         :done, after 创建Modbus客户端, 1d