引用j2mod编写Modbus TCP从站Slave例子

Maven引入j2mod包,我使用3.1.1版本

<dependency>
    <groupId>com.ghgande</groupId>
    <artifactId>j2mod</artifactId>
    <version>3.1.1</version>
</dependency>

直接上例子代码:

package com.fuyan.test.modbus.slave;

import com.ghgande.j2mod.modbus.ModbusException;
import com.ghgande.j2mod.modbus.procimg.*;
import com.ghgande.j2mod.modbus.slave.ModbusSlave;
import com.ghgande.j2mod.modbus.slave.ModbusSlaveFactory;

/**
 * @Description: Modbus TCP 从站(服务端)
 * @Author fuyan.wang
 * @Date 2024/5/10
 */
public class ModbusTCPSlave {

    public static void main(String[] args) {
        // 简单添加几个测试数据
        
        SimpleProcessImage spi = new SimpleProcessImage();
        // 线圈状态
        spi.addDigitalOut(new SimpleDigitalOut(true));
        spi.addDigitalOut(new SimpleDigitalOut(false));
        // 输入状态
        spi.addDigitalIn(new SimpleDigitalIn(tr
### 如何使用 j2mod 库创建 Modbus Slave 实例 为了实现基于 `j2mod` 的 Modbus TCP (Slave),可以按照如下方式构建 Java 程序: #### Maven 配置依赖项 首先,在项目的 pom.xml 文件中加入对于 j2mod 库的支持,指定版本号为 3.1.1。 ```xml <dependencies> <dependency> <groupId>com.ghgande</groupId> <artifactId>j2mod</artifactId> <version>3.1.1</version> </dependency> </dependencies> ``` #### 编写 Modbus Slave 主程序逻辑 下面是一段完整的用于启动 Modbus TCP服务的代码片段。这段代码初始化了一个监听特定端口的服务,并设置了一些寄存器数据供主读取或修改[^2]。 ```java import com.ghgande.j2mod.modbus.net.TCPListener; import com.ghgande.j2mod.modbus.procimg.InputRegister; import com.ghgande.j2mod.modbus.procimg.Register; import com.ghgande.j2mod.modbus.slave.ModbusSlaveTCP; public class ModbusTcpServerExample { public static void main(String[] args) throws Exception { int port = 502; // 默认Modbus TCP端口号 // 创建一个新的Modbus TCP Server实例 ModbusSlaveTCP server = new ModbusSlaveTCP(); // 设置服务器监听地址和端口 server.setPort(port); // 添加一些测试用的数据点到映像表中 InputRegister inputReg = new Register(1); // 初始化输入寄存器值为1 server.getProcessImage().setInputRegisterAt(inputReg, 0); // 启动服务并开始等待连接请求 System.out.println("Starting Modbus TCP slave on port " + port); try (TCPListener listener = new TCPListener(server)) { listener.startListening(); Thread.currentThread().join(); // Keep the application running indefinitely. } } } ``` 此代码实现了简单的 Modbus TCP 协议栈中的从设备角色,允许其他客户端通过网络访问其内部存储区内的离散量、线圈状态以及保持寄存器等内容。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值