【转载】OPC,OPCDA,OPCUA傻傻搞不清楚,走过路过不妨看一看

文本原创微信订阅号诸子东,转载或抄袭请注明出处。



此前我写过一遍文章,通俗讲解OPCUA。虽说是通俗的讲,但是还是略有点深入。因为是要基于大家对OPC有所了解的基础上,再去了解OPCUA的。


这篇文章这次不走技术层面讲解,而是让大家怎么样更好地理解和区分OPC,DA,UA这些概念,别傻傻搞不清楚了。


话不多说,先来看看什么是OPC。


OPC是OLE for ProcessControl的缩写,即应用于过程控制的OLE。

OPC规范包括OPC服务器和OPC客户端两个部分。其实质是在硬件供应商和软件开发商之间建立一套完整的“规则”。


不好意思,以上两句话,我摘抄了百度百科。相信很多人查阅OPC资料,也看过这个资料啥的。

但是,看了之后,是不是感觉跟没看一样。连OPC是啥,就大谈价值,SaaS,框架,应用,最多也只是空谈罢了。


好在我们不是解释概念,而是聊。聊就不一样了,抛开那些乏味的专业术语。


我们先聊聊这个背景。

OPC的诞生


OPC是在1996年前后,由几大自动化供应商组成一个工作组,负责开发基于COM和DCOM的数据访问标准,称之为OPC。

什么是COM和DCOM技术及数据访问,我们暂时不讨论。

但可以肯定的是,这个事,和微软有关系。因为在90年代,微软的操作系统开始占据市场,并且自动化供应商也没有更好地选择。

在微软推出COM和DCOM技术之后,自动化供应商在产品中开始使用这个技术。怎么说呢,因为可能在当时,没有比这更好的选择了。


但是呢,每家自动化用法不一样,对于做SaaS的呢,有时候在一个项目或者软件里,不可能只使用一家供应商或一种设备的。为了解决这个问题,几大自动化公司就站出来说,我们来搞一套标准的吧,为了工业,为了未来,搞。

于是他们把这一套标准就称之为OPC了。

注意这个时间,96年左右。也就是Windons 95 刚出来。也就是在视窗系统出来之前,用的都是DOS系统呀。现在还知道DOS系统的,是真的老工控了。


那时候互联网还没有发展起来,更别说物联网了。

在自动化行业,还是有数据采集需求,那采集的数据去哪里呢,就要去到上位机系统,上位机也就是Windows了,要知道那时候Windows的市场占有率多可怕。


也就是在同一台电脑,又要进行数据采集,又要进行数据显示,又要应用在现场,这种电脑,很多时候往往就是工控机的角色了。

而电脑采集数据,无非就是通过串口,以太网,或者就是板卡集成到PC主机数据采集。


这就为难了那个做纯软件开发,他们做的是UI的软件,也就是类似组态王之类的界面显示系统,但是每家的数据采集都不一样,没有个标准和统一,也可以理解为硬件商提供的数据采集都不一样。

也就是硬件厂商A把数据采集做好了,同时软件客户B把UI软件设计出来了,但是中间缺乏一个桥梁。UI调用数据,查阅和管理数据,按理说是可以用数据库的。

在当时,可能COM和DCOM技术比使用数据库更为方便,以及更为开发者接受。所以自动化更倾向于使用COM和DCOM技术。


也就是自动化供应商采集数据,封装成COM组件或服务。做UI系统的,比如组态王之类的,只需要调用COM组件或服务,就完美解决之前的数据对接桥梁问题。

再加上有了OPC标准之后,软件的开发复用性更强一些,也促进了SaaS的发展。虽然,目前很多都是伪SaaS模式,这个在后续的文章和大家交流为什么会有伪Saas存在。

至此,OPC的来龙去脉就差不多清楚了。

DA (OPC DA)


那什么又是OPC DA呢。 这个D,也就是Data,数据访问了。

OPC 只是一个标准。那用OPC来干嘛,用OPC来进行数据访问。

所以,只要前面了解了OPC标准,再了解OPCDA 就很清楚了。

也就是OPCDA的数据访问,都是同一台电脑里发生的。

OPC数据采集端,通过串口,以太网,板卡,采集到的数据,作为OPC服务端,以便OPC客户端来进行访问。

也就是应用程序,比如组态王,就是客户端程序。

这里的客户端和服务端,并不是我们所说的TCP/IP里的客户端和服务器。

在同一台电脑里,应用程序访问数据,是通过DOM技术来访问的。

再通俗一点,比如A程序把采集到的数据写到一个指定文件里。

然后B程序到指定的文件读取数据并显示出来的。

所以OPCDA的数据采集,客户端和服务端的角色就是类似于A程序和B程序的角色一样。

所以,我们目前见到的OPCDA数据采集,都是在同一台电脑里发生的。

