Modbus4j 是一個 Java 庫,用于實現 Modbus 協議通信。以下是一個簡單的示例,展示了如何使用 Modbus4j 從 Modbus 設備讀取數據:
pom.xml
文件中添加以下依賴:<dependency>
<groupId>net.wimpi</groupId>
<artifactId>modbus4j</artifactId>
<version>2.3.0</version>
</dependency>
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.ModbusFactory;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.io.ModbusSerialTransaction;
import net.wimpi.modbus.msg.ReadHoldingRegistersRequest;
import net.wimpi.modbus.msg.ReadHoldingRegistersResponse;
public class ModbusReader {
public static void main(String[] args) {
try {
// 創建 Modbus 工廠實例
ModbusFactory factory = ModbusFactory.getInstance();
// 創建 Modbus TCP 客戶端實例
ModbusTCPTransaction transaction = factory.createTCPTransaction();
// 設置連接參數(IP地址和端口號)
transaction.setHost("192.168.1.100");
transaction.setPort(502);
// 創建讀取請求
ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(1, 10); // 從地址1開始讀取10個寄存器
// 執行請求并獲取響應
transaction.execute(request);
ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) transaction.getResponse();
// 處理響應數據
if (response.getExceptionCode() == 0) {
for (int i = 0; i < response.getRegisterCount(); i++) {
System.out.println("Register " + (i + 1) + ": " + response.getRegister(i));
}
} else {
System.out.println("Error: " + Modbus.ExceptionCode.toString(response.getExceptionCode()));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在這個示例中,我們創建了一個 Modbus TCP 客戶端,連接到指定的 IP 地址和端口號,然后發送一個讀取請求以從設備的地址1開始讀取10個寄存器。最后,我們處理響應數據并打印出讀取到的寄存器值。
注意:請根據實際情況修改 IP 地址、端口號和寄存器數量。