微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > OPC简介及OPC DA 服务器的设计与实现

OPC简介及OPC DA 服务器的设计与实现

时间:08-31 来源:互联网 点击:

  0 引言

OPC 全称OLE for Process CONtrol,它是由OPC 基金会制定的自动化领域过程控制标准。

实际上,OPC 代表一系列的标准,包括OPC 数据访问(OPC Data AccESS),OPC 报警与事件(Alarms Events ),历史数据访问(OPC Historical Data Access),OPC XML-DA(1.0)等。目前,OPC 标准在现代工业控制领域,特别是在数据采集和软实时控制方面已有很好的应用。

  1 OPC 标准介绍

在 OPC 标准制定之前,工业软件制造商需要为不同的硬件开发各自独立的驱动接口。对于开发典型监控程序软件的技术人员来说,约有20%-30%的时间是用于编写通讯驱动程序。当供应商提供一个新的硬件时,应用软件研发人员就不得不重新编写一个新的程序。
  而OPC 标准的出现为此解决该问题提供了一个方案,它制定了一系列的数据存取,事件,报警等规范,使得当有新的硬件出现时,供应商只需提供实现的OPC 标准接口,而上层应用软件则不需重新改写。这样,在系统与设备之间,车间现场与信息管理之间,甚至更远的距离上,都可以通过OPC 标准实现无缝通讯,而不必担心设备升级带来的不便和额外费用。

OPC 为不同的应用制定了不同的标准,OPC DA 是针对现场数据进行存取的接口规范,该标准基于OLE / COM / DCOM / COM+技术,采用Client / Server 模式。数据通过特定的采集卡或串口等,从现场设备中获得,然后OPC DA 服务器将这些从数据源采集到的数据,以OPC 标准接口形式提供给外部应用程序,例如工控软件,实时数据库等。OPC 服务器可以通过本地或远程服务服务器两种方式,为依照OPC 标准实现的客户端提供服务。

2 OPC DA 服务器的设计

本文通过使用 VC++编程实现的一个OPC DA 服务器框架,来介绍OPC DA 服务器设计中需要解决的主要问题。在OPC 服务器的设计中,引入适配器模式,通过适配层将数据访问同具体的数据源操作相分离,以便针对不同的数据来源时,进行快速的二次开发。实现 OPC DA 服务器,需要依照OPC 基金会提供的OPC DA 标准,将从数据源中采集数据,以标准规定的接口形式提供给外部。其中,OPC 规范为OPC 服务器规定了两套接口方式:定制接口(Custom interface)和自动化接口(AutomATIon Interface)。其中,前者是OPC 服务器必须实现的接口,后者则是为方便VB 等脚本语言而提供,可以选择性实现。

2.1 OPC DA 服务器中的对象

根据 OPC 标准,在OPC DA 服务器中,主要包含三个层次的对象:服务器对象(Server),组对象(Group)和数据项(Item)。其中,服务器对象与组对象是一对多的关系,一个Server 对象可以包含0 到多个Group 对象,而一个组对象中可以包含0 到多个数据项。OPC DA 标准对Server 和Group 对象需要实现的接口,进行了详细的规定说明。

在 OPC DA 标准中,客户端对服务器的数据存取是以Group 为单位的,每次将需要存取的数据项item 加入一个Group,然后对该Group 进行整体读写操作。Group 对象通过标准定义的IOPCDataMgt 接口,对Item 进行添加,删除等相关的管理;而Server 对象则通过IOPCServer 接口对Group 对象进行添加,删除等管理。

2.2 OPC DA 服务器的结构

开发一个 OPC DA 服务器需要注意以下问题:服务器的运行方式,各个接口与对象的相互关系,内部数据的组织形式,对外部数据源的访问等。在本实例中,OPC 数据存取服务器的框架结构如下图所示

图 1 OPC 服务器的结构
接口与对象:在各层次对象与接口的关系处理中,可以采用两种方法:多继承的方式,将Server/Group 对象继承自每个标准规定的接口;或者采用聚合的方式,Server/Group 对象包含接口对象。本例采用的是第二种方式,该方式可以将使接口的编写相对独立,以方便测试,并且有利于自动化接口的可选择实现。

服务器使用 VC++编程,包含以下几个主要的类:

COPCServer:Server 对象的类,管理IOPCCommon,IOPCServer,IConnectionContainer等接口;

COPCGroup:Group 对象的类,管理IOPCItemMgt,IOPCGroupStateMgt,IOPCSyncIO,IOPCAsyncIO,IConnectionContainer 等接口;

其他接口类:每个接口还对应一个实现类(如:CIOPCItemMgtImp 是IOPCItemMgt 的具体实现),该类完成OPC 标准规定的对应接口的功能函数,类的实例化对象将以聚合的方式接受Server 或Group 对象的管理;

数据缓存区的构造:在 OPC 服务器中,Cache 是重要的部分,存储结构将直接影响数据访问的速度,它负责将从设备中读取的数据先存放在数据缓存区,供同步或异步读龋缓存区内存可以采用连续存储,链式存储和哈希存储。其中,考虑到存取速度和方便管理,该

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top