在本地使用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 

 

 

就表示成功了。

 

你可能感兴趣的:(在本地使用java收发/调试Modbus协议数据)