维普资讯 http://www.cqvip.com 2006年第1期 (总第87期) 大众科技 DAZHoNG KE J No.1,2006 (Cumulatively No.87) 基于OPC规范异构设备通用网络集成的驱动开发技术 潘必超 .张瑾 (1.广东机电职业技术学院,广东广州155015; 2.佛山机电安装集团有限公司。广东佛山528000) 【摘 要lOPC是过程控制领域中一种被广泛采用的国际工业标准,文章提出了通过采用华富OPC开发工具包进行异构设 备驱动开发的方法.并应用该方法实现了异构驱动和异构上住机软件OPC接口的开发,可以为异构设备网络集成提供驱动接口 支持。 【关键词】OPC;异构集成;驱动开发 【中图分类号】 FN91 一【文献标识码】A 【文章编号】1008—1151(2006)01—0044—02 议。另外,对于OPC逻辑层,则包括:Item管理层,实现设备开 放性数据的管理与刷新机制;GROUP与Item管理层.实现对 设备监控参数的分组管理与组织;COM/DCOM接口层,定义 、引言 在我国.由于工厂规模的发展、设备购置时期的不同、以 及企业对自动化程度的不同.导致在企业内部所使用的设备、 仪表的自动化程度大不一样 某些设备即使提供了监控系统。 但由于制造商的不同.它们各自采用自己的通信协议.如物理 接F1协议RS232、RS485、RJ45等,而软件通信协议就更是千 了为监控客户端提供监控接口的通信规范。整体分层结构.如 图1所示: 0Pc/∞I/DC0瓣;口层 OPC:gROUP与Ite-管理层 Ite_数据曹l璺优化层 ] 【oPc逻辑 屡 硬件逻辑 甚 差万别了 随着企业的发展.为了提高企业生产现场情况的信 息集成程度和决策的准确性.需要将全方位的设备进行有效 合理的网络集成 异构的通信协议恰恰给制造设备的网络集 成以及制造过程的监控带来了很大的困难 在开发监控系统 的服务器前.必须一次性考虑所有设备的通信接口。与之相适 应的监控系统.具有一定的静态性、封闭性.系统难以升级。 硬件协议逻辑层 硬件连接管理层 图1 OPC服务器的分层结构 1 三、异构通用集成的系统结构 设备的异构.指的是设备的物理接口、设备的通信标准都 oec(o ̄for Process Control1是一种过程控制中的标准 化技术.是为解决现场管理层与过程管理层之间的通信标准 而设计的规范。OPC制定了完善、强大的接口支持客户现场 数据的访问.其核心是面向现场实时数据的实时数据服务器 fOPC Data Access Ser ̄er)以及报警/事件服务器fOPC Alarm and Even ̄Server)。目前.OPC基金组织的成员已超过270 采用了不同的标准。例如.存在一些设备是采用RS232接口 的,而另外一些设备则采用RS485总线标准,目前国际流行 的设备,大部分具有RJ45以太网接口(包括工业以太网接 口)。对照图1可见,事实上,异构设备的硬件逻辑层一般由设 备开发商和供应商所保护.除特殊情况.是不推荐做出任何修 改。因此.为了能将它们统一地集成到一个完整的监控网络 个.几乎包括全世界所有的工业自动化软、硬件提供商。像 siemells,Adam等国际著名公司,都是这个组织的成员。符合 规范的软、硬件已被广泛的应用.给工业自动化领域带来了勃 勃生机。0PC规范,已经成为国际工业自动化界的标准。 中.这就需要为异构设备实现具有OPC数据服务功能的设备 网络驱动,如图2所示.从而需要在上位机中引入集成驱动, 即OPC逻辑层。 决簧层 OPC技术使得异构设备通用网络集成成为可能 其关键 在于对过去没有提供OPC接口的设备.只要对其驱动进行二 次开发.引入基于0PC规范的数据服务技术,就能实现异构 l 上位机 设备之间的数据与事件的双向传递 基于0PC规范所开发的 监控系统.由于接口标准统一,使得监控的客户端与服务器端 能相对独立的进行开发、维护、升级。正因为接口标准的统一, 下位机 j 图2基于OPC异构通用集成系统结构图 如图3所示,为了实现异构设备的通用网络集成,可以采用 使得系统具有开放性与动态性。新增的设备.只要为其开发 OPC服务器.使其对外提供基于OPC规范的数据接口,就能 以三层的结构模式,即设备集成层、过程控制层和监控决策层。 四、异构集成驱动OPC DA服务器的开发 对0PC服务器开发商而言.一方面需要根据不同硬件设 备的通信协议完成与硬件的通信:另一方面需要合理设计 使该设备无缝集成到该监控系统中来 二、OPC服务器的结构标准 OPC服务器.是运行在Windows平台之上的DCOMSenF. 0PC服务器的上层软件结构以及数据管理算法.以实现OPC 逻辑处理。同时,作为一种基于COM的技术,OPC服务器必须 完全实现组件注册、装载,卸载等一系列COM所必需管理规 则,要求程序设计人员充分了解C0M底层技术。从而可见, er.由于它的底层实现与现场设备的信息实时通信.高层实现 与管理监控层的通信。因此总的来说,OPC服务器的结构可 以分两大层:硬件逻辑层与OPC逻辑层 其中.硬件逻辑层包 括硬件连接管理层。它规定了与硬件连接的物理特性、电气特 性:硬件协议逻辑层.规定了与确定的设备进行通信的对话协 OPC服务器的开发是一项复杂的工作 本文采用北京华富惠通技术有限公司开发的CON 【收稿日期】2005—10-24 【作者简介】潘必超(1978-),男,广东惠州人,任职于广东机电职业技术学院。研究方向:数字网络化制造技术。 一44— 维普资讯 http://www.cqvip.com TROX一工具包提供的OPC的DA(Data Access)服务器快速开 发工具.能让用户为特定的设备快速开发出0PC服务器。监 } else TagList[I].bActive=true; } , 幸 事 幸 , 控系统开发无须过分关心COM的实现机制.只需要调动 OPCDH.DII文件中实现的API.就能实现对原设备的通信接 口的封装。本文采用VisualC++6.0作为开发工具.实现OPC 服务器的快速开发 (一)OPC DA服务器驱动工作原理框图 从异构设备中获取监控数据GetDataFromDevice0: ,, 水 幸 ,, void CMainFrame::OnTimer(UINT nlDEven0 { for(int I-0;I<TagCount;I++) { TagList[I].vValue.lftVal=(lfoat)GetDataFromDevice(1); } UpdateMonitor0; } ,| 幸 料 料料 料料 料 料料 料 刷新监控点UpdateTagWithTimeStamp0: ,, 水 ,, if(TagList[I].bActive&&InitOPCOK1 图3 oPC DA服务器驱动工作原理框图 异构设备网络集成驱动.即OPC DA服务器的开发需要 { ,,更新服务器地址空间数据UpdateOK=UpdateTagWith. TimeStamp(TagList[I】.hHWND,TagList[I】.vValue,TagList【I】. 建立在两大前提基础上。首先.原设备系统存在自动化数据 接口,例如COM/ActiveX/ODBC等.第二,原设备系统提供通 信驱动可以允许客户端直接调用;如图3所示.异构设备集成 驱动开发的关键任务就在于使用0PCDLL(ul所提供的 IQuality,TagList[1].f0; if(LogTagUpdate) { if(UpdateOK) { LogMs ̄”OPC”,”UPDATE[”+TasListIl1.cID+”】成功…’‘); } ToolKit接口与原设备系统建立无障碍数据通信桥梁.从而为 异构设备实现具有OPC Kemel功能的OPC DA服务器 (二)预处理工作 为了使异构集成驱动层的计算机支持OPC接口规范。需 要在操作系统中进行以下初始化操作: 首先,从OPC基金会网站(www.0pcfoundadon.org)下载以 下基本接口代理文件: opeaeps.(ul、opccomn___else LogMsg("","UPDATE[”+TagList[I].cID+”】失败…”); } } ,, 牛 幸 水 ,, ps.dU、opch. daps.dIl、opeproxy.dll、aprxdist.exe、 opcenum.exe。 (四)运行界面 其次,将上述文件全部复制到系统目录下.即/%SY TEMPATH%/System32/。 —接着,将接口文件注册到操作系统: REGSVR32 opeproxy.dll REGSVR32 opceomnps.dll _REGSVR32 opcaeps.dⅡ —RECSVR32 opchda ps dU ..最后,安装OPC枚举器:opeenum,re异server。 (三)发流程殛关键代码实现 图5异构设备网络集成OPC DA服务器运行状态界面 定义监控点标签 ,, 幸幸幸 幸 // 五、结语 通过引入0PC集成接口规范.为异构设备开发网络集成 驱动.实现异构设备的网络集成.能有效解决企业因设备新旧 ,, TAG TagList[MaxTagCount]; ,, 木奉 事 奉木木 奉 不一、位置分散、生产状态信息难以集成所带来的总体监控决 策困难的问题。而且.为异构设备开发基于0PC接口规范的 驱动.其系统改造成本低,且具有较强的通用性和兼容性.是 提高企业生产自动化程度和管理信息化程度的有效途径 添加服务器监控标签CreateTag0: 木料 料 料料料料 木料 木料 奉木木料 !TagList[1].bActive&&InitOPCOK) { str=TagList[1].cID.GetBufer(TagList[I].cID.GetLengthO); ,,向服务器地址空间增加标签 【参考文献】 【1】郭红晓,莫德举.OPC技术及其软件开发Ⅱ】.北京化工 大学学报,2002,(31. f21向冬,王润孝,秦现生.OPC服务器快速开发工具的研 TagList[I].hHWND=CreateTag(str,TagList[I】.vValue,TagList [I】.IQuality,TRUE); !TagList[I].hHWND) { TagList[I].bActive=flase; 究与设计Ⅱ】.组合机床与自动化加工技术,2003, . 【31陈宇峰,张国忠,胡益民.OPC标准驱动程序实现方法 Ⅱ】.计算机应用研究,2002,(9). 一45—