天天看點

modbus slave java_在本地使用java收發/調試Modbus協定資料

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

就表示成功了。