数据采集服务器
计算机应用
ComputerApplications
自动化技术与应用》20l0年第29卷第5期
数据采集服务器设计
李金波.陈庆文
(黑龙江省科学院自动化研究所,黑龙江哈尔滨150090)
摘要:本义利用OlC技术进行数据采集服务器的没计.评介绍数据采集服务器实现方法,闸述』_}f】OtC设汁系统的点.简述rI//O
DII的肝发.小文的数据采集驽?对电能
没计的.
关键词:OPC;服筹器;电能表
中圈分类d:TP274.2文献标码:Bl殳章编号:1003724l(2010)05003905
DesignmentandImplementationofPower
MeterDataAcquisitionServer
LIJin-bo,CHENQing—wen
.
(HeilongjiangAcodemyofSciences,Haerbin150090China)
Abstract:OPCservertechnologyfordataacquisitioninthedesign,andintroducedthemethodofdatacoll
ectionserveronthe
OPCdesignwiththeadvantageofthesystem,outlinestheI\0DLLdevelopment.Inthispaper,thedataacq
uisition
serverforenergymeterdesign.
Keywords:OPC;servers;EnergyMeter
1引言
数据采集系统软件通过I/O驱动程序从现场I/O设
备获得实时数据,对数据进行必要的处理后,一方面以
图形方式直观地显示在计算机屏幕上,另一方面按照组
态要求和操作人员的指令将控制数据送给I/o设备,对
执行机构实施控制或调整控制参数.但是,数据采集系
统软件存在一个严重的制约因素,即现场设备与应用软
件之间难以实现开放的,无缝隙的连接.即针对同一个
硬件设备,每个应用软件都要根据自己的需求开发一套
硬件驱动程序.这不仅加大了开发和维护费用,而且带
来了访问冲突问题.
OPC技术将各个硬件设备驱动程序和通信程序封
装成独立的OPC服务器,上层应用软件可以不关心硬件
的性能特点,而通过
的OPC接口访问OPC服务器.
这样不仅解决了上述问题,而且实现了软件的”即插即
用”.OPC相当于一块软件”主板”,它能够直接与现场
收稿日期:2010—03—29
的PLC,工业网络,数据采集和WindowsCE设备连
接,快速有效地获取现场实时数据.PC机内的各种监
视,控制和管理等应用软件则像是插在OPC主板上的
软件”芯片”,”芯片”可通过OPC获得现场实时数据,
“芯片”之间也可按照OPC协议进行通信,从而实现软
件的”即插即用”.
本文以针对一种电能表的数据采集服务器为编程
实例,详细介绍数据采集服务器的基本结构以及如何实
现OPC服务器.
电能表采用了((多功能电能表通信规约))(DL/T645
—
1997).多功能电能表通信规约适用于本地系统
中的电能表费率装置与手持单元(也称抄表器,用于现场
抄表或编程)或其他数据终端设备进行点对点的或一主
多从的数据交换方式;标准中规定了它们之间的物理连
接(物理层),通信链路(数据链路层)及应用技术(应用层)
规范.数据终端设备经数据信道(如无线电台,市话网
络等)与远方主站的数据通信协议不属于DL/T645,
《自动化技术与应用20l0年第29卷第5期i-l--N机应用
ComputerApplications
l997的范畴.DL/T6451997中的主站指手持单元或
其他数据终端设备.它具有选择费率装置(与电能表连
接或与电能表组装在一起的数据采集与处理单元)并与
它进行信息交换的功能.
2传统数据采集系统的劣势
传统的数据采集系统为使每一个应用程序与设备
交换信息,必须为每个设备提供相应的驱动程序,在数
据源与客户程序之间分别建立一对一的驱动连接,如图
1以电能表为例.
图1传统的应用软件与数据源接口方式
由于设备多样性和驱动程序不兼容性,这种方式存
在以下缺陷:
(1)应用程序开发者必须花费大量精力开发各种设
备的驱动接口,计算机硬件厂家要为不同的应用软件编
写不同的驱动程序,这种程序可复用程度低,不符合软
件工程的发展趋势,典型的高级语言软件开发过程约有
2530%的时间用于编写这类接口,使开发时间和费用大
大增加;
(2)设备不具有互操作性,使用中硬件的升级,变
更和增加都可能造成驱动程序的变化,从而在维护过程
中引起二次投资;
(3)由于每一驱动软件有各自的驱动程序,当多个
应用软件读取同一数据源时,经常发生冲突;
(4)设备厂商虽然可能提供驱动程序,但与用户开
发应用软件往往不一致,限制了用户对软件和设备的自
由选择.
可见,在现场设备与应用软件之间提供标准的接
口,实现开放的,无缝隙的连接,是顺利推进企业管控
一
体化的关键.为此,在微软的倡导下,世界范围内处
于主导地位的硬件和软件开发商组成了OPC基金会组
织(opcFondation)[,制定硬件和应用软件之间的接口
标准一OPC规范.
3采用OPC规范设计服务器的益处
1)采用标准的Windows体系接口,硬件制造商为
其设备提供的接口程序的数量减少到一个,软件制造商
也仅需要开发一套通讯接口程序.即有利于软硬件开
发商,更有利于最终用户.
2)OPC规范以OLE/DCOM为技术基础[2],而OLE/
DCOM支持TCP/IP等网络协议,因此可以将各个子系
统从物理上分开,分布于网络的不同节点上.
3)OPC按照面向对象的原则,将一个应用程序
(OPC服务器)作为一个对象封装起来,只将接口方法暴
露在外面,客户以统一的方式去调用这个方法,从而保
证软件对客户的透明性,使得用户完全从底层的开发
中脱离出来.
4)OPC实现了远程调用,使得应用程序的分布与系
统硬件的分布无关,便于系统硬件配置,使得系统的应
用范围更广.
5)采用OPC规范,便于系统的组态,将系统复杂性
大大简化,可以大大缩短软件开发周期,提高软件运行
的可靠性和稳定性,便于系统的升级与维护.
图2基于OPC应用软件与数据源接口方式
6)OPC规范了接口函数,不管现场设备以何种形式
存在,客户都以统一的方式去访问,从而实现系统的开
放性,易于实现与其它系统的接口.
图2为基于0PC技术的应用软件与智能电能表进
行数据交换的处理过程,它比传统的数据采集系统有明
显的优势.
4数据采集服务器设计的整体结构
数据采集服务器的设计以OPCServer为核心【引,它
介于各种硬件设备与上位过程控制系统之间,将采用不
同的通讯规约和通讯方式的各种监控设备信息转换成
自动化技术与应用》2010年第29卷第5期
符合OPC接口规范的信息,提供给客户端(监控软件);同
时客户端下发的各种控制命令等信息通过数据采集服
务器提供给相应设备.
OPC服务器由Server对象,Group对象,Item对
象和针对不同现场设备的编写的I/0DLL组成.Server
,
对象,Group对象都是标准的COM对象,OPC客户端
通过它们提供的接口来访问现场设备的数据,使OPC客
户端与0PC服务器实现无缝连接成为可能.Server对
象是0PC客户端与0PC服务器端交互的首要对象,OPC
客户端通过Server对象来组织管理Group对象,Group
对象是用来组织管理Item对象的.Item对象描述了服
务器与现场设备的连接,是对应的现场设备的属性在服
务器中的代表,它包含有数据项的值,值的质量标志和
时间标签(读取数据的时间).I/ODLL实现从具体的现
场设备中读取数据的功能,因为不同厂商设备的数据采
集方式和现场通信网络的通信协议不同,需要为不同硬
件设备和通信协议编写不同的I/ODLL.数据采集服
务器的整体结构如图3所示.
图3数据采集服务器的整体结构
5数据采集服务器的设计与实现
数据采集服务器中0PCserver的开发主要应用
COM技术[4】,但直接采用COM技术开发的难度比较
大,且周期长.为了减少了开发的难度,本软件0PC
服务器部分应用第三方拓林的开发包开发,通过加
载KOSRDK.DLL动态连接库实现不同设备到OPC
的转换.
OPCServer是透过一组一组的接口提供服务的.在
实际的架构上,OPCServer共分为三层:如图4,分别是
OPCServer,OPCGroup,OPCItem.其中每一个OPCltem
对应到一个实际的硬件装置上的某一个channel或
port;每一个OPCGroup则包含了许多的OPCItem,同时
并定义这些OPCltem更新的时间,方式,以及提供读取
OPCltem值的接口;而每一个OPCServer则包含若干个
OPCGroup,同时提供操作这些OPCGroup的接口.
图4OPCServer/OPCGroup/OPCltem
间的关系图
本文以拓林的开发包开发工具为例总结出以下开
发步骤:
(1)安装OPCProxy动态链接库文件.
进行OPCServer编程开发首先需要从OPC基金会
官方网站下载并安装OPCProxy/Stub动态链接库文
件,包括opcproxy.dll,opccomn_ps.dll,opcae_ps.dll,
opchdaps.dll四个文件.获得这些文件后,将它们拷贝
到系统目录(system32)下,然后在命令行格式下按照以下
方法对这些文件进行注册:
regsvr32opcproxy.dll,regsvr32opccomnps.di1
regsvr32opcae——
ps.dll,regsvr32opchda_ps.dll
此外,还要检查系统中是否存在actxprxy.dill文
件,如果没有,则需要从Microsoft官方网站下载
aprxdist.zip文件进行安装.
(2)编程环境设置.
用OPC数据服务器快速开发工具进行OPC数据服
务器的开发主要利用开发工具所提供的动态链接库进
行OPC数据服务器的编程开发工作,在VisualC++编
程环境中将用到WTOPCSvr.dll,WTOPCSvr.1ib,
wTOPCSvrAPI.h三个文件.对于动态链接库文
WTOPCSvr.dll,需要将其拷贝到要开发的OPCServer程
序所在目录;对于输出定义文件WTOPCSvr.dll,需要在
编程环境的连接设置中加人此文件:对于头文件
WTOPCSvrAPI.h,则需要用到开发工具API函数的源
程序都应包含此文件.
(3)获得CLSID.
《自动化技术与应用2010年第29卷第5期计算机应用
ComputerApplications
每个OPC服务器均有一个全球唯一的GUID类型
的标识,如下:
StaticconstGUIDCLSID—Svr={0x73f90f71,
0x9154,Ox43d9,{0x86,0x45Oxf9,0x49,0x61,0x6,0x7c,
0x80}};
(4)系统设置和初始化.
?服务器名称和描述
设置OPC服务器的名称和描述,用于系统的注册和
标识.
m—
strSvrName=“Test.OPC.Serverver1.01”.
//nameofOPCserver
m_
strSvrDesc=“Test.OPC.Server”.
//descriptionofOPCserver
?服务器初始化
调用KOS—Init()对服务器进行初始化.
KOS_Init(CLSID_Svr,100);//
KnightOPCServerInitialization
函数第一个参数为服务器的CLASSID,第二个参数
数据扫描频率.
?设置回调函数
1.客户端写函数
KOS—
SetClientWriteProc(&ClientWriteProc,;//
Settingwritecallbackprocedure
2.客户端关闭
KOS—
SetClientShutd0wnProc
(&ClientShutdownProc);//Settingclientshutdown
callbackprocedure
?注册与反注册
注册:bRet=K0SRegiSter(CLSID—svr,
m—strSvrName,,mstrSvrDesc,strFile);
反注册:bRet=KOS—UnRegiste(CLSID—Svr,
m—
strSvrName);
(5)添加OPC点.
服务器的初始化工作完成后,需要添加OPC点到OPC
ServerDLL中,OPC客户端才能够检索和使用OPC点.
(6)更新OPC点.
在上一步中,OPC点已经被添加到OPCServeDLL
中,这样,OPC客户端程序就可以浏览到OPC点;同时,
也可以读取到OPC点的值(包括数据类型,数据值,质
量,时间戳等).程序将从设备采集上来的数据不断更
新到OPCServerDLL中,使得客户端程序可同步更新.
(7)关闭OPC服务器.
关闭OPC服务器之前,需要完成如下工作:如果有
客户端连接,发出断开连接请求;释放用new等操作符
申请的内存;调用KOS—Removeltem0从OPC服务器中
删除已添加的OPC点.调用KOS—Unit()完成OPC服务
器的退出.
6电能表I\0DLL开发
图5接收功能实现流程图
计算机应用
ComputerApplications
自动化技术与应用2010年第29卷第5期
.旰婚
|『
l度?瓤l
聋崩掠跚皿
|r
菇电.哂
„
技礁S
„
1.Ii结覃持l??
图6正常应答帧
开始
1|
绽翻l{
„
本帆地址(A0-A5}
工
艘鲫
C1H=控制码
【表示异常鹰菩帧)
„
I傲撼螭长度0lH
l错误侍息宇职R
l檀齄码cs
„
l帧绪柬牟鲁l砸
图7异常应答帧
由于不同厂商的设备的数据采集方式和现场通信
网络采用的协议不同,厂商提供的用于数据采集的
API函数也不同,因此在OPC服务中,通过编写不同的
I/ODLL,使得服务器能从连接到不同通信网络的不同
厂商的设备获取信息.获取信息的过程对OPC客户是
透明的.
本文参考多功能电能表通信规约(DL/T645-1997)
【引
,实现了电能表发送,接收数据.接收功能实现的流程
图接收功能实现的流程图如图5所示.多功能表为从
站,OPC客户端为主站.发送功能实现的流程图:从站
收到主站发来的一帧信息后,先要进行判别,如是正常
的命令帧或数据帧则发正常应答帧,否则发异常应答
帧.以上两种情况的流程图分别如图6和图7所示.
7结束语
在工业控制领域中,利用OPC技术设计数据采集服
务器,实现了不用考虑驱动程序和接口问题,就可以在
自动化控制软,硬件之间实行无缝链接.它给用户在选
择它们的硬件和软件模块时具有充分的灵活性,通过标
准化通信接口,多种供应商的产品能被组合,匹配在一
起,并且在无需修改程序的情况下能够相互作用.OPC
使得即插即用在自动化应用中成为现实,并且还允许集
成各种各样的现场总线系统.
参考文献:
[1]OPC基金会.数据存取规范[Z].2002,6.
[2】13本OPC协会OPC(中国)促进委员会.OPC应用程序
人fq[z].2004.
[3】傅舂霞,段建民.OPC数据访问服务器的开发.工矿自动
化,2004,(12):17-20.
[4]潘爱民.COM原理与应用【M】.北京:清华大学出版社
1999.12.
[5]DL/T645,1997多功能电能表通信规约IS】.1998,6.
作者简介:李金波(1977一),男,_T-程师,研究方向:仪表及
工业自动化.