OPC接口与数据访问方法

简介: OPC接口与数据访问方法

OPC接口

OPC规范是一种硬件和软件的接口标准。OPC技术规范包括两套接口:定制接口(Custom Interface)和自动化接口(Automation Interface)。若客户的应用程序使用Microsoft VB之类的“脚本语言”(Scripting Languages)编写,则选用自动化接口。OPC定制接口则用于以C++来创建客户应用程序。当然,编程选用何种接口还取决于OPC服务器所能提供的接口类型,并非所有的OPC服务器都支持这两种接口。使用OPC定制接口可以达到最佳的性能,而OPC自动化接口则较简单。OPC服务器具体确定了可以存取的设备和数据、数据单元的命名方式及对具体设备存取数据的细节,并通过OPC标准接口开放给外部应用程序。各个OPC客户程序通过OPC标准接口对各OPC服务器管理的设备进行操作,而无需关心服务器实现的细节。数据存取服务器一般包括服务器、组和数据项3种对象。OPC服务器负责维护服务器的信息,并是组对象的容器。组对象维护自己的信息并提供容纳和组织OPC数据单元的架构。

自动化接口定义了以下3层接口,依次呈包含关系。


(1)OPC Server:

OPC启动服务器,获得其他对象和服务的起始类,并用于返回OPC Group类对象。


(2)OPC Group:

存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。


(3)OPC Item:

存储具体Item 的定义、数据值、状态值等信息。

由于OPC规范基于OLE/COM技术,同时OLE/COM的扩展远程OLE自动化与DCOM技术支持TCP/IP等多种网络协议,因此可以将OPC客户、服务器在物理上分开,分布于网络不同节点上。


OPC规范可以应用在许多应用程序中,如它们可以应用于从SCADA或者DCS系统的物理设备中获取原始数据的最低层,它们同样可以应用于从SCADA或者DCS系统中获取数据到应用程序中。如图所示的OPC的客户/服务器关系图描述了OPC在自动化系统中的应用。

cfb12456bcb645d7bb59ae411e49e7db.png


OPC数据访问方法

首先,OPC客户连接到OPC服务器上,并且建立OPC Group和OPC Item,这是OPC数据访问的基础,如果没有这个机制,数据访问的其他机能不可能实现;其次,客户通过其建立的Group和Item进行访问实现对过程数据的访问;最后,当服务器响应客户的过程数据访问请求并且处理完毕时通知客户。以上3方面的机制是OPC数据访问服务器必须要实现的。客户的过程数据访问包括过程数据的读取、更新、订阅、写入等,过程数据的读/写还分同步读/写和异步读/写。建立OPC连接后,客户应用程序一般可以通过以下3种方式从OPC服务器读取数据。


1)使用IOPCSyncIO接口同步读/写

如图所示的同步访问,OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序在结果被返回之前必须一直处于等待状态。

2682cb6664f54ddcbc8d8c090f128141.png


2)使用IOPCASyncIO和IOPCASyncIO2接口异步步读/写

如图所示的异步访问,OPC服务器接到OPC应用程序的要求后,几乎立即将方法返回。OPC应用程序随后可以进行其他处理。当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。OPC应用程序在事件处理程序中接受从OPC服务器传送来的数据。

027ad16507c14ec38867f8a1eff50330.png

订阅式数据采集方式基于“客户/服务器/硬件设备”模型,在服务器中的内部建立预定数据的动态缓存,并且当数据变化时对动态缓存给予刷新,并向订阅了这些数据的客户端发送。这种处理方式对于模拟量多的SCADA系统十分有用。

上述的OPC数据访问的功能并非必须全部实现,其中有一部分功能是选用的。这些选用功能是否被支持将随供应厂商的具体的服务器类型而定。

相关文章
|
9月前
|
设计模式 算法 测试技术
C++ 创建兼容多个IPC机制的上层接口
C++ 创建兼容多个IPC机制的上层接口
150 1
|
JavaScript API
接口封装如何实现?
接口封装如何实现?
|
4月前
|
自动驾驶 安全 物联网
|
9月前
|
安全 前端开发 NoSQL
如果让你设计一个接口,你会考虑哪些问题?
接口设计需关注参数校验、扩展性、幂等性、日志、线程池隔离、异常重试、异步处理、查询优化、限流、安全性、锁粒度和避免长事务。入参与返回值校验确保数据正确性;考虑接口扩展性以适应不同业务需求;幂等设计防止重复操作;关键接口打印日志辅助问题排查;核心接口使用线程池隔离确保稳定性;异常处理中可采用重试机制,注意超时控制;适合异步的场景如用户注册后的通知;并行查询提升性能;限流保护接口,防止过载;配置黑白名单保障安全;适当控制锁粒度提高并发性能;避免长事务影响系统响应。
148 2
|
9月前
|
算法 搜索推荐 C++
统一结果封装
统一结果封装
41 0
|
Java
接口特性
接口特性
111 1
|
程序员 C++
论接口的封装能力
论接口的封装能力
61 0
|
Web App开发 移动开发 JavaScript
h5调用底层接口的一些知识
h5调用底层接口的一些知识
142 0