失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java实现使用Modbus4j+seroUtils读取Mudbus RTU/ASCII Over TCP/IP连接设备数据

Java实现使用Modbus4j+seroUtils读取Mudbus RTU/ASCII Over TCP/IP连接设备数据

时间:2024-06-26 11:40:44

相关推荐

Java实现使用Modbus4j+seroUtils读取Mudbus RTU/ASCII Over TCP/IP连接设备数据

使用Modbus4j+seroUtils读取风速风向仪数据,现有设备IP,端口号,从机地址,寄存器读取开始地址,读取的寄存器数量。没有上述jar包可以自行搜索,网上资源挺多

/*** @author chengy*/@Componentpublic class ModbusUtil {private static ModbusFactory modbusFactory;static {if (modbusFactory == null) {modbusFactory = new ModbusFactory();}}/*** @param ip 远程服务机地址* @param port端口号* @param slaveId 从机地址* @param offset 寄存器读取开始地址* @param quantity 读取的寄存器数量* @return*/public static short[] getValueByRTU(String ip, int port, int slaveId, int offset, int quantity){short[] result = new short[2];IpParameters params = new IpParameters();params.setHost(ip);params.setPort(port);//这个属性确定了协议帧是否是通过tcp封装的RTU结构,采用modbus tcp/ip时,要设为false, 采用modbus rtu over tcp/ip时,要设为trueparams.setEncapsulated(true);com.serotonin.modbus4j.ModbusMaster master = modbusFactory.createTcpMaster(params, true);// TCP 协议try {//设置超时时间master.setTimeout(1000);//设置重连次数master.setRetries(3);//初始化master.init();try {ReadHoldingRegistersRequest request = null;request = new ReadHoldingRegistersRequest(slaveId, offset, quantity);ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master.send(request);if (response.isException())System.out.println("读取风速设备数据失败," + response.getExceptionMessage());elseresult = response.getShortData();} catch (ModbusTransportException e) {throw new RuntimeException("读取风速设备数据失败");}} catch (ModbusInitException e) {throw new RuntimeException("建立风速设备连接失败");}return result;}}

相关文章:Java实现ModbusTCP通信

如果觉得《Java实现使用Modbus4j+seroUtils读取Mudbus RTU/ASCII Over TCP/IP连接设备数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。