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
就表示成功了。