目录

一,总体介绍

二,需要的软件

三,需要的硬件

四,QT程序代码

五,西门子PLC代码



一,总体介绍

先看一下图1-1的QT运行界面图,界面中服务器地址就是OPC_UA服务器地址,整个项目作用,就是通过西门子1200和1500系列PLC连接压力传感器采集供水压力,然后PLC通过OPC_UA服务器将数据发送给QT做的上位机,上位机对压力数据进行采集,显示,曲线图展示,以及对高压和低压进行报警(红色显示告警,绿色显示运行),可以进行单词采集和连续采集,通过这个过程可以实现整个工业控制流程,PLC程序和上位机QT程序均通过实际测试。上位机注页面如下图1-1所):

二,需要的软件

1.QT开发软件:

如Qt Creator:qt-opensource-windows-x86-5.14.0,下载连接:http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.12/5.12.0/;下载5.9以上版本就行,最好32位,64位需要重新编译opc_ua库;

2.西门子博图软件,博图V15以上就行,下载地址可以自己找,或者附上作者的博图V15下载地址:https://pan.baidu.com/s/1v-otuaxp8sjNWUlZYTQU1A?pwd=2zt6 ;提取码:2zt6 。过期可以找博主要,博图V16,V17博主都有安装软件。

3.OPC_UA服务器软件,这个可以参考博主的博文下载和搭建,链接地址为:https://blog.csdn.net/xipengbozai/article/details/115080901

三,需要的硬件

1.计算机,也就是你的电脑就可以,配置的话稍微高点就行,现在台式机问题不大;

2.西门子1200或者西门子1500PLC,有条件的好办,没条件的可以使用模拟器,不过效果没实物好;

3.网线和一些下载线等;

4.传感器,这个数据可以通过PLC模拟,比较好办;

四,QT程序代码

A工程目录:

1.QT的mian代码

#include "OpcUaClientByQT.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);OpcUaClientByQT w;w.show();return a.exec();
}

2.主界面代码

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_OpcUaClientByQT.h"
#include "wavechart.h"
#include <QTimer>
#include <QTime>
#include "imagepilot.h"
extern "C"{
#include "open62541.h"
}
class OpcUaClientByQT : public QMainWindow
{Q_OBJECTpublic:OpcUaClientByQT(QWidget *parent = Q_NULLPTR);void initallOPCUANode();void controlfunc(int num);void initTimer();void readcontrolinfo();private:Ui::OpcUaClientByQTClass ui;WaveChart *m_WaveChart_Press;QTimer *m_Timer;ImagePilot *m_ImagePilot_Run;ImagePilot *m_ImagePilot_Alarm;bool m_bConnFlag;//连接成功标志void initForm();//初始化波形图UA_Client *client;QTimer *clienttimer;UA_Variant showValue[2];UA_NodeId showId[2];UA_Variant ctrlValue[2];UA_NodeId ctrlId[2];UA_Variant pressure;UA_NodeId pressureId;int  pressureValue;UA_Variant max;UA_NodeId maxId;UA_Variant min;UA_NodeId minId;\UA_Variant time;UA_NodeId timeId;int flag[2];UA_Boolean trueflag;UA_Boolean falseflag;QPushButton *ctrlbtn[2];private slots:void addData();void on_btn_conn_clicked();void on_btn_close_clicked();void on_btn_Trigger_clicked();void on_btn_RUN_clicked();void on_btnClearData_clicked();void updateData();
};

3.曲线图代码

