Modbus4j.jar 实现ModbusTCP
来源:互联网 发布:司法拍卖网络平台 编辑:程序博客网 时间:2024/05/22 06:38
- 在这章是用<a target=_blank href="http://download.csdn.net/detail/linxingqianglai/9330571" target="_blank">modbus4j.jar</a>和<a target=_blank href="http://download.csdn.net/detail/linxingqianglai/9330571" target="_blank">seroUtils.jar</a>导入包实现modbus协议。下面的例子是modbus tcp的demo,下一章是讲modbus urt协议的详解
- package com.example.testhzau;
-
- import java.util.Date;
-
- import com.serotonin.modbus4j.ModbusFactory;
- import com.serotonin.modbus4j.ModbusMaster;
- import com.serotonin.modbus4j.exception.ModbusInitException;
- import com.serotonin.modbus4j.exception.ModbusTransportException;
- import com.serotonin.modbus4j.ip.IpParameters;
- import com.serotonin.modbus4j.msg.ModbusRequest;
- import com.serotonin.modbus4j.msg.ModbusResponse;
- import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
- import com.serotonin.modbus4j.msg.WriteRegistersRequest;
- import com.serotonin.modbus4j.msg.WriteRegistersResponse;
- import com.serotonin.util.queue.ByteQueue;
- public class ReadAWriteUtil {
- public static void modbusWTCP(String ip, int port, int slaveId, int start, short[] values) {
- ModbusFactory modbusFactory = new ModbusFactory();
-
- IpParameters params = new IpParameters();
- params.setHost(ip);
- if (502 != port) {
- params.setPort(port);
- }
- ModbusMaster tcpMaster = null;
-
- tcpMaster = modbusFactory.createTcpMaster(params, true);
- try {
- tcpMaster.init();
- System.out.println("===============" + 1111111);
- } catch (ModbusInitException e) {
-
-
-
-
-
-
-
- }
- try {
- WriteRegistersRequest request = new WriteRegistersRequest(slaveId, start, values);
- WriteRegistersResponse response = (WriteRegistersResponse) tcpMaster.send(request);
- if (response.isException())
- System.out.println("Exception response: message=" + response.getExceptionMessage());
- else
- System.out.println("Success");
- } catch (ModbusTransportException e) {
- e.printStackTrace();
- }
- }
-
- public static ByteQueue modbusTCP(String ip, int port, int start,int readLenth) {
- ModbusFactory modbusFactory = new ModbusFactory();
-
- IpParameters params = new IpParameters();
- params.setHost(ip);
- if(502!=port){params.setPort(port);}
- ModbusMaster tcpMaster = null;
- tcpMaster = modbusFactory.createTcpMaster(params, true);
- try {
- tcpMaster.init();
- System.out.println("==============="+1111111);
- } catch (ModbusInitException e) {
- return null;
- }
- ModbusRequest modbusRequest=null;
- try {
- modbusRequest = new ReadHoldingRegistersRequest(1, start, readLenth);
- } catch (ModbusTransportException e) {
- e.printStackTrace();
- }
- ModbusResponse modbusResponse=null;
- try {
- modbusResponse = tcpMaster.send(modbusRequest);
- } catch (ModbusTransportException e) {
- e.printStackTrace();
- }
- ByteQueue byteQueue= new ByteQueue(12);
- modbusResponse.write(byteQueue);
- System.out.println("功能码:"+modbusRequest.getFunctionCode());
- System.out.println("从站地址:"+modbusRequest.getSlaveId());
- System.out.println("收到的响应信息大小:"+byteQueue.size());
- System.out.println("收到的响应信息值:"+byteQueue);
- return byteQueue;
- }
- }
0 0