美文网首页
2022-04-22 Java JLibModbus读取Modb

2022-04-22 Java JLibModbus读取Modb

作者: 颈椎以上瘫痪 | 来源:发表于2022-04-22 11:35 被阅读0次

Modbus

ModbusTCP

JLibModbus

Java中使用JLibModbus库使用ModbusTCP协议读取数据

项目地址

https://gitee.com/premeditate/Modbus

1.使用Modbus slave工具模拟Modbus数据站并添加一些数据

2022-04-22_112324.png

2.添加JLibModbus依赖

<dependency>
    <groupId>com.intelligt.modbus</groupId>
    <artifactId>jlibmodbus</artifactId>
    <version>1.2.9.7</version>
</dependency>

3.读取代码

package org.modbus.jlibmodbus;

import com.intelligt.modbus.jlibmodbus.Modbus;
import com.intelligt.modbus.jlibmodbus.master.ModbusMaster;
import com.intelligt.modbus.jlibmodbus.master.ModbusMasterFactory;
import com.intelligt.modbus.jlibmodbus.tcp.TcpParameters;

import java.net.InetAddress;

/**
 * @Author Jxx     让世界看到我
 * @Create 2022/4/22 9:58
 * @Note TODO
 */
public class JLibModbus {

    public static void run(){
        try {
            //设置主机TCP参数
            TcpParameters tcpParameters = new TcpParameters();

            //设置TCP的IP地址
            InetAddress inetAddress = InetAddress.getByName("127.0.0.1");

            //TCP参数设置IP地址
            //tcpParameters.setHost(InetAddress.getLocalHost());
            tcpParameters.setHost(inetAddress);

            //TCP设置长连接
            tcpParameters.setKeepAlive(true);
            //tcp设置端口,这里使用Modbus的默认端口502
            tcpParameters.setPort(Modbus.TCP_PORT);

            //创建一个主机
            ModbusMaster modbusMaster = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
            //设置自增的id
            Modbus.setAutoIncrementTransactionId(true);

            //从机地址
            int slaveId = 1;
            //寄存器读取开始地址
            int offset = 0;
            //读取寄存器数量
            int quantity = 10;

            if (modbusMaster.isConnected()){
                System.out.println("Modbus主机没有连接,现在建立连接");
                modbusMaster.connect();
            }

            //读取对应从机的数据
            int[] registers = modbusMaster.readInputRegisters(slaveId, offset, quantity);

            for (int register : registers) {
                System.out.println("读取寄存器数据:"+offset++ +"-"+register);
            }

        } catch ( Exception e){
            System.out.println("jlibmodbus运行异常");
            e.printStackTrace();
        }
    }
}

4.输出结果

通过打印输出,能够正确读取到Modbus数据站中的数据

2022-04-22_112653.png

相关文章

网友评论

      本文标题:2022-04-22 Java JLibModbus读取Modb

      本文链接:https://www.haomeiwen.com/subject/blzgertx.html