#ifndef WAVECHART_H
#define WAVECHART_H/*** 1. 可设置间隔* 2. 可设置标题* 3. 可设置是否显示横线及坐标点* 4. 可设置背景色文字颜色* 5. 可设置范围值及x轴y轴步长* 6. 暂时不支持最小值小于0的数据*/#include <QWidget>#ifdef quc
class Q_DECL_EXPORT WaveChart : public QWidget
#else
class WaveChart : public QWidget
#endif{Q_OBJECTQ_PROPERTY(double minValue READ getMinValue WRITE setMinValue)Q_PROPERTY(double maxValue READ getMaxValue WRITE setMaxValue)Q_PROPERTY(double xStep READ getXStep WRITE setXStep)Q_PROPERTY(double yStep READ getYStep WRITE setYStep)Q_PROPERTY(double space READ getSpace WRITE setSpace)Q_PROPERTY(QString title READ getTitle WRITE setTitle)Q_PROPERTY(bool smooth READ getSmooth WRITE setSmooth)Q_PROPERTY(bool showHLine READ getShowHLine WRITE setShowHLine)Q_PROPERTY(bool showPoint READ getShowPoint WRITE setShowPoint)Q_PROPERTY(bool showPointBg READ getShowPointBg WRITE setShowPointBg)Q_PROPERTY(QColor bgColorStart READ getBgColorStart WRITE setBgColorStart)Q_PROPERTY(QColor bgColorEnd READ getBgColorEnd WRITE setBgColorEnd)Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)Q_PROPERTY(QColor pointColor READ getPointColor WRITE setPointColor)public:explicit WaveChart(QWidget *parent = 0);protected:void paintEvent(QPaintEvent *);void drawBg(QPainter *painter);void drawBox(QPainter *painter);void drawText(QPainter *painter);void drawTitle(QPainter *painter);void drawPoint(QPainter *painter);private slots:void updateData();private:QRectF pointRect;               //绘制数据区域QVector<double> listData;       //数据集合double minValue;                //最小值double maxValue;                //最大值double xStep;                   //x轴步长double yStep;                   //y轴步长double space;                   //间隔QString title;                  //标题bool smooth;                    //是否平滑bool showHLine;                 //是否显示横线bool showPoint;                 //是否显示坐标点bool showPointBg;               //是否显示坐标背景QColor bgColorStart;            //背景渐变开始颜色QColor bgColorEnd;              //背景渐变结束颜色QColor textColor;               //文字颜色QColor pointColor;              //坐标点颜色public:double getMinValue()            const;double getMaxValue()            const;double getXStep()               const;double getYStep()               const;double getSpace()               const;QString getTitle()              const;bool getSmooth()                const;bool getShowHLine()             const;bool getShowPoint()             const;bool getShowPointBg()           const;QColor getBgColorStart()        const;QColor getBgColorEnd()          const;QColor getTextColor()           const;QColor getPointColor()          const;QSize sizeHint()                const;QSize minimumSizeHint()         const;public Q_SLOTS://添加和设置数据数据void addData(double data);void setData(QVector<double> data);void clearData();//设置范围值及步长void setMinValue(double minValue);void setMaxValue(double maxValue);void setXStep(double xStep);void setYStep(double yStep);//设置间隔void setSpace(double space);//设置标题void setTitle(const QString &title);//设置是否平滑曲线void setSmooth(bool smooth);//设置显示横线void setShowHLine(bool showHLine);//设置显示坐标点void setShowPoint(bool showPoint);//设置显示坐标背景void setShowPointBg(bool showPointBg);//设置颜色void setBgColorStart(const QColor &bgColorStart);void setBgColorEnd(const QColor &bgColorEnd);void setTextColor(const QColor &textColor);void setPointColor(const QColor &pointColor);
};#endif // WAVECHART_H

4.指示灯代码

#ifndef IMAGEPILOT_H
#define IMAGEPILOT_H/*** 1. 可设置五种颜色* 2. 可自定义指示灯图片*/#include <QWidget>#ifdef quc
class Q_DECL_EXPORT ImagePilot : public QWidget
#else
class ImagePilot : public QWidget
#endif{Q_OBJECTQ_ENUMS(PilotStyle)Q_PROPERTY(PilotStyle pilotStyle READ getPilotStyle WRITE setPilotStyle)public:enum PilotStyle {PilotStyle_Blue = 0,        //蓝色风格PilotStyle_Gray = 1,        //灰色风格PilotStyle_Green = 2,       //绿色风格PilotStyle_Red = 3,         //红色风格PilotStyle_Yellow = 4       //黄色风格};explicit ImagePilot(QWidget *parent = 0);protected:void paintEvent(QPaintEvent *event);private:PilotStyle pilotStyle;QString imgFile;public:PilotStyle getPilotStyle()      const;QString getImgFile()            const;QSize sizeHint()                const;QSize minimumSizeHint()         const;public Q_SLOTS:void setPilotStyle(const PilotStyle &pilotStyle);void setImage(const QString &imgFile);
};#endif // IMAGEPILOT_H

5.连接部分代码

    //创建OPC_ua客户端client = UA_Client_new(UA_ClientConfig_default);UA_StatusCode retval = UA_Client_connect(client,url.toUtf8());//连接不成功的话if(retval != UA_STATUSCODE_GOOD){UA_Client_delete(client);QMessageBox::information(this,"Error","连接失败,请确认服务器是否开启!");}else{m_bConnFlag = true;ui.groupBox_Contrl->setEnabled(true);//连接成功 控制区可以操作ui.btn_conn->setEnabled(false);//连接成功 连接按钮变灰QMessageBox::information(this, "提示", "连接成功", QMessageBox::Ok);}

6.整个qt软件完整代码下载地址:https://download.csdn.net/download/xipengbozai/87803908

五,西门子PLC代码

A工程目录:

1.压力部分数据块

2.OPC变量定义

