EN
当前所在位置:首页 > 技术知识 > OPC UA

技术知识

北京盟通科技是工业自动化领域的高科技企业,依托于核心团队多年的海外和行业经验,致力实时现场总线技术及工业通讯技术的推广

OPC UA 专题一:OPC 的诞生

发布时间:2020-02-20

       如果说OPC UA是自工业4.0标准推出以来最火的通讯协议,似乎一点也不为过。下至现场传感器采集,上至工业云,自动化领域中或多或少都会涉及到OPC UA。
       然而,在我们近几年的推广过程中发现,我们国内大部分企业都在跟随先进企业的产品功能,至于OPC UA为什么会被工业4.0标准重视?各大自动化厂商为什么会纷纷追捧?OPC UA究竟是一种通讯协议标准还是一个技术规范?如何能正确使用OPC UA技术?等等一系列问题并不能很清晰地认识和解答。
       我们希望根据以往的产品和技术经验做一个专题向大家介绍OPC UA技术,以便这种先进的技术在国内更大范围的推广开来,提高更多企业的效率。
       本篇文章将对OPC的诞生做简单的阐述。

1. OPC 基金会

       从九十年代初开始,基于PC和软件的自动化系统在工业自动化应用中的使用迅速增加,尤其是基于Windows的PC用于可视化和控制类应用。过去数年中,开发标准的自动化软件主要努力之一是访问设备中的自动化数据,此过程使用了无数不同的总线系统、协议和接口。
在更早的DOS时代,应用程序软件确实存在类似的问题。例如对于打印机的访问,每个应用程序都需要为所有支持的打印机编写自己的打印机驱动程序。Windows通过将打印机支持合并到操作系统中,解决了打印机驱动程序的问题。这个打印机驱动程序接口可以为所有需要打印机访问的应用程序提供服务。Windows打印机驱动程序由打印机制造商提供,而不是由应用程序开发人员提供。
       同打印机驱动程序一样,人机界面(HMI)和监控与数据采集(SCADA)软件的供应商也存在类似的问题。为了解决这个问题,1995年由费舍尔-罗斯蒙特、罗克韦尔软件、Opto 22、Intellution和Intuitive Technology公司发起了一个工作组,其目标是为设备驱动程序定义即插即用标准,以标准化接口的方法访问基于Windows系统的自动化数据。
       1996年8月,该工作组发布了OPC数据访问(OPC Data Access)规范。当时OPC技术成功的原因之一是仅关注核心问题,减少主要功能的定义过程,并限制API的定义,而使用Microsoft Windows COM和DCOM技术替代。
       同年9月,一个可提供合规性和互操作性的标准检验及认证的正式组织—OPC基金会在芝加哥ISA展会上成立,OPC基金会开始将其现有规范放到网上为更多的企业服务。
       1998年,OPC数据访问(OPC Data Access)规范的第二版推出,大量产品基于该版本实现了标准化,也是OPC产品最重要的接口。最终,大量SCADA和HMI系统、DCS、MES都支持OPC接口。OPC变成一种被普遍接受的标准,能够在制造和过程工业中的不同厂家的自动化系统之间交换数据。
       经历了12年后,根据数据统计,OPC基金会会员已超过450家,其中囊括了全球众多自动化系统的相关供应商,下图显示了按会员类别和地区分类的OPC基金会会员统计。OPC基金会在其产品目录中仅来自OPC基金会会员的产品就包含了1500多种。整个OPC市场有超过2500多家供应商,提供超过15000种支持OPC的产品。

OPC基金会会员统计/会员按类别统计(左)和会员按地域统计(右)

2. Classic OPC 功能接口

       OPC基金会在规范中定义了许多软件接口,以标准化从流程级到管理级的信息传输。根据工业应用中的不同要求,定义了三个主要的OPC规范:数据访问(DA)、警报和事件(A&E)以及历史数据访问(HDA)。DA规范描述了对当前过程数据的访问;A&E描述了基于事件的信息接口,包括对过程警报的确认;而HDA描述了访问历史数据的功能。所有接口都提供一种在地址空间中索引相关可用信息数据的方法。
       OPC使用客户端-服务器(Client-Server)方式进行信息交换。OPC服务器像设备一样封装过程信息的来源,通过其接口定义保证信息可以被访问。OPC客户端连接到OPC服务器,访问服务器并使用所提供的数据。处理数据的应用程序既可以是客户端,也可以是服务器。下图显示了OPC客户端和服务器的典型用法。

