Modbus tcp/ip 主站请求接收从站数据

public class tcpModbus {


public static void main(String[] args) {
int port = Modbus.DEFAULT_PORT;  
TCPMasterConnection con = null; // the connection  
ModbusTCPTransaction trans = null; // the transaction  

//ReadInputDiscretesRequest req = null; // input 请求, 值为0,1
//ReadCoilsRequest reqCoil = null;// coil 请求,值为0,1
ReadMultipleRegistersRequest reqHold = null;// hold 请求,

//WriteInputDiscretesResponse res = null; // input 反馈, 
//WriteCoilResponse resCoil = null;//coil 反馈
ReadMultipleRegistersResponse resHold = null;

InetAddress addr;
try {
addr = InetAddress.getByName("192.168.1.20");
con = new TCPMasterConnection(addr);  
con.setPort(port);  
con.connect(); 
} catch (Exception e) {
e.printStackTrace();
}  
 
 
 
// 0 表示寄存器的起始地址
// 3 表示要读取的数量

//req = new ReadInputDiscretesRequest(0, 3);  
//reqCoil = new ReadCoilsRequest(1,3);
reqHold = new ReadMultipleRegistersRequest(1,3);
 
// 此处1表示之前在Modbus Slave中选中的Function:Input Status(1x)  
//req.setUnitID(1);  
//reqCoil.setUnitID(1);
reqHold.setUnitID(1);
 
trans = new ModbusTCPTransaction(con);  
trans.setRetries(5); 
 
//trans.setRequest(req);  
//trans.setRequest(reqCoil);  
trans.setRequest(reqHold);  
 
 int k = 0;  
   do {  
       try {
trans.execute();
} catch (ModbusIOException e) {
e.printStackTrace();
} catch (ModbusSlaveException e) {
e.printStackTrace();
} catch (ModbusException e) {
e.printStackTrace();
}  
       
       //res = (ReadInputDiscretesResponse) trans.getResponse();  
       //resCoil = (WriteCoilResponse)trans.getResponse();  
       resHold = (ReadMultipleRegistersResponse)trans.getResponse();  
       //System.out.println("Digital Inputs Status=" + resCoil.getCoil());  
       System.out.println("Digital Inputs Status=" + resHold);  
       k++;  
   } while (k < 3);  
   
   con.close();  
}


}

你可能感兴趣的:(Modbus tcp/ip 主站请求接收从站数据)