用户中心

资讯 > SCADA

数据采集服务器设计

作者:李金波,陈庆文2010.10.21阅读 10358

        1 引言
        数据采集系统软件通过I/0驱动程序从现场I/O设 备获得实时数据,对数据进行必要的处理后,一方面以 图形方式直观地显示在计算机屏幕上,另一方面按照组 态要求和操作人员的指令将控制数据送给I/o设备控制工程网版权所有,对 执行机构实施控制或调整控制参数。但是,数据采集系 统软件存在一个严重的制约因素,即现场设备与应用软 件之间难以实现开放的、无缝隙的连接。即针对同一个 硬件设备,每个应用软件都要根据自己的需求开发一套 硬件驱动程序。这不仅加大了开发和维护费用,而且带 来了访问冲突问题。
        0 P C技术将各个硬件设备驱动程序和通信程序封 装成独立的OPC服务器,上层应用软件可以不关心硬件 的性能特点,而通过标准的OPC接口访问OPC服务器。 这样不仅解决了上述问题,而且实现了软件的“即插即 用”。OPC相当于一块软件“主板”,它能够直接与现场的PLC,工业网络、数据采集和Windows CE设备连 接,快速有效地获取现场实时数据。P C机内的各种监 视、控制和管理等应用软件则像是插在OP C主板上的 软件“芯片”,“芯片”可通过OPC获得现场实时数据, “芯片”之间也可按照OP C协议进行通信,从而实现软 件的“即插即用”。
        本文以针对一种电能表的数据采集服务器为编程 实例,详细介绍数据采集服务器的基本结构以及如何实 现OPC服务器。
        电能表采用了《多功能电能表通信规约》(DL/T645 一l 997)。《多功能电能表通信规约))适用于本地系统 中的电能表费率装置与手持单元(也称抄表器,用于现场 抄表或编程)或其他数据终端设备进行点对点的或一主 多从的数据交换方式;标准中规定了它们之间的物理连 接(物理层)、通信链路(数据链路层)及应用技术(应用层) 规范。数据终端设备经数据信道(如无线电台、市话网 络等)与远方主站的数据通信协议不属于DL/T645—1997的范畴。DL/T645—1997中的主站指手持单元或 其他数据终端设备。它具有选择费率装置(与电能表连 接或与电能表组装在一起的数据采集与处理单元)并与 它进行信息交换的功能。
        2 传统数据采集系统的劣势
        传统的数据采集系统为使每一个应用程序与设备 交换信息,必须为每个设备提供相应的驱动程序,在数 据源与客户程序之间分别建立一对一的驱动连接www.cechina.cn,如图1以电能表为例。

        由于设备多样性和驱动程序不兼容性,这种方式存 在以下缺陷:
        (1)应用程序开发者必须花费大量精力开发各种设 备的驱动接口,计算机硬件厂家要为不同的应用软件编 写不同的驱动程序,这种程序可复用程度低,不符合软 件工程的发展趋势,典型的高级语言软件开发过程约有 25’30%的时间用于编写这类接口,使开发时间和费用大大增加;
        (2)设备不具有互操作性,使用中硬件的升级、变更和增加都可能造成驱动程序的变化,从而在维护过程 中引起二次投资;
        (3)由于每一驱动软件有各自的驱动程序,当多个应用软件读取同一数据源时,经常发生冲突;
        (4)设备厂商虽然可能提供驱动程序,但与用户开发应用软件往往不一致,限制了用户对软件和设备的自 由选择。
        可见,在现场设备与应用软件之间提供标准的接口,实现开放的、无缝隙的连接,是顺利推进企业管控 一体化的关键。为此,在微软的倡导下,世界范围内处 于主导地位的硬件和软件开发商组成了O P C基金会组 织(OPC Fondation)11I,制定硬件和应用软件之间的接口标准-OPC规范。
        3 采用0PC规范设计服务器的益处
        1)采用标准的Windows体系接口,硬件制造商为其设备提供的接口程序的数量减少到一个,软件制造商 也仅需要开发一套通讯接口程序。即有利于软硬件开发商CONTROL ENGINEERING China版权所有,更有利于最终用户。
        2)OPC规范以OLE/DCOM为技术基础【2l,而OLE/ DCOM支持TCP/IP等网络协议,因此可以将各个子系 统从物理上分开,分布于网络的不同节点上。
        3)OPC按照面向对象的原则,将一个应用程序 (OPC服务器)作为一个对象封装起来,只将接口方法暴 露在外面,客户以统一的方式去调用这个方法,从而保证软件对客户的透明性,使得用户完全从底层的开发中脱离出来。
        4)OPC实现了远程调用,使得应用程序的分布与系 统硬件的分布无关,便于系统硬件配置,使得系统的应 用范围更广。
        5)采用OPC规范,便于系统的组态,将系统复杂性 大大简化,可以大大缩短软件开发周期,提高软件运行 的可靠性和稳定性,便于系统的升级与维护。
        6)OPC规范了接口函数,不管现场设备以何种形式 存在,客户都以统一的方式去访问,从而实现系统的开 放性,易于实现与其它系统的接口。
        图2为基于0P C技术的应用软件与智能电能表进 行数据交换的处理过程,它比传统的数据采集系统有明 显的优势。

        4 数据采集服务器设计的整体结构
        数据采集服务器的设计以OPCServer为核心【3l,它 介于各种硬件设备与上位过程控制系统之间,将采用不 同的通讯规约和通讯方式的各种监控设备信息转换成符合OPC接口规范的信息,提供给客户端(监控软件);同 时客户端下发的各种控制命令等信息通过数据采集服 务器提供给相应设备。
        OPC服务器由Server对象,Group对象、Item对 象和针对不同现场设备的编写的I/O DLL组成。Server 对象、Group对象都是标准的COM对象,OPC客户端 通过它们提供的接口来访问现场设备的数据,使OP C客 户端与0PC服务器实现无缝连接成为可能。Server对 象是0PC客户端与OPC服务器端交互的首要对象,OPC 客户端通过Server对象来组织管理Group对象,Group 对象是用来组织管理Item对象的。Item对象描述了服 务器与现场设备的连接,是对应的现场设备的属性在服 务器中的代表,它包含有数据项的值,值的质量标志和 时间标签(读取数据的时间)。I/0 DLL实现从具体的现 场设备中读取数据的功能,因为不同厂商设备的数据采 集方式和现场通信网络的通信协议不同,需要为不同硬 件设备和通信协议编写不同的I/o DLL。数据采集服 务器的整体结构如图3所示。

        5 数据采集服务器的设计与实现
        数据采集服务器中OP Cserver的开发主要应用 COM技术【引,但直接采用COM技术开发的难度比较 大,且周期长。为了减少了开发的难度,本软件0PC 服务器部分应用第三方拓林的开发包开发,通过加 载KOSRDK.DLL动态连接库实现不同设备到OPC 的转换。
        OPCServer是透过一组一组的接口提供服务的。在 实际的架构上,OPCServer共分为三层:如图4,分别是 OPCServer、OPCGroup、OPCItem。其中每一个OPCItem 对应到一个实际的硬件装置上的某一个Channel或 port;每一个OPCGroup则包含了许多的OPCItem,同时并定义这些OPCItem更新的时间,方式,以及提供读取 OPCItem值的接口l而每一个OPCServer则包含若干个 OPCGroup,同时提供操作这些OPCGroup的接口。

        本文以拓林的开发包开发工具为例总结出以下开发步骤:
        (1)安装OPC Proxy动态链接库文件
        进行OPC Server编程开发首先需要从OPC基金会 官方网站下载并安装OPC Proxy/Stub动态链接库文 件,包括opcproxy.dll、opccomn—lOS.dll、opcae—ps.dll、 opchda—ps.dll四个文件。获得这些文件后,将它们拷贝 到系统目录(system32)下,然后在命令行格式下按照以下 方法对这些文件进行注册:
        regsvr32 opcproxy.dll、regsvr32 opccomn_ps.dll
        regsvr32 opcae——lOS.dll、regsvr32 opchda——ps.dll
        此外,还要检查系统中是否存在actxprxy.dlll文 件,如果没有,则需要从Mi C ro s oft官方网站下载 aprxdist.zip文件进行安装。
        (2)编程环境设置
        用OP C数据服务器快速开发工具进行OP C数据服 务器的开发主要利用开发工具所提供的动态链接库进 行OPC数据服务器的编程开发工作,在Visual C++编 程环境中将用到WTOPCSvr.dll、WTOPCSvr.1ib、 WTOP CSVrAPI.h三个文件。对于动态链接库文 WTOPCSvr.du,需要将其拷贝到要开发的OPCServer程 序所在目录;对于输出定义文件WTOPCSvr.dll,需要在 编程环境的连接设置中加入此文件:对于头文件 WTOPCSvrAPI.h,则需要用到开发工具API函数的源 程序都应包含此文件。
        (3)获得CLSID
        每个OPC服务器均有一个全球唯一的GUID类型 的标识,如下:
        Static const GU ID CLSID—Svr={Ox73f90f71, 0x9154,0x43d9,{0x86,0x45 0xf9,0x49,0x61,0x6,Ox7c, OxSO}};
        (4)系统设置和初始化
        ●服务器名称和描述
        设置OPC服务器的名称和描述,用于系统的注册和 标识。
        m_strSvrName=“Test.OPC.Serverver 1.01”。 //name of OPCserver
        m_strSvrDesc=。Test.OPC.Server”。 //description of OPCserver
        ●服务器初始化
        调用KOS—Init()对服务器进行初始化。
        K0s_Inn(CLSID_Svr,100); // Knight OPCServer Initialization
        函数第一个参数为服务器的CLASSID,第二个参数 数据扫描频率。
        ●设置回调函数
        1.客户端写函数
        KOS—SetClientWriteProc(&ClientWriteProc);// Setting write caHback procedure
        2.客户端关闭
        K O S—S e t C l i e n t S h U t d 0 Wn P r 0 C (&ClientShutdownProc)I//Setting client shutdown caHback procedure
        ●注册与反注册
        注册:bRet=KOS—Register(CLSID—SVr, m_strSvrName,,m_strSvrDesc,strFile);
        反注册:bRet=KOS—UnRegiste(CLSID—Svr, m_strSvrName);
        (5)添加OPC点
        服务器的初始化工作完成后,需要添加OPC点到OPC Server DLL中,OPC客户端才能够检索和使用OPC点。
        (6)更新OPC点。
        在上一步中,OPC点已经被添加到OPC Serve DLL 中,这样,OPC客户端程序就可以浏览到OPC点,同时, 也可以读取到OPC点的值(包括数据类型、数据值、质量、时间戳等)。程序将从设备采集上来的数据不断更 新到OPC Server DLL中,使得客户端程序可同步更新。
        (7)关闭OPC服务器
        关闭OPC服务器之前,需要完成如下工作:如果有 客户端连接,发出断开连接请求;释放用new等操作符 申请的内存;调用KOS—Removeltem()从OPC服务器中 删除已添加的OPC点。调用KOS—Unit()完成OPC服务 器的退出。
        6 电能表I\0 DLL开发

        由于不同厂商的设备的数据采集方式和现场通信 网络采用的协议不同,厂商提供的用于数据采集的API函数也不同,因此在OPC服务中,通过编写不同的 I/ODLL,使得服务器能从连接到不同通信网络的不同 厂商的设备获取信息。获取信息的过程对OPC客户是 透明的。
        本文参考多功能电能表通信规约(DL/T 645-1997) 151控制工程网版权所有,实现了电能表发送,接收数据。接收功能实现的流程 图接收功能实现的流程图如图5所示。多功能表为从 站,OP C客户端为主站。发送功能实现的流程图:从站 收到主站发来的一帧信息后,先要进行判别,如是正常 的命令帧或数据帧则发正常应答帧,否则发异常应答 帧。以上两种情况的流程图分别如图6和图7所示。


        7 结束语
        在工业控制领域中,利用OPC技术设计数据采集服 务器,实现了不用考虑驱动程序和接口问题,就可以在 自动化控制软、硬件之间实行无缝链接。它给用户在选 择它们的硬件和软件模块时具有充分的灵活性www.cechina.cn,通过标 准化通信接口,多种供应商的产品能被组合、匹配在一 起,并且在无需修改程序的情况下能够相互作用。OP C 使得即插即用在自动化应用中成为现实,并且还允许集 成各种各样的现场总线系统。
        参考文献:
        【1】OPC基金会.数据存取规范【Z】.2002,6.
        【2】日本OPC协会OPC(中国)促进委员会.OPC应用程序 入f-i[Z】.2004.
        【3】傅舂霞,段建民.OPC数据访问服务器的开发.工矿自动 化,2004,(12):17-20.
        【41潘爱民.COM原理与应用【M】.北京:清华大学出版社 1999.12.
        【5】DL/T 645—1997多功能电能表通信规约IS】.1998,6.
版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688