1. 安裝Modbus仿真工具Modbus Slave, 用來模仿一台Modbus裝置
1) connection -> connection setup,
如果使用TCP/IP方式,可選中TCP/IP
端口預設為502
2) Setup->Slave Definition
選中要測試的Function. 如:02 Input Status(1x)
注意:
這裡有個Address 對應Java測試代碼中的寄存器起始位址
Quantity對應java代碼中的讀取數量
2. 編寫Java測試代碼,去連接配接Modbus裝置,并且發送指令,能成功接收從Modbus發回的資料。
int port = Modbus.DEFAULT_PORT;
TCPMasterConnection con = null; // the connection
ModbusTCPTransaction trans = null; // the transaction
ReadInputDiscretesRequest req = null; // the request
ReadInputDiscretesResponse res = null; // the response
InetAddress addr=InetAddress.getByName("localhost");
con = new TCPMasterConnection(addr);
con.setPort(port);
con.connect();
// 0 表示寄存器的起始位址
// 3 表示要讀取的數量
req = new ReadInputDiscretesRequest(0, 3);
// 此處1表示之前在Modbus Slave中選中的Function:Input Status(1x)
req.setUnitID(1);
trans = new ModbusTCPTransaction(con);
trans.setRetries(5);
trans.setRequest(req);
int k = 0;
do {
trans.execute();
res = (ReadInputDiscretesResponse) trans.getResponse();
System.out.println("Digital Inputs Status=" + res.getDiscretes().toString());
k++;
} while (k < repeat);
// 6. Close the connection
con.close();
運作之後,可以在控制台看到類似如下資訊:
start to test connect modbus slave machine.....
Digital Inputs Status=00000101
就表示成功了。