三个协议:
modbus-rtu:纯粹的串口通信
modbus-tcp:TCP网络通信
modbus rtu Over tcp/ip:是tcp网络通信,但是本质上还是rtu。
模拟工具:mbslaveX64
jar包
<!-- https://mvnrepository.com/artifact/com.ghgande/j2mod -->
<dependency>
<groupId>com.ghgande</groupId>
<artifactId>j2mod</artifactId>
<version>3.1.0</version>
</dependency>
try {
String address = "172.16.161.222";
int port = 10001;
ModbusTCPMaster modbusMaster = new ModbusTCPMaster (address,port, true);
modbusMaster.connect(); // 连接到Modbus RTU设备
int slaveId = 1; // Modbus RTU设备的从站ID
int startAddress = 0; // 要读取的寄存器的起始地址
int numRegisters = 10; // 要读取的寄存器的数量
// 读取Modbus寄存器的值
Register[] registerValues = modbusMaster.readMultipleRegisters(slaveId, startAddress, numRegisters);
// 打印读取到的寄存器值
for (int i = 0; i < registerValues.length; i++) {
System.out.println( ((startAddress + i) + ": " + registerValues[i]));
}
modbusMaster.disconnect(); // 断开与Modbus RTU设备的连接
} catch (Exception e) {
e.printStackTrace();
}