您的位置:首页 > 理论基础 > 计算机网络

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

2014-10-17 20:55 316 查看
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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: