1.OPC_UA服务器准备工作

1.关于OPC_UA服务器的搭建可以参考前面一篇文章:https://blog.csdn.net/xipengbozai/article/details/115080901

2.搭建好OPC_UA服务器后就可以可是设置服务器通信变量

(1)打开KEPServerEX 6 Configuration,新建通道,选择Simulator。

(2)起名字,然后一步一步完成。

(3)给通道添加设备,设备名plc,一步一步直到完成。

设备节点通信时候要用

(4)创建标记组

(5)新建标记,取名x1,地址输入x1,数据类型选择布尔型,客户端访问方式为写

(6)重复5的操作新建4个标记

2.使用客户端测试通信

1.使用Quick Client创建两个客户端

2.创建的客户端如下图,可以看到四个标记分别为x1,x2,y1,y2

3.我们从一个客户端改变变量的值,然后从另一个客户端观察如下图,可以看到值改变了,所以同通信成功。

3.QT客户端程序编写

1.下载open62541的OPC库,下载地址:https://download.csdn.net/download/xipengbozai/16042848,读者也可以去GitHub下载,然后自己编译。

2.过工程的pro文件如下

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = OPCUA_example
TEMPLATE = app
QMAKE_CFLAGS += -std=c99
LIBS += -lpthread libwsock32 libws2_32SOURCES += main.cpp\widget.cppHEADERS  += widget.h \open62541.hunix|win32: LIBS += -L$$PWD/dll/ -lopen62541INCLUDEPATH += $$PWD/dll
DEPENDPATH += $$PWD/dll

3.工程目录简单如下

4.mian代码

#include "widget.h"
#include <QApplication>
#include <QDesktopWidget>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();
//    w.move ((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);return a.exec();
}

5.连接服务器代码

    //创建OPC_ua客户端client = UA_Client_new(UA_ClientConfig_default);//连接OPC_UA服务器,匿名链接UA_StatusCode retval = UA_Client_connect(client,"opc.tcp://127.0.0.1:49320");//连接不成功的话if(retval != UA_STATUSCODE_GOOD){UA_Client_delete(client);QMessageBox::information(this,"Error","连接失败,请确认服务器是否开启!");}else{QMessageBox::information(this,"TIps","连接成功!");}

6.从服务器读数据代码

        //读取opc标记数据retval = UA_Client_readValueAttribute(client, showId[i], &showValue[i]);//根据读取的数据更新UIif(retval == UA_STATUSCODE_GOOD) {if(*(UA_Boolean *)showValue[i].data){showbtn[i]->setStyleSheet("QPushButton{background:red}");}else{showbtn[i]->setStyleSheet("QPushButton{background:gray}");}}

7.给服务器写数据代码

    //如果是0if(flag[num] == 0){//设置标记的变量值也为1UA_Variant_setScalar(&ctrlValue[num],&trueflag,&UA_TYPES[UA_TYPES_BOOLEAN]);}else{//否则设置标记的数据值为0UA_Variant_setScalar(&ctrlValue[num],&falseflag,&UA_TYPES[UA_TYPES_BOOLEAN]);}//向OPC_UA服务器写入变量值int retval = UA_Client_writeValueAttribute(client, ctrlId[num], &ctrlValue[num]);if(retval == UA_STATUSCODE_GOOD) {if(*(UA_Boolean *)ctrlValue[num].data){ctrlbtn[num]->setStyleSheet("QPushButton{background:red}");flag[num] = 1;}else{ctrlbtn[num]->setStyleSheet("QPushButton{background:gray}");flag[num] = 0;}}

8.通信效果,x1为1,1灯的颜色变红;x2为0所以2灯为灰色;点击下面按钮2,y2值变为1.

9.至此QT的客户端基本说明完毕,客户端源码下载地址:https://download.csdn.net/download/xipengbozai/16043753?spm=1001.2014.3001.5501。有疑问的可以加我微信X241602

欢迎加QQ群

