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

news/2025/9/18 13:08:39/文章来源:https://www.cnblogs.com/yxysuanfa/p/19098551

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会显示对应状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hbase学习一

什么是HBase? HBase是一个基于HDFS的、分布式、可扩展、面向列的NoSQL数据库。它起源于Google的BigTable论文,是Apache Hadoop生态系统的重要组成部分,专门用于处理海量数据的随机、实时读写访问。为什么需要HBase?…

Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【光照】[漫反射diffuse]以UnityURP为例

【从UnityURP开始探索游戏渲染】专栏-直达漫反射基本流程 漫反射遵循兰伯特定律(Lamberts Cosine Law),其核心流程如下:‌法线准备‌:获取表面法线向量(通常来自顶点法线或法线贴图) ‌光源方向计算‌:确定光源到表…

OI线下比赛注意事项

这篇写挺好 https://www.cnblogs.com/dengstar/p/17069134.html

3D影像地形图的制作:利用ArcGISPro - 指南

3D影像地形图的制作:利用ArcGISPro - 指南2025-09-18 12:52 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…

n8n实践-使用n8n搭建一个定时发送天气预报邮件的工作流

前言传统的定时任务,一般是使用linux cron定时运行某个位置的某个脚本。需要准备各种运行环境; 脚本比较分散,管理起来相对麻烦; 需要有一定的代码能力,比如常见的shell、python等等; 不方便接入ai, 更换ai也比较…

Cython-编程学习指南第二版-全-

Cython 编程学习指南第二版(全)原文:zh.annas-archive.org/md5/0bc691743f26fcdcabcb6840b706a834 译者:飞龙 协议:CC BY-NC-SA 4.0前言 Cython 是一个工具,它使得编写 Python 的原生扩展变得和编写 Python 代码…

印度尼西亚股票数据API对接实现

环境准备 首先安装必要的依赖包: pip install requests websocket-client pandas numpy基础配置 import requests import json import websocket import threading import time from datetime import datetime# API配…

OpenBMB 发布无分词器 TTS VoxCPM;儿童口语硬件 Dex 融资 480 万美元:拍摄真实物体,对话学习外语丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度…

一天一款实用的AI工具,第1期,AI标题生成工具

本期介绍的是一款专业的标题生成工具,它能帮你产出高质量标题,让点击率提升,让内容被看见。现实问题 在内容创作的世界里,有句话特别扎心: 好的标题=成功的一半。 很多创作者都遇到过这样的困境: 花了一下午写好…

重组蛋白表达避坑指南

重组蛋白表达避坑指南重组蛋白表达是分子生物学、生物技术以及生物医学研究中非常基础却经常“出问题”的环节。一个合适的蛋白表达方案,不仅要能产生足够的产量,还要确保蛋白正确折叠、具有功能、具有良好的纯度与稳…

易被忽略的vim中视图模式

常见的都是vim三种模式,但视图模式也不可忽略,主要进行批量操作在 Vim 中,可视模式(Visual Mode)是一种强大的文本选择和编辑模式,允许你高亮选中一段文本,然后对其进行操作(如复制、删除、替换、注释等)。 一…

详细介绍:智慧校园统一身份认证中心:一个账号畅行校园内外

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

电商核心业务 - 指南

电商核心业务 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

一言

一些日常的感想,为了节约时间,为了不暴露太多东西,为了不挑起矛盾,内容会很简洁,在合适的时候公布详情。9.17 说好的向阳而生呢?冷静啊,兄弟。 9.18 你们不相信我,我必将证明我,夺回属于我的荣耀。

ai

https://qsqs.life/login?redirect=/system/dashboard本文来自博客园,作者:zjxgdq,转载请注明原文链接:https://www.cnblogs.com/zjxzhj/p/19098509

LlamaIndex 项目深度技术分析 - 详解

LlamaIndex 项目深度技术分析 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

苏州才是最美的烟雨江南,苏州游玩必去的10大景点

苏州才是最美的烟雨江南,苏州游玩必去的10大景点 蜘蛛指南 关注2024-05-22 16:22 北京 来源:澎湃新闻澎湃号湃客 字号苏州人间天堂 最美的烟雨江南 苏州,一个极具江南风情的城市,既有园林之美,也有诗情画意,也是…

深入解析:css消除图片下的白边

深入解析:css消除图片下的白边pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

linux增加网卡ip地址

linux增加网卡ip地址example ip addr add 192.168.5.124/24 dev eth0 label eth0:5 ifconfig eth0:5 up ip addr del 192.168.1.100/24 dev eth0 example ip addr add 192.168.10.199/24 dev eth0 label eth0:10 route…