OPC客户端和服务器的典型用例
       Classic OPC接口基于Microsoft的COM和DCOM技术。它的优势是减少标准设计的工作量,进而减少不同API需求的定义,而且无需定义网络协议或进程间通信的机制。但是两个主要缺点是OPC对Windows平台的依赖性以及OPC进行远程通信时的DCOM问题。DCOM的问题在于配置困难,超时时间非常长且不可配置,并且不能用于Internet通信。

3. OPC 数据访问(OPC Data Access)

       OPC Data Access接口允许读取、写入和监视过程数据的变量。主要应用是将实时数据从PLC,DCS和其他控制设备移至HMI和显示客户端。OPC DA是最重要的OPC接口,使用Classic OPC技术的产品中有99%都实现了该功能。
       OPC提供的实时数据可能无法一直访问,例如:当与设备的通信暂时中断时。 Classic OPC技术通过提供数据的时间戳和数据传输质量来解决此问题。数据传输质量指定数据是准确的(良好),不可用的(不良)还是未知的(不确定)。

4. OPC 报警和事件(OPC Alarm & Events

       OPC A&E接口可以接收事件通知和报警通知。事件是单独通知,用于通知客户端事件的触发。报警是通知客户端有关过程中条件的变化。例如,报警的条件可以是罐的高度,在此示例中,当超过最大位置或低于最小位置时可能会发生条件变化。
       为了接收通知,OPC A&E客户端需要连接到服务器并订阅通知,然后接收服务器中触发的所有通知。为了限制通知数量,OPC客户端可以指定某些过滤条件。

5. OPC 历史数据访问(OPC Data Historical Access)

       OPC Data Access提供对实时的、持续变化的数据访问,而OPC历史数据访问则提供对已存储数据的访问。从简单的串行数据记录系统到复杂的SCADA系统,都可以以统一的方式检索历史数据。
       OPC历史数据访问主要功能是通过三种不同方式读取历史数据。第一种方法从存档中读取原始数据,客户端定义一个或多个变量以及他要读取的时间范围。服务器返回在指定时间范围内归档的所有值,直至客户端定义存储的最大值。第二种方法读取指定时间戳的一个或多个变量的值。第三种读取方法从指定时间域的历史数据库中为一个或多个变量计算聚合值,值始终包括相关的通讯质量和时间戳。

6. 其他 OPC 标准接口

       OPC还规范了一系列扩展标准为满足基本规范以外的特殊需求。下图是所有Classic OPC功能框图。

Classic OPC 接口规范
       OPC安全性标准规范了如何控制客户端对服务器的访问,以保护敏感信息并防止未经授权的操作修改过程数据。
       OPC复杂数据、OPC批处理和OPC数据交换(DX)是OPC DA的扩展。复杂数据定义了如何使用复杂的结构化数据类型描述和传输值。OPC DX通过定义客户端操作和客户端内部的服务器配置接口来规范数据访问服务器之间的数据交换。OPC批处理扩展的DA,以满足批处理的特殊需求。
       OPC命令功能定义了通过OPC调用方法或执行程序的机制。该规范在OPC UA启动后才完成,所以它从未发布过,但其内容和功能已完全整合到UA中。

7. OPC XML-DA

       OPC XML-DA是第一个与平台无关的OPC规范,用HTTP / SOAP和Web Service技术取代了COM / DCOM。因此,引入了与供应商和平台无关的通信基础架构,并保留了广泛接受的OPC数据访问的功能。
由于典型的Web服务是无状态机制的,因此该功能被简化为用于交换OPC数据访问信息的最小方法集,而无需创建和修改通信上下文的方法。只需8种方法即可涵盖OPC数据访问的关键功能。八项服务如下:
       · GetStatus-验证服务器状态
       · 读取-以读取一个或多个项目值
       · 写入-以写入一个或多个项目值
       · 浏览和获取属性-以获取有关可用项目的信息
       · 订阅-以创建项目列表的订阅
       · SubscriptionPolledRefresh-用于交换订阅的更改值
       · SubscriptionCancel-删除订阅
       OPC XML-DA专为互联网访问和企业集成而设计,基于其平台独立性,它主要在嵌入式系统和非Microsoft平台上使用。但是由于资源消耗高和性能有限,对于这种类型的应用程序没有达到预期的结果。

8. 总结

       Classic OPC在九十年代的技术需求背景下,取得了巨大的成功。但是随着技术的发展和需求的变化,Classic OPC技术的弊端越来越明显。所以OPC UA技术应运而生,OPC UA技术的基础是Classic OPC。OPC UA工作组在设计过程中希望它能够得到更广泛的应用。所以Classic OPC被设计成设备驱动接口,而OPC UA被设计成系统接口。OPC UA规范究竟在技术层面解决了哪些问题,我们下一篇文章详细分析。