java modbus4j_java使用modbus4j来实现modbusTCP通信

以下是代码:

读取寄存器数据:

public class readRegisters {

/**

* 工厂。

*/

static ModbusFactory modbusFactory;

static {

if (modbusFactory == null) {

modbusFactory = new ModbusFactory();

}

}

/**

* 获取master

*

* @return

* @throws ModbusInitException

*/

public static ModbusMaster getMaster() throws ModbusInitException {

IpParameters params = new IpParameters();

params.setHost("192.168.1.100");//测试的时候填写从机ip

params.setPort(502);//从机端口

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

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

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

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

try {

//设置超时时间

master.setTimeout(30000);

//设置重连次数

master.setRetries(5);

//初始化

master.init();

} catch (ModbusInitException e) {

e.printStackTrace();

}

return master;

}

/**

* 读01功能码

*

* @param ip        从站IP

* @param port      modbus端口

* @param start     起始地址偏移量

* @param readLenth 待读寄存器个数

* @return

* @throws ModbusInitException

*/

public static ByteQueue ReadCoilsRequest( int slaveId,int start, int readLenth) throws ModbusInitException {

ModbusRequest modbusRequest = null;

try {

modbusRequest = new ReadCoilsRequest(slaveId, start, readLenth);

} catch (ModbusTransportException e) {

e.printStackTrace();

}

ModbusResponse modbusResponse = null;

try {

modbusResponse = getMaster().send(modbusRequest);

} catch (ModbusTransportException e) {

e.printStackTrace();

}

ByteQueue byteQueue = new ByteQueue(1024);

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值