首页 > 解决方案 > QModbusTcpClient 无法连接到 PLC

问题描述

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

标签: qtmodbusplc

解决方案


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

第二,你不能在同一个线程中等待连接,只需订阅 QModbusDevice::stateChanged 信号并寻找状态变化


推荐阅读