OPC分层模型结构与对象接口编程

简介: OPC分层模型结构与对象接口编程

OPC分层模型结构

OPC数据访问提供从数据源读取和写入特定数据的手段。OPC数据访问对象是由如图4.5所示的分层结构构成。即一个OPC服务器对象(OPCServer)具有一个作为子对象的OPC组集合对象(OPCGroups)。在这个OPC组集合对象里可以添加多个的OPC组对象(OPCGroup)。各个OPC组对象具有一个作为子对象的OPC项集合对象(OPCItems)。在这个OPC项集合对象里可以添加多个OPC项对象(OPCItem)。此外,作为选用功能,OPC服务器对象还可以包含一个OPC浏览器对象(OPCBrowser)。

423af5bd63d0486fa93dd6f9d0ab9082.png

OPC对象中的最上层的对象是OPC服务器。一个OPC服务器里可以设置一个以上的OPC组。OPC服务器经常对应于某种特定的控制设备。例如,某种DCS控制系统或者某种PLC控制装置。

OPC组是可以进行某种目的数据访问的多个OPC项的集合,例如,某监视画面里所有需要更新的变量,或者某个设备监控相关的所有变量等。正因为有了OPC组,OPC应用程序就可以以同时需要的数据为一批进行数据访问也可以以OPC组为单位启动或停止数据访问。此外,OPC组还提供组内任何OPC项的数值变化时向OPC应用程序通知的数据变化事件,

OPC组有两种类型:公共组(Public)和局部组(Local or Private)。公共组可以为多个客户程序共享,而局部组只为某一个客户程序所有。在每个组里,客户程序可以定义多个OPC项。

OPC对象里最基本的对象是OPC项。OPC项是OPC服务器可认识的数据定义,通常相当于下位机的某个变量标签,并和数据源(如SCADA系统中的下位机的I/O)相连接。OPC项具有多个属性,但是其中最重要的属性是OPC项标识符。OPC项标识符是在控制系统中可识别OPC项的字符串。


OPC对象接口

OPC服务器接口

OPC服务器对象的COM接口模型如图4.6所示,其中带有()的接口为任选接口。图

0aebf5c499c34af8b934e104f7eeb3a8.png

(1)IUnknown接口:

COM对象必须实现的接口,主要负责对象的接口查询和生存期管理,包括QueryIntertface()、AddRef()和Release()函数。客户程序可以通过QueryInterfac()查询需要访问的接口。因此,客户程序只要得到对象的任何一个接口,就可以访问对象的所有接口。


(2)IOPCCommon接口

:OPC规范如DataAccess、Historical DataAccess、Alarms andEvents等的OPC Server对象的公共接口,通过该接口的函数,可以设置或查询组件应用程序的位置标识Local ID,从而实现客户应用程序与服务器的有效会话,且客户程序间不受干扰。


(3)IOPCServcr接口

:是Server对象的主要接口,主要完成Group对象的添加、删除、获取Server对象的状态、创建组对象枚举器等。


(4)IConnectionPointContainer接口:

是COM标准接口,支持可连接点对象。包含两个成员函数EnumConnectionPoints()和FindConnectionPoint()。EnumConnectionPoint()函数返回连接点枚举器,客户可以利用此枚举器访问COM对象的所有连接点。FindConnectionPoint()函数根据给定接口引用标识IID,返回相接口的连接点。当OPC服务器关闭时需要通知所有的客户程序释放OPC组对象和其中的OPC组员,此时,可利用该接口调用客户程序方的IOPCShutdown接口实现服务器的正常关闭。


(5)IOPCServerPublicGroups、IPersistFile和IOPCBrowseServerAddressSpace为可选接口

,OPC服务器提供商可根据需要选择是否需要实现。其中,IOPCServerPublicGroups接口用于对公共组进行管理;IPersistFile接口允许用户装载和保存服务器的设置,这些设置包括服务器通信的波特率、现场设备的地址和名称等。这样用户就可以知道服务器启动和配置的改变而不需要启动其他的程序。IOPCBrowseServerAddressSpace主要供客户程序来查看服务器中有用项的信息。

相关文章
|
存储 机器学习/深度学习 安全
PACS覆盖放射、超声、内镜、病理等医技科室业务流程
医学影像PACS系统(Picture Archiving and Communication System)是一个医院信息系统,用于存储、检索、传输和显示医学影像。它可以集成多种医疗设备,如X光机、CT、MRI、超声等,将这些设备产生的数字影像转换成标准格式,进行存储和管理,以便医生和专业技术人员进行诊断和治疗。
340 4
|
物联网 Java Linux
Linux安装与配置Eclipse Paho库:实现MQTT通信
Eclipse Paho是一个开源的MQTT(Message Queuing Telemetry Transport)实现,提供了多种编程语言的客户端库,包括C、C++、Java、Python等。在Linux系统中,通过安装和配置Eclipse Paho库,我们可以方便地实现MQTT通信功能。本文将详细介绍在Linux系统中安装和配置Eclipse Paho库的步骤,以便于开发者在物联网项目中使用MQTT协议进行通信。
2625 0
|
7月前
|
机器学习/深度学习 编解码 人工智能
快手封号怎么申诉才能成功?
快手封号申诉技术解析
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
267 0
数据结构与算法学习十五:哈希表
|
12月前
|
传感器 物联网 大数据
物联网与大数据:揭秘万物互联的新纪元
物联网与大数据:揭秘万物互联的新纪元
448 7
|
安全 Linux 网络安全
Linux生成公钥和私钥 | 14
Linux生成公钥和私钥 | 14
|
存储 分布式计算 Java
存算分离与计算向数据移动:深度解析与Java实现
【11月更文挑战第10天】随着大数据时代的到来,数据量的激增给传统的数据处理架构带来了巨大的挑战。传统的“存算一体”架构,即计算资源与存储资源紧密耦合,在处理海量数据时逐渐显露出其局限性。为了应对这些挑战,存算分离(Disaggregated Storage and Compute Architecture)和计算向数据移动(Compute Moves to Data)两种架构应运而生,成为大数据处理领域的热门技术。
499 2
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
存储 Java 数据库连接
Mybatis-plus@DS实现动态切换数据源应用
Mybatis-plus@DS实现动态切换数据源应用
1982 0