1.OPC_UA服务器准备工作
1.关于OPC_UA服务器的搭建可以参考前面一篇文章:https://blog.youkuaiyun.com/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.youkuaiyun.com/download/xipengbozai/16042848,读者也可以去GitHub下载,然后自己编译。
2.过工程的pro文件如下
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OPCUA_example
TEMPLATE = app
QMAKE_CFLAGS += -std=c99
LIBS += -lpthread libwsock32 libws2_32
SOURCES += main.cpp\
widget.cpp
HEADERS += widget.h \
open62541.h
unix|win32: LIBS += -L$$PWD/dll/ -lopen62541
INCLUDEPATH += $$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]);
//根据读取的数据更新UI
if(retval == UA_STATUSCODE_GOOD) {
if(*(UA_Boolean *)showValue[i].data)
{
showbtn[i]->setStyleSheet("QPushButton{background:red}");
}
else
{
showbtn[i]->setStyleSheet("QPushButton{background:gray}");
}
}
7.给服务器写数据代码
//如果是0
if(flag[num] == 0)
{
//设置标记的变量值也为1
UA_Variant_setScalar(&ctrlValue[num],&trueflag,&UA_TYPES[UA_TYPES_BOOLEAN]);
}
else
{
//否则设置标记的数据值为0
UA_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.youkuaiyun.com/download/xipengbozai/16043753?spm=1001.2014.3001.5501。有疑问的可以加我微信X241602
欢迎加QQ群