网站目标定义,市场推广,格格导航官网,响应式网站的宽度【QT】opcuaServer 的构建 前言opcuaServer实现测试 前言
在博文【opcua】从编译文件到客户端的收发、断连、节点查询等实现 中#xff0c;我们已经介绍了如何在QT 中创建opucaClient 。在本期的博文中#xff0c;我们基于之前的部署环境#xff0c;介绍一下如何构建opcuaS… 【QT】opcuaServer 的构建 前言opcuaServer实现测试 前言
在博文【opcua】从编译文件到客户端的收发、断连、节点查询等实现 中我们已经介绍了如何在QT 中创建opucaClient 。在本期的博文中我们基于之前的部署环境介绍一下如何构建opcuaServer所用的第三方库依旧是open62541。
opcuaServer
OPC UAOpen Platform Communications Unified Architecture是一种开放的工业通信标准用于在各种工业自动化系统和设备之间进行通信和数据交换。OPC UA Server是一个实现了OPC UA协议的服务器用于接收、处理和传输数据。它可以提供一个统一的接口使不同类型的设备和系统能够相互通信。
OPC UA Server具有以下特点和功能
强大的安全性OPC UA Server支持多种安全机制包括用户认证、访问控制和数据加密以确保数据的安全性和完整性。灵活的数据模型OPC UA Server使用基于对象的数据模型可以根据实际需求定义和组织数据使数据在不同设备和系统之间的传输更加灵活和高效。高性能和可扩展性OPC UA Server具有优化的通信协议和异步处理机制可以处理大量的数据和请求同时支持水平和垂直的扩展。多平台支持OPC UA Server可以运行在不同的操作系统和硬件平台上包括Windows、Linux和嵌入式系统等。历史数据存储和查询OPC UA Server可以将历史数据存储在数据库中并支持灵活的查询和检索功能使用户可以方便地分析和使用历史数据。
OPC UA Server可以用于各种工业应用领域包括制造业、能源管理、楼宇自动化、物联网等。它为不同的设备和系统提供了统一的数据通信和集成方案促进了工业自动化的发展和应用。
实现
我们基于官方示例server.cpp在qt中进行QMainWindow 的创建由于是基于之前客户端的文件中进行再次创建因此需要在main.cpp 文件中切换新的cpp 文件
#include mainwindow.h
#include opcserversht.h#include QApplication
#include QJsonObject
int main(int argc, char *argv[])
{QApplication a(argc, argv);//client
// MainWindow w;
// w.show();//serveropcserversht w;w.show();return a.exec();
}
然后就可以在opcserversht 类中进行服务端创建代码如下
#include opcserversht.h
#include ui_opcserversht.h
#include open62541.h#include signal.h
#include stdlib.h
//static void ostopHandler(int sign) {
// UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_SERVER, received ctrl-c);running false;
//}
opcserversht::opcserversht(QWidget *parent) :QMainWindow(parent),ui(new Ui::opcserversht)
{ui-setupUi(this);//// signal(SIGINT, stopHandler);
// signal(SIGTERM, stopHandler);UA_Server *server UA_Server_new();UA_ServerConfig_setDefault(UA_Server_getConfig(server));// add a variable node to the adresspaceUA_VariableAttributes attr UA_VariableAttributes_default;UA_Int32 myInteger 42;UA_Variant_setScalarCopy(attr.value, myInteger, UA_TYPES[UA_TYPES_INT32]);attr.description UA_LOCALIZEDTEXT_ALLOC(en-US,the answer);attr.displayName UA_LOCALIZEDTEXT_ALLOC(en-US,the answer);UA_NodeId myIntegerNodeId UA_NODEID_STRING_ALLOC(1, the.answer);UA_QualifiedName myIntegerName UA_QUALIFIEDNAME_ALLOC(1, the answer);UA_NodeId parentNodeId UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);UA_NodeId parentReferenceNodeId UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);UA_Server_addVariableNode(server, myIntegerNodeId, parentNodeId,parentReferenceNodeId, myIntegerName,UA_NODEID_NULL, attr, NULL, NULL);/* allocations on the heap need to be freed */UA_VariableAttributes_clear(attr);UA_NodeId_clear(myIntegerNodeId);UA_QualifiedName_clear(myIntegerName);UA_StatusCode retval UA_Server_run(server, running);UA_Server_delete(server);qDebug() (retval UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE);
}opcserversht::~opcserversht()
{delete ui;
}
测试
运行qt 文件然后在应用程序输出中可以查看对应的网址 这里就是opc.tcp://ZW-B-169:4840/
通过UaExpert 创建客户端进行连接可以查看创建的节点信息