QT实现OPC_UA客户端程序以及与OPC_UA服务器通信相关推荐

  1. daytime协议的服务器和客户端程序,用socket套接字实现daytime协议的服务器和客户端程序精编版.doc...

    用socket套接字实现daytime协议的服务器和客户端程序精编版.doc 还剩 11页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: ------- ...

  2. 关于Qt客户端程序开发的一些思考

    最近一直忙于新项目Qt客户端程序的开发工作,对于整个项目开发中的一些坑点做一些总结,余惟愿诸友远避之. 1.关于UI界面开发.我的建议是,能用贴图就贴图.尽管我们知道Qt提供了"强大&quo ...

  3. qt单步调试linux程序,用Qt 调用GDB调试 Arm程序 详细步骤----可单步执行每一行

    前言 本人交叉编译环境 Ubuntu 10.04(虚拟机),编译工具链 arm-hisiv100nptl-linux,Qt 4.8.5 ,QtCreator1.3.1 1.在虚拟机Ubuntu 10. ...

  4. Ubuntu16.04LTS环境下搭建MQTT服务器以及QT实现MQTT客户端

    MQTT服务器搭建 使用EMQX搭建MQTT服务器,EMQX 4.2.14 for Ubuntu 16.04下载 下载zip包,选择安装方式为zip,cpu架构选择x86_64 按照网页的指示进行下载 ...

  5. QT实现简易ctp程序

    1.开发环境 qt5.9.9 msvc2017环境(mingw不能运行) 以及自带的Qt Creator,上期提供的穿透式api,并且导入qcustomplot库以实现图表效果. 本程序借鉴了b站视频 ...

  6. 嵌入式客户端程序开发大汇总

    先不说嵌入式客户端程序开发,先看发展最好的客户端程序开发领域:PC端(Win.IOS).浏览器.移动端(Android.IOS).这些客户端开发程序员人数众多.生产力极高的工具.良好的生态环境.客户端 ...

  7. 使用 acl 库编写发送邮件的客户端程序

    2019独角兽企业重金招聘Python工程师标准>>> 邮件做为最早和最广的互联应网用之一,已经与人们的生活息息相关.我们虽然经常使用 Outlook Express/Outlook ...

  8. 基于XMPP的IOS聊天客户端程序(XMPP服务器架构)

    最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为: <message type="chat" from="kang@server.com" t ...

  9. TCP 客户端程序开发

    TCP 客户端程序开发 1. 开发 TCP 客户端程序开发步骤回顾 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 2. socket 类的介绍 导入 socket ...

最新文章

  1. python培训班那家好-江苏南京Python培训班哪家好
  2. 进程在与Windows Process Activation Service通信时出现严重错误 w3wp.exe错误
  3. Linux学习之用户管理和组管理
  4. TiDB-新一代数据库入门介绍
  5. 虚拟机VMware下安装Linux系统,Python3.7之TensorFlow安装
  6. Oracle 10g Data Guard
  7. gcc,make和cmake
  8. linux文件移动到hdfs,解决从linux本地文件系统上传文件到HDFS时的权限问题
  9. 时间格式 asp.net
  10. 下列哪种不是python元组的定义方式_python笔试题
  11. PAT-Basic Level-1001 害死人不偿命的(3n+1)猜想;
  12. 用Python把PDF文件转换成Word文档
  13. [渝粤教育] 西南科技大学 广告学 在线考试复习资料
  14. mysql rank_MySQL实现rank排名(一)自定义变量@rank
  15. 数据库kettle,datax,DBMigration,RazorSQL几款迁移工具使用感受(以及如何迁移表的结构如主键,索引,约束等)
  16. selenium处理iframe标签
  17. 编程练习:头条校招题
  18. 博士毕业论文英文参考文献换行_一文解决中英参考文献混排问题
  19. word2013无法打开doc文件显示正在受保护视图中打开解决方法
  20. 【SDCC讲师专访】腾讯潘安群:腾讯云金融级数据库TDSQL分析

热门文章

  1. 如何画双层和四层的PCB
  2. Wc2015……酱油记?
  3. ICWPT 2022 | 从技术突破到生态构建,小米坚持做充电领域的拓荒者和领先者
  4. springboot 结合 ice(飞冰) 实现上传功能
  5. 使用Audacity制作ACX有声读物 ACX Audiobook Production Using Audacity
  6. 实体门店为什么要做共享股东模式
  7. Python实现海洋测绘基于最小二乘法的潮汐调和分析
  8. [k8s]如何处理dockerfile无expose情况下在k8s里暴漏访问
  9. 向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)
  10. 音乐考试分数计算机,音乐艺考分数怎么算 音乐艺考分数比例