java modbus rtu_java modbus rtu通讯

本文介绍如何使用Java的modbus4j库和rxtxcomm库进行Modbus RTU通讯。内容包括串口通讯的设置,添加Maven依赖,以及创建ModbusMaster实例进行TCP和RTU协议的连接。同时提供了读取和写入不同类型的Modbus数据的工具类方法。
摘要由CSDN通过智能技术生成

本文章使用modbus4j和rxtxcomm进行modbus rtu通讯

串口通讯:rxtxcomm的使用:

下载地址:http://fizzed.com/oss/rxtx-for-java

rxtx解压包中的 rxtxParallel.dll,rxtxSerial.dll 这两个文件复制到 C:\Windows\System32 目录下

添加maven依赖

false

true

ias-snapshots

Infinite Automation Snapshot Repository

https://maven.mangoautomation.net/repository/ias-snapshot/

true

false

ias-releases

Infinite Automation Release Repository

https://maven.mangoautomation.net/repository/ias-release/

org.bidib.jbidib.org.qbang.rxtx

rxtxcomm

2.2

com.infiniteautomation

modbus4j

3.0.4

Modbus4j工具类

package com.example.modbus_rtu;

import java.util.ArrayList;

import java.util.List;

import com.serotonin.modbus4j.BatchRead;

import com.serotonin.modbus4j.BatchResults;

import com.serotonin.modbus4j.ModbusFactory;

import com.serotonin.modbus4j.ModbusMaster;

import com.serotonin.modbus4j.code.DataType;

import com.serotonin.modbus4j.exception.ErrorResponseException;

import com.serotonin.modbus4j.exception.ModbusInitException;

import com.serotonin.modbus4j.exception.ModbusTransportException;

import com.serotonin.modbus4j.ip.IpParameters;

import com.serotonin.modbus4j.locator.BaseLocator;

public class ModbusUtils {

/**

* 工厂。

*/

static ModbusFactory modbusFactory;

static {

if (modbusFactory == null) {

modbusFactory = new ModbusFactory();

}

}

/**

* 获取master

*

* @return

* @throws ModbusInitException

*/

public static ModbusMaster getMaster(String host, int port) throws ModbusInitException {

IpParameters params = new IpParameters();

params.setHost(host);

params.setPort(port);

//

// modbusFactory.createRtuMaster(wapper); //RTU 协议

// modbusFactory.createUdpMaster(params);//UDP 协议

// modbusFactory.createAsciiMaster(wrapper);//ASCII 协议

ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议

master.init();

return master;

}

public static ModbusMaster getRtuIpMaster(String host, int port) throws ModbusInitException {

IpParameters params = new IpParameters();

params.setHost(host);

params.setPort(port);

//这个属性确定了协议帧是否是通过tcp封装的RTU结构,采用modbus tcp/ip时,要设为false, 采用modbus rtu over tcp/ip时,要设为true

params.setEncapsulated(true);

ModbusMaster master = modbusFactory.createTcpMaster(params, false);

try {

//设置超时时间

master.setTimeout(1000);

//设置重连次数

master.setRetries(3);

//初始化

master.init();

} catch (ModbusInitException e) {

e.printStackTrace();

}

return master;

}

public static ModbusMaster getRtuComMaster(String com,int port) throws ModbusInitException {

//

// modbusFactory.createRtuMaster(wapper); //RTU 协议

// modbusFactory.createUdpMa

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值