美文网首页
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