完整教程:新手怎么利用Qt连接汇川Easy系列的小型PLC

1.确认PLC版本

根据手头上的plc版本,在汇川官网上找到对应的plc用户手册。

汇川官网:汇川技术 - 推进工业文明 共创美好生活

例如我手头上的是:Easy 521-0808-TN,找到对应的用户手册

2.连接PLC与PC

根据用户手册,查看PLC对应的部件说明

再查看对应的电源规格

从这里我们可以看到对应的额定电源电压是24V,额定电流是1A。

根据对应线位,连接电源,打开拨码开关。

蓝线为负极,红线为正极,网线连接到PC端。

确认后打开电源,灯光如图所示。

3.Qt 连接汇川 Easy 系列 PLC

打开Qt Creator工程后建立一个Qt程序。

1.项目配置

在 Qt 项目的.pro文件中添加QT += serialbus以启用 Modbus 模块

QT       += core gui network serialbus

2.PLC 配置

  • 确保汇川 Easy 系列 PLC 已启用 Modbus TCP 功能
  • 记录 PLC 的 IP 地址(默认可能为 192.168.1.88)和端口(默认 502)

3.Qt基本连接代码编写

      PLC_TEST的头文件 plc_test.h

#ifndef PLC_TEST_H
#define PLC_TEST_H
#include
#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class Plc_Test; }
QT_END_NAMESPACE
class Plc_Test : public QMainWindow
{
Q_OBJECT
public:
Plc_Test(QWidget *parent = nullptr);
~Plc_Test();
bool connectToPLC(const QString &ipAddress, int port);
private slots:
void onStateChanged(QModbusDevice::State state);
private:
Ui::Plc_Test *ui;
private:
QModbusTcpClient *m_modbusClient;
};
#endif // PLC_TEST_H

PLC_TEST的C++文件 plc_test.cpp

#include "plc_test.h"
#include "ui_plc_test.h"
#pragma execution_character_set("utf-8")
Plc_Test::Plc_Test(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Plc_Test)
{
ui->setupUi(this);
m_modbusClient = new QModbusTcpClient(this);
// 连接状态变化信号
connect(m_modbusClient, &QModbusTcpClient::stateChanged,
this, &Plc_Test::onStateChanged);
bool connected = connectToPLC("192.168.1.88",502);
}
Plc_Test::~Plc_Test()
{
delete ui;
}
void Plc_Test::onStateChanged(QModbusDevice::State state)
{
if (state == QModbusDevice::ConnectedState) {
ui->statelab->setText("成功连接到PLC");
} else if (state == QModbusDevice::UnconnectedState) {
ui->statelab->setText("已断开与PLC的连接");
} else if (state == QModbusDevice::ConnectingState) {
ui->statelab->setText("正在连接到PLC...");
}
}
bool Plc_Test::connectToPLC(const QString &ipAddress, int port)
{
if (m_modbusClient->state() == QModbusDevice::ConnectedState) {
return true;
}
m_modbusClient->setConnectionParameter(QModbusDevice::NetworkAddressParameter, ipAddress);
m_modbusClient->setConnectionParameter(QModbusDevice::NetworkPortParameter, port);
// 设置超时和重试次数
m_modbusClient->setTimeout(1000);
m_modbusClient->setNumberOfRetries(3);
return m_modbusClient->connectDevice();
}

简单讲解一下函数

函数名参数返回值功能说明
onStateChangedQModbusDevice::State statevoid根据Modbus设备状态更新UI标签文本,显示连接状态(成功/断开/正在连接)。
connectToPLCconst QString &ipAddress, int portbool配置Modbus客户端参数(IP地址、端口、超时和重试次数),并尝试连接到PLC设备。若已连接则直接返回true

关键细节说明

  • onStateChanged
    通过state参数判断设备状态,动态更新ui->statelab的文本内容,提供用户直观的连接状态反馈。

  • connectToPLC
    在调用connectDevice()前设置网络地址、端口、超时时间(1000毫秒)和重试次数(3次)。若设备已处于连接状态,则跳过重复连接。

  • 如果连接成功UI上的statelab会显示对应状态。

posted @ 2025-09-18 13:05  yxysuanfa  阅读(89)  评论(0)    收藏  举报