3.具体PLC配置和完整工程代码下载地址:https://download.csdn.net/download/xipengbozai/87803911

基于QT开发的使用OPC_UA与西门子1200,1500系列PLC通信的工业监控Demo相关推荐

  1. 基于qt开发的智能系统:电子相册,监控摄像头模块,音乐播放器,视频播放器,电子时钟

    登录模块 源码请移步 //登录验证按钮函数 void MainWindow::on_loginBtn_clicked() {//获得userNameLEd输入框的文本userNameLEd->t ...

  2. 基于Qt开发的网络诊断工具

    导语: 项目名称:基于Qt开发的网络诊断工具 开发环境:VS2008 QT版本:4.7 数据读入:用户自行选中的.ini配置文件 功能实现:解析.ini文件,实时检测相关的域名连通性以及DNS解析的结 ...

  3. 【QT/C++】基于QT开发的一款A-SOUL元素的视频播放器(附源码)

    [QT/C++]基于QT开发的一款关于A-SOUL的视频播放器(附源码) 前言 一.软件使用说明 1.运行软件的界面如下 2.操作软件的步骤 二.软件设计说明 1.UI界面的设计 2.主代码中的部分函 ...

  4. 基于嵌入式linux电子相册设计,用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发...

    用于LINUX或者嵌入式LINUX的电子相册程序,基于QT开发,包含源代码和编译好的可执行程序 linux_project\album\album.pro .............\.....\al ...

  5. 基于QT开发PC端文件加密工具

    基于QT开发PC端文件加密工具 1.客户需求 某案子.该方案,通过外挂TF卡实现,本地教育资源的调取使用.按客户需求,把TF卡内的内容进行加密,并在软件中写好解密,确保资源文件只能在教育机中才能正常播 ...

  6. 基于QT开发的多媒体播放器

    基于QT开发的多媒体播放器 描述: 使用QT软件设计一个多媒体播放器,实现视频及音乐的播放,暂停,快进,快退,音量的调整. 歌词的实时显示和视频全屏播放等基本功能. 功能: 1.音乐系统:提供播放.暂 ...

  7. 基于QT开发的音乐播放器(附源码)

    基于QT开发的音乐播放器(附源码) 一.简介 1.介绍 2.功能描述 3.系统功能层次模块图 4.各模块功能描述 (1)播放界面 (2)歌词 (3)歌曲信息 (4)歌曲列表 5.文件格式 6.运行环境 ...

  8. Qt:基于Qt开发的轻量级HTTP/HTTPS服务器

    介绍 JQHttpServer是基于Qt开发的轻量级HTTP/HTTPS服务器,目前支持GET和POST两个协议. 底层有QTcpSocket.QSslSocket和QLocalSocket三个版本, ...

  9. 基于AS开发的手机App源码 可以配合单片机wifi通信接收单片机数据

    基于AS开发的手机App源码 可以配合单片机wifi通信接收单片机数据 注:只有文字描述的功能,其它功能无法实现,也不会制作 ID:6939642638150328Uun丶

最新文章

  1. Crypto API
  2. 一文解析支持向量机(附公式)
  3. Hibernate中的HQL的基本常用小例子,单表查询与多表查询
  4. ios 网络请求后 Crash
  5. java 很垃圾_JAVA吧真的很垃圾!!!
  6. 九个步骤让你成为PHP专家
  7. 使用Google Weather API查询天气预报
  8. Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】
  9. jquery环形3D立体旋转特效
  10. python3应用程序代码_python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序...
  11. mysql分表的原则_分库分表原则 总结
  12. Java Web GenericServlet
  13. Linux中Redis操作命令
  14. android支持wifi11ad,WiFi“千兆”必杀,802.11ax/802.11ad标准探秘
  15. 英雄连的制作公司THQ历史
  16. python中的in和out是什么意思
  17. vbox android wifi,virtualbox桥接无线网卡实现上网
  18. 这年头,当帅哥不容易呀!!
  19. 51单片机LED流水灯、走马灯的实现
  20. python身份证号码共18位_18位身份证校验

热门文章

  1. 野火的6ull开发板TF卡问题
  2. 移动oa系统对企业有哪些推动作用?
  3. 【转载】我们究竟是如何测量珠峰的?
  4. 红米手机怎样升级android版本,红米2的手机系统是什么?红米2能升级安卓5.0吗?...
  5. 强制删除工具Wise Force Deleter v1.49用法
  6. npm命令行强制删除node_modules
  7. 异或的巧妙用法(比较数字是否相同/独数)
  8. 如何设置计算机默认显卡,如何设置默认显卡
  9. 读书笔记:你就是极客-软件开发人员生存指南
  10. Windows相册文件批量管理工具