QModbusTcpClient无法连接到PLC

问题描述 投票:0回答:1

我正在尝试连接到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

qt modbus plc
1个回答
0
投票

首先,PLC-> connectDevice()做什么?

第二,您不能等待同一线程中的连接,只需订阅QModbusDevice :: stateChanged信号并查找状态更改

© www.soinside.com 2019 - 2024. All rights reserved.