我正在尝试连接到PLC设备。我在设备中正确设置了所有配置,我已成功连接,并通过ModbusSlave软件测试了PC和PLC设备之间的通信。
我的QT代码是:
PLC = new QModbusTcpClient();
m_port = 502;
m_host = "10.100.101.2"; //PLC IP
PLC->setConnectionParameter(QModbusDevice::NetworkPortParameter, this->m_port);
PLC->setConnectionParameter(QModbusDevice::NetworkAddressParameter, this->m_host);
PLC->setTimeout(5000);
PLC->setNumberOfRetries(10);
qDebug()<<"State: " << PLC->state();
qDebug()<<"Try to connect...";
if(!PLC->connectDevice()){
qDebug()<<"Not connected to PLC: " << PLC->errorString();
}
else{
qDebug()<<"State: " << PLC->state();
while(PLC->state()!=QModbusDevice::ConnectedState){
QThread::msleep(5);
}
qDebug()<<"Connection to PLC succesed" << PLC->state();
emit PLCConnected();
}
输出为:
状态:QModbusDevice :: UnconnectedState尝试连接...状态:QModbusDevice :: ConnectingState
首先,PLC-> connectDevice()做什么?
第二,您不能等待同一线程中的连接,只需订阅QModbusDevice :: stateChanged信号并查找状态更改