JAVA modbus4j 实现modbus tcp通讯

本文介绍了如何在Java项目中利用modbus4j库进行Modbus TCP通信。首先,添加了必要的Maven依赖。接着,详细讲解了如何建立Modbus TCP连接。然后,提供了读取和写入的工具类示例,帮助开发者实现数据的读取与写入操作。
摘要由CSDN通过智能技术生成

1.maven依赖

<dependency>
            <groupId>com.infiniteautomation</groupId>
            <artifactId>modbus4j</artifactId>
            <version>2.1.5</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/modbus4j-2.1.5.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.infiniteautomation</groupId>
            <artifactId>serotonin-timer</artifactId>
            <version>2.0.6</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/serotonin-timer-2.0.6.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>com.infiniteautomation</groupId>
            <artifactId>serotonin-utils</artifactId>
            <version>2.1.7</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/serotonin-utils-2.1.7.jar</systemPath>
        </dependency>

2.在modbus进行读写之前,需要先建立连接,例如:建立modbus tcp通讯

import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.ip.IpParameters;


public class ModbusTcpMaster {
    private static ModbusFactory modbusFactory;

    static {
        if (modbusFactory == null) {
            modbusFactory = new ModbusFactory();
        }
    }

    /**
     * 获取Tcp master
     * @param ip
     * @param port
     * @return
     */
    public static ModbusMaster getMaster(String ip, int port) {
        IpParameters params = new IpParameters();
        params.setHost(ip);
        params.setPort(port);
        //这个属性确定了协议帧是否是通过tcp封装的RTU结构,采用modbus tcp/ip时,要设为false, 采用modbus rtu over tcp/ip时,要设为true
        params.setEncapsulated(false);
        // 参数1:IP和端口信息 参数2:保持连接激活
         ModbusMaster master = null;
         master = modbusFactory.createTcpMaster(params, true);
        try {
            //设置超时时间
            master.setTimeout(500);
            //设置重连次数
            master.setRetries(2);
            //初始化
            master.init();
        } catch (ModbusInitException e) {
            e.printStackTrace();
        }
        return
  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值