Java使用j2mod库实现Modbus数据读取和采集

1.引用maven镜像

<mirror>
   <id>central</id>
   <name>Maven Central</name>
   <url>https://repo1.maven.org/maven2/</url>
   <mirrorOf>central</mirrorOf>
</mirror>

2.引用pom

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

3.Java代码示例

public static void main(String[] args) {
        String address = "192.168.10.154"; // PLC的IP地址
        int port = 5011; // Modbus端口,默认为502

        ModbusTCPMaster master = null;
        try {
            // 创建ModbusTCPMaster实例并连接
            master = new ModbusTCPMaster(address, port);
            master.connect();
            System.out.println("Connected to " + address + ":" + port);

            // 寄存器地址为1,设置其值为1以开启风扇
            int registerAddress = 100; // 寄存器地址(会有很多个)
            int valueToWrite = 0; // 要写入的值(1为开启,0为关闭)

            // 写入寄存器, 03
            //master.writeSingleRegister(registerAddress, new SimpleRegister(valueToWrite));
            //写入线圈 从地址101开始写5个
            //master.writeMultipleCoils(1,100,new BitVector(1));
            //master.writeCoil(100,false);
            System.out.println("Fan turned on.");


            //保持 03
            Register[] h = master.readMultipleRegisters(1, 100, 2);
            for (Register register : h) {
                System.out.println("保持"+register.getValue());
            }

            //输入 04
            InputRegister[] inputRegisters = master.readInputRegisters(1, 100, 2);
            for (InputRegister inputRegister : inputRegisters) {
                System.out.println("输入"+inputRegister.getValue());
            }

            //离散 02
            BitVector inputDiscrete = master.readInputDiscretes(1, 100, 2);
            for (int i = 0; i < inputDiscrete.size(); i++) {
                boolean value = inputDiscrete.getBit(i);
                System.out.println("离散"+value);
            }

            //线圈01
            BitVector coils = master.readCoils(1, 100, 2);
            for (int i = 0; i < coils.size(); i++) {
                boolean value = coils.getBit(i);
                System.out.println("线圈"+value);
            }

        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            e.printStackTrace();
        } finally {
            if (master != null) {
                master.disconnect(); // 断开连接
            }
        }
    }

4.附Modbus测试工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值