而且,是因为基于COM,DCOM技术,限定了这个只能是在Windows实现。如果有客户说他们在安卓系统或者别的系统实现了OPCDA,那可得悠着点。毕竟这么古老的技术,要么就是忽悠的,要么就是行业里的技术牛人,硬是跨平台跨系统实现。

难道就是说,OPCDA就不能远程访问了吗?

这里很多人就容易搞不清楚了。


首先OPCDA不是协议。虽说OPC是一个标准,但是这个标准并不是指某个通信协议标准,而是指某种技术的使用标准和规范。

那,既然OPCDA不是协议,更不是某种TCP协议,那是不是就意味着OPCDA不能在两台电脑之间访问呢。

其实呢,也不是的。


在Windows里,就存在一种两台电脑之间通信的机制或协议。叫RPC,也就是远程过程调用。这里不作详细解析。

简单地说,OPC DA呢,好比如电脑上的某个资源或文件之类的,而Windows的RPC,就是为了让两台电脑可以互相访问资源的。OPCDA的技术是COM技术,所以有些远程访问OPC,也看到描述为OPC COM之类的。

但是像这种还是基于PC到PC的。

也就是纯OPCDA,如果想要支持远程访问,那就必须配置支持RPC服务等。实际上还是借助了RPC通道或服务来间接使用OPCDA的访问。而且这种应用呢,也局限于在Windows的使用。虽然也会一些人觉得,RPC可以不仅是在Windows使用呀。


如果RPC可以完全解决OPCDA的远程访问问题,那就没有OPCUA了。

OPCUA登场

UA 也就是统一框架。


为什么要出OPCUA,最直接的原因是啥呢。

2000年以后,很多嵌入式设备开始出现,linux系统,wince系统等逐渐应用在自动化设备中。

而这些设备基本不能使用COM ,DCOM技术,甚至开发者也不愿意在这些嵌入式设备上使用这些技术和应用。


为了能支持跨平台,跨系统,OPCUA应运而生了。


因为此前OPCDA如果要在两台电脑间访问,除了复杂的配置,操作的繁琐,还存在安全性问题。使得OPCDA再难以满足多元化需求。

现在有需要远程访问OPC的,都在使用OPCUA了,远程访问OPCDA也逐渐不被大家接受。慢慢地OPCDA也只存在于单机服务了。


OPCUA除了约定了数据等定义规范,同时还支持了TCP/IP协议。使得远程访问不再局限于使用RPC技术。

也就是OPCUA终于有了属于自己的协议,不再寄人篱下看别人颜色了。

同时数据结构,存储,映射等,不再使用COM/DCOM技术,就意味着不再限制于Windows了。

在各种嵌入式系统也可以实现OPCUA,并且可以在各平台,各系统进行数据通信访问。

同时OPCUA将DA,HAD,AE整合在一起。也就是支持数据(有时候也叫实时数据),历史数据,报警和事件,通通一个协议搞定。


因为是独立的TCP/IP协议,不再受限于别的技术,SCADA项目陆续使用OPCUA技术,也出现了很多成功的SCADA系统。


而且各大互联网平台,也都在逐渐接受和推广OPCUA。相对于MQTT来说,OPCUA是能实现大一统。毕竟MQTT只是一个开放通道,每家的MQTT版本,主题都不一样,格式也不一样。


当然OPCUA和MQTT也不是一个量级的,本身也没有一定的可比性。

这里讲OPCUA的篇幅可能有点少,但更多是主要将OPC,DA, OPCDA,OPCUA区别清楚。

如果想多了解一些OPCUA,可关注订阅号诸子东,查看之前的那篇通俗讲解OPCUA。

最后,我们再复盘总结一下。

首先,什么是OPC。

OPC就是基于COM/DCOM的数据访问的标准。

DA,就是数据访问。

OPCDA,就是基于OPC标准的数据访问。

因为是基于COM技术的,意味着OPCDA只能在Windows上使用。

OPCDA可以在两台电脑之间访问,但不是OPCDA协议,是通过Windows的RPC,具体看不同的windows设置。

OPCDA在两台电脑之间访问,会使得PC存在一定的安全问题。

如果想在嵌入式设备实现OPCDA的数据采集,我劝你还是放弃。



OPCUA,也就是OPC统一框架。

OPCUA包含DA,HAD,AE。并不等价于OPCUA包含OPCDA。

DA和OPCDA是两回事。


OPCUA就是解决OPCDA几大问题:

1 OPCDA只能使用COM技术,限制在Windows使用。

2 安全问题。

3 数据模式结构定义等的优化。

4 跨平台跨系统访问。

5 有专属的TCP/IP协议,其协议标注为IEC62541。

想了解更多物联网文章,敬请关注诸子东,您身边的物联网协议顾问。

你可能感兴趣的:(【转载】OPC,OPCDA,OPCUA傻傻搞不清楚,走过路过不妨看一看)