精华内容
下载资源
问答
  • opcua 参考教程开发时需要的一些相关DLL,资源来自网上,供大家学习之用,不足之处希望大家见谅学习。
  • opc ua 客户端与服务端开发demo,opc ua客户端与服务端控件源码
  • OPC UA服务器/客户端开发工具

    千次下载 热门讨论 2014-08-26 09:48:50
    工具包里有三个文件夹,第一个是OPC UA Client,是OPC UA客户端安装包,可以直接安装运行,可以用来测试服务器,第二个是SDK 工具包,里面是基于.NET的OPC UA服务器和客户端的开发工具,安装后有很多Demo和样例;...
  • 物联网IoT协议之OPC UA快速入门教程

    千次阅读 2020-11-16 15:18:35
    八大物联网IoT上云协议快速入门教程物联网IoT协议之mqtt快速入门教程物联网IoT协议之OPC UA快速入门教程物联网IoT协议之 LoRaWAN快速入门教程物联网IoT协议之NB-IoT/CoAP快速入门教程物联网IoT上云协议之Modbus快速...

    本文转载,原文作者:源码先生, 文章链接:https://www.debugself.com/2019/11/27/opc_guide/, 请勿用于商业用途。如有侵权,请告知删除,谢谢!

     

    八大物联网IoT上云协议快速入门教程
    物联网IoT协议之mqtt快速入门教程
    物联网IoT协议之OPC UA快速入门教程
    物联网IoT协议之 LoRaWAN快速入门教程
    物联网IoT协议之NB-IoT/CoAP快速入门教程
    物联网IoT上云协议之Modbus快速入门教程
    IPv6快速入门教程
    物联网IoT协议之6LoWPAN快速入门教程
    物联网IoT协议之HTTP快速入门教程
    车联网V2X快速入门教程

    什么是OPC UA

    OPC UA是一套通信协议标准,完成设备与设备,设备与应用之间的数据交互。源码先生的物联网IoT协议之mqtt快速入门教程中的mqtt也是一套数据交互的协议标准,两者虽然协议内容不同,但最终目的一致,都是为了实现不同系统的数据交互。

    OPC UA前身是OPC,第一个OPC规范在1996年发布,包括一整套接口、属性和方法的标准集;OPC基于Windows操作系统的COM技术,所以只能运行在Windows上。

    OPC UA是OPC的重大升级,在平台独立性、安全性,可靠性等方面做出了升级,更能适应现代工业通信的需求,虽然升级内容很多,但OPC UA 对比OPC并无革命性的变化。

    OPC UA用在什么场景

    OPC主要用在自动化控制系统、仪器仪表及过程控制系统,具有很明显的工业基因,而且OPC发展这么多年,也很少扩展到非工业领域。

    随着近年物联网、工业4.0、工业互联网、IT和OT(Operational Technology)融合等需求的出现,人们希望把工业设备融入到物联网中,深耕工业领域的OPC UA,自然成为大家关注的重点对象!

    通过对比mqtt入门OPC UA

    mqtt和OPC UA都是为了实现不同系统的数据交互,mqtt相对比较简单,mqtt通过发布订阅实现数据交互,而OPC UA要复杂不少,通过对比两者的差异,对入门OPC UA很有帮助。

    拓扑结构的对比

    在mqtt中,设备以及应用程序都作为客户端连接到mqtt服务器(Broker),形成以mqtt服务器为中心的拓扑结构。

    在OPC UA中,设备不是作为客户端,而是作为OPC UA Server提供各种服务,应用程序作为客户端连接到设备,调用OPC UA Server提供的各种服务

    OPC UA中,设备除了作为OPC UA Server,也可以同时作为客户端连接到其他设备,形成非中心化的拓扑结构

    业务模型对比

    mqtt标准中没有定义业务模型,mqtt服务器只是个中转站,用来透传转发多个客户端的消息。应用程序需要在应用层自定义业务模型,主流物联网云平台都使用类似json的格式描述业务模型,阿里云的物模型如下图

    OPC UA中,使用面向对象的方式定义业务模型。面向对象中通过类(包括类成员变量,类成员函数,类实例),以及类之间的继承关系实现对业务的建模,而OPC UA的通过节点,以及节点之间的引用关系实现对业务的建模

    OPC UA的节点(Node)

    节点是OPC UA数据交互的基本单元,客户端和服务器之间的交互通信,都是基于节点进行的。OPC UA中预定义了8种节点:

    • ObjectNode
    • ObjectTypeNode
    • VariableNode
    • VariableTypeNode
    • MethodNode
    • ReferenceTypeNode
    • DataTypeNode
    • ViewNode

    节点的属性用来描述节点,下面是所有节点共有的通用属性。

    OPC UA的引用(Reference)

    引用描述了两个节点之间的关系,用来把多个节点关联起来,OPC UA预定义了多种引用,下面重点介绍几种常用的引用。

    hasTypeDefinition

    hasTypeDefinition用来描述面向对象中类、类实例之间的关系

    • ObjectNode的hasTypeDefinition引用,指向了一个ObjectTypeNode,表示该ObjectNode的类型;
    • VariableNode的hasTypeDefinition引用,指向一个VariableTypeNode,表示该 VariableNode的类型。

    hasSubType

    hasSubType用来描述面向对象中的继承关系。当子类从父类继承后,子类拥有一个hasSubType引用指向父类。

    hasComponents

    hasComponents类似设计模式中的组合模式

    • ObjectNode一般都由多个VariableNode组成,ObjectNode包含某个VariableNode时,ObjectNode拥有一个hasComponents引用,指向该VariableNode;
    • VariableNode也可以包含子VariableNode,此时也用hasComponents描述它们的关系。

    Organizes

    Organizes用来指明两个节点的层次结构,可以类比为文件夹和文件的关系,通过Organizes,可以把多个文件(节点)组织到同一个文件夹(父节点)下面。

    完整的引用类图如下。

    OPC UA中的服务(Service)

    服务可以看做是OPC UA Server提供的API集合,也可以看做是RPC(Remote Procedure Call)接口集合,服务以方法的方式提供出来,服务使用了类似Web的请求-应答机制,当客户端调用一个服务时,客户端发送一个请求给服务器,服务器处理完成请求后,返回响应消息给客户端。

    客户端访问服务器提供的所有功能,都是通过调用服务完成。

    OPC UA预定义了37个标准服务,按功能分类如下图

    其中常用的服务有:

    • 通过读写服务,可以获取服务器上指定节点指定属性的值;
    • 调用服务,可以执行服务器上执行节点的方法;
    • 订阅数据变化和时间,可以监控服务器数据的变化。

    语义化对比

    mqtt标准中没有定义语义化的内容,应用程序要想知道设备提供了哪些功能/服务,只能靠应用程序和设备双方提前约定,或者通过阅读设备提供的说明文档

    OPC UA Server中节点的通用属性BrowseName、DisplayName、Description等描述了节点的属性和功能,应用程序连接到OPC UA Server后,通过浏览这些属性就可以了解设备提供的功能和服务

    发布订阅对比

    mqtt和OPC UA都提供了发布订阅的功能,OPC UA的发布订阅功能用来实现设备数据的监控,但设备数据有变化时,订阅者会实时收到通知。

    OPC UA之Hello World

    上面的概念很抽象,要先对OPC UA有初步的认识,还是来个Hello World比较靠谱。

    选择OPC UA Client

    免费且好用的OPC UA客户端,源码先生推荐Unified Automation公司的UAExpert,在其官网https://www.unified-automation.com/上注册后可以免费下载,也可以到百度云盘下载 https://pan.baidu.com/s/1TM1yQ-K1bUBDav_rABb75Q 下载,提取码:11f8 。

    选择”在线OPC UA Server”

    相比mqtt官方提供了一大票公开的mqtt测试服务器地址,公开的在线OPC UA Server少的可怜,源码先生在互联网上认真了搜了一番,只能找到唯一的一个,即opc.tcp://opcua.rocks:4840/ 。

    UAExpert连接”在线OPC UA Server”

    启动UAExpert,依次选择[Server]–[Add]–[Advanced],按下图输入信息。

    通过右键菜单连接服务器。

    第一次连接时,会提示服务器证书的警告,此时需要选择信任(Trust)服务器的证书。

    连接成功后,会在地址空间中显示出服务器的全部节点。

    展开节点后,会发现opc.tcp://opcua.rocks:4840/提供了一个Hello World的方法,可通过右键菜单调用该方法。

    Hello World方法需要输入参数,这里填入测试字符串“www.debugself.com” ,并点击Call按钮。

    服务器执行Hello World方法,返回执行结果。通过输出参数可以看出,Hello World方法,简单的把输入参数前面添加了Hello后,然后返回给客户端的。

    部署本地OPC UA Server

    上面的“在线OPC UA Server”网速很慢,测试时可能连接失败,这是也可以自己部署本地OPC UA Server。https://github.com/Pro/opcua-animal-server 是一个使用open62541构建OPC UA Server的示例,为了方便部署,我把opcua-animal-server构建成docker镜像(构建过程请参考 https://github.com/gdbself/opcua-animal-server/ ),方便一键本地部署。

    以Ubuntu系统为例,首先要安装docker(docker已经是云端开发的基础设施,不了解docker的话,有必要借此学习下docker的用法)。

    1
    
    apt-get install docker
    

    运行下面的docker命令部署本地OPC UA Server(真的一键部署,很方便,有木有?)。

    1
    
    docker run -d -p 4840:4840 debugself/opcua-animal-server:20191125
    

    UAExpert连接“本地OPC UA Server”

    启动UAExpert,依次选择[Server]–[Add]–[Advanced],按下图输入信息。

    注意,请把图中的192.168.170.128替换为自己Ubuntu电脑的IP地址。

    连接OPC UA Server成功后,可以看到服务器地址空间中显示了所有节点。选中Cat的Name节点,在右侧的属性框中可以看到这只猫的Value属性值为Cattie,意为这是猫的名称为Cattie。

    OPC UA的学习资料

    OPC UA中的概念很多,初学者会感觉OPC UA很复杂,这里再强调一次,OPC UA本质是按照面向对象的方式对业务建模,搞不懂OPC UA时,按照面向对象的思路,基本可以做到拨云见日。

    展开全文
  • OPC UA编程开发------基础知识整理

    千次阅读 2019-08-14 14:29:20
    1、OPC UA 2、节点 3、对象、变量和方法 对象类型和变量类型 简单对象类型 简单变量类型 复杂对象类型 复杂变量类型 4、编译 1、OPC UA OPC UA(Unified Architecture,统一架构)是下一代的OPC 标准,...
    展开全文
  • Prosys opcua Client

    2018-12-25 15:31:16
    opc UA 说明书,是prosys公司的opc ua客户端, 英文版本说明书,可以实现数据采集以及订阅
  • 由于目前已知的OPC UA的SDK基本都是收费的,只找到这个open62541是免费开源的。所以决定使用open62541做开发。 一 简介: open62541(http://open62541.org) 是一个开源的免费实现OPC UAOPC统一架构),用C99和...

        由于目前已知的OPC UA的SDK基本都是收费的,只找到这个open62541是免费开源的。所以决定使用open62541做开发。

    一 简介:

    open62541(http://open62541.org) 是一个开源的免费实现OPC UA(OPC统一架构),用C99和C ++ 98语言的通用子集编写。该库可与所有主要编译器一起使用,并提供实现专用OPC UA客户端和服务器的必要工具,或将基于OPC UA的通信集成到现有应用程序中。open62541库与平台无关。所有特定于平台的功能都是通过可交换的插件实现的。为主要操作系统提供了插件实现。

    open62541根据Mozilla Public License v2.0获得许可。因此open62541库可用于非开源项目。只有对open62541库本身的更改才需要在同一许可下发布。插件以及服务器和客户端示例都属于公共域(CC0许可证)。它们可以在任何许可下重复使用,并且不必发布更改。

    二 资源:

    1、官方网站:https://open62541.org/

    2、GitHub:https://github.com/open62541/open62541

    3、文档:https://blog.csdn.net/mikasoi/article/details/84799078

    4、参考:https://www.cnblogs.com/eatfishcat/p/9929524.html

    5、测试工具:https://blog.csdn.net/han_better/article/details/81666740

    三 过程:

    1、先从官网下载库文件,我下载的是Win64位的,解压后如下:

            

            其中bin文件夹下面有2个可执行文件,分别是Server和Client的Demo。

            我只使用了这里的“.c”和“.h”2个文件。

    2、建立工程:

            打开VS2017,建立名为“open62541Test”的C++空项目。

            open62541.c和open62541.h这2个文件到“open62541Test\open62541Test\”文件夹下。

            打开C:\Windows\System32目录,复制其中的ws2_32.dll文件到“open62541Test\open62541Test\”文件夹下。

            将上面三个文件分别添加到工程中相应位置:

            

            在源文件中新建一个Test.cpp文件:

            

            按照之前链接上的文档,添加client的测试代码:

    #include <stdio.h>	
    #include "open62541.h"
    #pragma comment(lib,"ws2_32.lib")    //加载ws2_32.dll的语句,必须要有,否则报错
    
    int main(void) {
    	UA_Client *client = UA_Client_new(UA_ClientConfig_default);
    	UA_StatusCode retval = UA_Client_connect(client, "opc.tcp://127.0.0.1:49320");
     //opc.tcp://localhost:4840   此处填写服务器的Access我使用的KepServer默认设置
    	if (retval != UA_STATUSCODE_GOOD)
    	{
    		UA_Client_delete(client);
    		return (int)retval;
    	}
    
    	/* Read the value attribute of the node. UA_Client_readValueAttribute is a
    	 * wrapper for the raw read service available as UA_Client_Service_read. */
    	UA_Variant value; /* Variants can hold scalar values and arrays of any type */
    	UA_Variant_init(&value);
    
    	/* NodeId of the variable holding the current time */
    	const UA_NodeId nodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER_SERVERSTATUS_CURRENTTIME);
    	retval = UA_Client_readValueAttribute(client, nodeId, &value);
    
    	if (retval == UA_STATUSCODE_GOOD &&
    		UA_Variant_hasScalarType(&value, &UA_TYPES[UA_TYPES_DATETIME])) {
    		UA_DateTime raw_date = *(UA_DateTime *)value.data;
    		UA_DateTimeStruct dts = UA_DateTime_toStruct(raw_date);
    		UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "date is: %u-%u-%u %u:%u:%u.%03u\n",
    			dts.day, dts.month, dts.year, dts.hour, dts.min, dts.sec, dts.milliSec);
    	}
    
    	/* Clean up */
    	UA_Variant_deleteMembers(&value);
    	UA_Client_delete(client); /* Disconnects the client internally */
    	return UA_STATUSCODE_GOOD;
    }

        配置Debug平台为X64。

    3、测试:

            按照前面链接上的说明进行KepServer配置。

            然后在上面代码中“if”的前面打个断点,运行到这里就会看到是否成功创建了client。同时也可以在KepServer中看到客户端数量变为“1”,说明连接成功。

    展开全文
  • prosys opcUA服务器和客户端模拟软件操作手册 OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法 — OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范 (OPC DA)、OPC历史数据访问规范 (OPC HDA)、 OPC ...
  • OPC UA C# 示例

    热门讨论 2018-01-16 11:35:27
    OPC UA C# 示例,使用C#语言 ,OPC UA client,实现与PLC通信,数据采集,紧提供开发示例及思路。
  • 前两天一直在搞open62541,因为milo库的server sdk没有办法根据xml生成结点文件,于是准备用open62541来搭建服务器,milo结合Spring...然后很多教程都是讲的linux,但是初学者用linux的还是比较少,所我写了这一篇帮...

    前两天一直在搞open62541,因为milo库的server sdk没有办法根据xml生成结点文件,于是准备用open62541来搭建服务器,milo结合Spring Boot来构件客户端。

    网络上大多是建立一个open62541.h的头文件,还有就是open62541.c的执行文件,但是新版好像并不是这样的。
    然后很多教程都是讲的linux,但是初学者用linux的还是比较少,所我写了这一篇帮助大家配置。

    但是open62541的构件相当的麻烦,我试了一下午都没搞明白,今天上午算是终于有点懂了。接下来,我一步一步来讲。

    为什么用open62541?

    1. 和商业库一样,可以根据uamodeler生成的xml文件直接生成相应的代码,步骤简单。
    2. 有完备的tutorial,适合新手,一步一步上手。
      3.国内有许多关于open62541的博客可供参考

    了解了理由,我们就需要来实操,首先是最难的一步,也就是安装

    1.首先是下载

    在这里插入图片描述
    我们进入open62541的github官网open62541,选择release版本。
    这里我用的是win64的版本。

    下好解压完成后得到如下文件,这个myserver.c是一会儿要建立的文件
    在这里插入图片描述

    2.建立工程

    在VS2019中新建一个C++的 空工程
    在这里插入图片描述
    打开工程,并打开工程所在的文件夹 E:\Code_Library\TeachingOPC\TeachingOPC,注意是sln里面的那个文件夹。复制我们下载的release文件夹中的这几个文件到工程文件夹中。
    在这里插入图片描述
    位置如下
    在这里插入图片描述
    在这里插入图片描述
    一个是open62541的x64库文件,一个是open62541的头文件
    在VS中打开工程,然后对所有文件选择 包括在项目中
    在这里插入图片描述
    这是包括完后
    在这里插入图片描述
    然后最玄学的地方来了,我到现在还是没搞明白为什么的东西。这个时候我们需要VS2015,对又要打开2015
    在这里插入图片描述
    然后在附加包含目录里面加上这一句,$(ProjectDir),然后就可以了。

    关于这点我也有疑问,这个操作我再VS2019上做就不行,然后在2015上做就可以,我猜测可能是因为原来的文件是用的2015编译的,但是这样操作后2019上面也可以使用,就很奇怪。

    接下来我们新建一个c或者cpp文件,输入以下代码,这个是源码:

    #include <open62541/plugin/log_stdout.h>
    #include <open62541/server.h>
    #include <open62541/server_config_default.h>
    #include <signal.h>
    #include <stdlib.h>
    
    static volatile UA_Boolean running = true;
    
    static void stopHandler(int sig) {
    	UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "received ctrl-c");
    	running = false; 
    }
    int main(void) {
    	signal(SIGINT, stopHandler);
    	signal(SIGTERM, stopHandler);
    	UA_Server *server = UA_Server_new();
    	UA_ServerConfig_setDefault(UA_Server_getConfig(server));
    	UA_StatusCode retval = UA_Server_run(server, &running);
    	UA_Server_delete(server);
    	return retval == UA_STATUSCODE_GOOD ? EXIT_SUCCESS : EXIT_FAILURE;
    }
    

    运行成功
    在这里插入图片描述

    PS:

    1. 如果Console里面出现异常报错的话,可能是端口被占用了,参见解决端口占用
    2. 如果提示少了个dll文件的话,去网上搜这个文件,有教程怎么下,具体什么名字我忘了,很好解决的问题

    这个就是windows端,建立opc server的方法

    展开全文
  • OPC UA---程序入门

    万次阅读 2017-07-16 19:49:01
    刚开始学习OPC UA,很多方面不是很了解,也不知道具体是做什么的。关于UA的概念介绍网上有很多,但是提供代码的并不多。作为刚开始学习的菜鸟,觉得open62541提供的源代码足够了。这是开源的代码,下载网址 ...
  • 一个opc ua模拟软件,用于快速调试OPC ua client程序。功能齐全,服务稳定。支持多种模式,全部数据类型,以及各种安全规则设定
  • 从官网下载的OPCUA2018年10月最新版。 内含java开发所需要的资源及教程 lib:OPCUA的jar samples:例程 tutorial:教程(英文,官方提供) 另外还有 lib-android:用于安卓的sdk codegen:不明用法,内有commandline...
  • Prosys Opc UA模拟器说明, 清晰介绍Prosys UA模拟器的使用方法,是你开发的好助手
  • OPC UA学习心得 — 4 OPC编程实现,基于Python

    千次阅读 多人点赞 2019-09-05 19:06:07
    FreeOpcUa,是使用Python开发基于OPC统一架构的优选第三方库,项目链接:https://github.com/FreeOpcUa/python-opcua 创建一个OPC服务器的步骤非常简单: from opcua import Server server = Server() # 实例化一个...
  • OPC UA Client 开发总结:基于open62541

    千次阅读 2018-11-13 16:52:19
    本文记录使用open62541开发OPC UA 客户端的一些要点。 测试服务器: open62541官网可下载各系统版本的库文件,经本人测试,windows系统下,x64版本支持win32和x64,也就是说库可能不需要切换; 由于本人电脑上没有...
  • OPC UA简介

    千次阅读 2019-12-28 10:21:27
    之前主要是简单的描述了OPC DA的开发,今天在这里整理一下OPC UA协议的相关内容。下面主要按照几个问题的方式来总结OPC UA协议 1、什么是OPC UA协议呢? OPC UA(Unified Architecture,统一架构)是下一代的OPC ...
  • Python实现OPC UA

    2021-08-29 10:59:38
    FreeOpcUa,是使用Python开发基于OPC统一架构的优选第三方库,项目链接:https://github.com/FreeOpcUa/python-opcua 创建一个OPC服务器的步骤非常简单: from opcua import Server server = Server() # 实例化一个...
  • 1.1、搭建OPC UA服务器环境 1.2、项目安装OPCUaHelper开源库 1.3、OpcUaHelper开源库 二、实现操作 2.1、连接OPC UA服务器,浏览所有节点信息 2.2、OpcUaHelper帮助类的常用方法 2.2.1、连接OPC UA服务器方法 ...
  • OPC UA开源库介绍

    2021-03-13 21:37:37
    UA-.NETStandard3. python-opcua4. opcua-asyncio5. node-opcua6. milo 1. open62541 支持跨平台,支持异步,文档写的也很好。下面是该库的信息, 官网地址:https://open62541.org/ Github地址:...
  • 最近兜兜转转,看了各种各样的OPC UA的库,尤其是看了OPC Foundation的库后,特别困惑,直到耐着性子看完milo库的Server例子后,对于如何写一个OPC UA服务器终于有了一定的了解。 Milo是Eclipse开源的项目之一,...
  • OPCUA 连接服务器入门实践

    千次阅读 2020-07-30 15:56:09
    之前通过OPCDA获取数据,由于OPCDA通过DCOM设置,对网络和服务器要求都比较复杂,公司计划使用OPCUA的方式连接服务器获取数据。 由于是第一次接触OPC开发,好多概念都不明白,弄了好几天才出结果。关于OPCUA的一些...
  • 本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心。具体的操作及支持的设备信息项目参照下面: 开源项目HslCommunication的github地址:...
  • flutter_OPCUA_client-源码

    2021-04-12 13:09:16
    ocpua_app 一个新的Flutter应用程序。 入门 该项目是Flutter应用程序的起点。 如果这是您的第一个...要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程,示例,有关移动开发的指南以及完整的支持参考。
  • OPCUA 开发学校

    2017-03-26 11:10:00
    ubuntu ,virtualbox,eclipse,C/C++ ,和印度老外比比划划,一个词一个词的的进行交流,还是很有意思的 ! 转载于:https://blog.51cto.com/7296556/1910428...
  • 市面上各种收费的UA软件都有一个诱人的功能,那就是直接解析XML获取结点集,而开源的OPC库中,据我所知只有open62541有,这可以极大的简化我们的流程,并且OPC UA Foundation已经建立了相应的NodeSet文件。...
  • 推荐的开发环境 请注意这些是推荐的,早期版本可能有效。 Eclipse 4.5.2(火星) Maven 3.3.3(包含在 Eclipse 4.5.2 中) JDK 8 JDK 6,以防您想确保构建的 jar 与 java 6 兼容 JDK 必须具有 sunjce_provider,例如...
  • 使用C#实现OPC-UA服务端

    千次阅读 多人点赞 2020-07-14 11:46:14
    C#实现OPC-UA服务端前言引入Nuget包初始化节点树实时刷新数据动态添加节点客户端读取历史数据客户端写入数据启动服务端总结 前言 最近接手了一个项目,做一个 OPC-UA 服务端?刚听到这个消息我是一脸懵,发自灵魂的...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 145
精华内容 58
关键字:

opcua开发教程