java解析modbus协议示例代码

GitHub - digitalpetri/modbus: Modbus TCP, Modbus RTU/TCP, and Modbus RTU/Serial for Java 17+.

modbus tcp 通讯modbus-master-tcp Java使用说明-左搜

ModbusTCP协议_mbap报文头-CSDN博客

modbus学习笔记——帧 - feipeng8848 - 博客园

百度安全验证

PLC论坛-工控论坛-专业自动化论坛-中国工控网论坛

深入理解Modbus协议的数据模型和地址模型

寄存器PLC地址与ModBus协议地址

        <dependency>
            <groupId>com.digitalpetri.modbus</groupId>
            <artifactId>modbus-master-tcp</artifactId>
            <version>1.2.1</version>
        </dependency>
    public ReadHoldingRegistersResponse readHoldingRegisters(int address, int quantity, int unitId)
            throws InterruptedException, ExecutionException {
        initModbusTcpMaster();
        try {
            CompletableFuture<ReadHoldingRegistersResponse> future = master
                    .sendRequest(new ReadHoldingRegistersRequest(address, quantity), unitId);
            return future.get();// 工具类做的同步返回.实际使用推荐结合业务进行异步处理

        }catch (Exception e){
            log.error("modbus获取数据失败",e);
        }
//        finally {
//            if(readHoldingRegistersResponse!=null&&readHoldingRegistersResponse.refCnt()>0){
//                ReferenceCountUtil.release(readHoldingRegistersResponse);
//            }
//        }
        return null;
    }

    public void initModbusTcpMaster() {
        if (master == null) {
            // 创建配置
			ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder(modbusTcpUrl).setPort(modbusTcpUrlPort).build();
//            ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder("106.87.15.26").setPort(8234).build();
            master = new ModbusTcpMaster(config);
            master.connect();
        }else if(!master.isConnected()){
            master.connect();
        }
//        System.out.println(master.isConnected());
    }

保持连接不马上断开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值