基于OPC通讯协议的自动化仿真平台_理论篇.docx_第1页
基于OPC通讯协议的自动化仿真平台_理论篇.docx_第2页
基于OPC通讯协议的自动化仿真平台_理论篇.docx_第3页
基于OPC通讯协议的自动化仿真平台_理论篇.docx_第4页
基于OPC通讯协议的自动化仿真平台_理论篇.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于OPC通讯协议的自动化仿真平台(理论篇)基于OPC通讯协议的自动化仿真平台(理论篇)(昆明电器科学研究所 技术开发中心)摘要:本文在明确给出OPC通讯协议一些基本概念的之前,首先讨论了微软的COM和OLE技术为下一步进行配置做好铺垫。我们所以开展这项工作,是希望在使Matlab访问工控软件时,可以通过OPC这个中间平台。随着OPC技术日益成熟及在工控领域的广泛应用,研究使第三方非工控软件与DCS系统或现场PLC等的通讯具有重要意义。1. COM的概念Microsoft组件对象模型(Component Object Model),也即大家熟知COM,是开发软件组建的一种方法。组件其实是一些小的二进制可执行程序,它可以给应用程序操作系统以及其它组件提供一些服务。开发定制的COM组件就如同开发动态的面向对象的API。多个COM对象可以连接起来已形成应用程序或组件系统。并且组件可以在运行时、在不重现链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术如ActiveX、DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量地使用组件来定制他们的应用程序及操作系统。 (1 页 IX. 引言)2. OLE的概念OLE/ActiveX/COM技术是MS的核心应用技术,只有彻底洞察其理论精髓,才能以不变应万变。我们首先从OLE谈起。2.1. 过去的OLE和今天的OLE作为COM技术前身的OLE,其最初含义是指在程序之间链接和嵌入对象数据(Object Link Embeded)。它提供了建立混合文档的手段(资深Windows 3.X 用户可能记得当初在Word6.0中插入一个图形的新奇和喜悦,有关复合文档,后面文章详细讲述),使得那些没有太多专业知识的用户能够很容易地协调多个应用程序完成混合文档的建立。1991年制定的OLE1.0规范主要解决多个应用程序之间的通信和消息传递问题,微软希望第三方开发商能够遵守这个规范,以使在当时的Windows平台上的应用程序能够相互协调工作,更大的提高工作效率。然而事与愿违,只有很少的软件开发商支持它。为此,微软于1993年发布了新的规范OLE2.0,它在原有的基础上完善并增强了以下各方面的性能:1OLE自动化:一个程序有计划地控制另一个程序的能力。2OLE控件:小型的组件程序,可嵌入到另外的程序,提供自己的专有功能。3OLE文档:完善了早期的混合文档功能,不仅支持简单链接和嵌入,还支持在位激活、拖放等功能。 强大的功能使得很多的开发商开始支持新的OLE技术,因为微软在OLE2.0中建立了一个称为COM(Component Object Model即组件对象模式)的新规范。2.2. OLE应用及相关名词 (2)容器:容器是一个客户程序,它具有申请并使用其它COM组件通过接口为其它程序实现的功能;服务器:服务器通过特定的接口将自己完成的一些功能,提供给使用自己的应用程序(例如画笔程序是一个文档服务器,它提供创建并编辑BMP 图像的功能)。当打开Word,选择【插入】菜单下的【对象.】项,您可以看到在您的系统中存在哪些文档服务器,此时的Word以文档容器的身份出现。在位激活:当您双击插入的对象后发现Word的菜单有些改变成文档服务器程序的菜单,可以在当前的环境下编辑对象,这称为在位激活。自动化: 和OLE文档技术类似,允许一个应用程序通过编程控制另一个应用程序“自愿”提供的功能的技术称为OLE自动化。自身暴露一些可编程对象给其它程序的应用程序叫自动化服务器,利用并操纵自动化服务器提供的功能的应用程序叫自动化客户或自动化控制器,有些程序既是自动化服务器又是自动化控制器。例如在VC中我们可以通过编程创建并编辑一个Excel工作表(很多参考书都以此为例),这里的VC就是自动化控制器,而创建工作表的Excel程序则是自动化服务器,但在Excel中我们又可以利用VBA语言创建PowerPoint的幻灯片,它又成了自动化控制器。利用OLE自动化技术可以实现软件的一次开发和多次利用,这也是集成组件的关键技术。无论是操作系统还是应用软件,微软都有意识朝着这个方向发展,例如从Windows95开始,包括WindowsNT4.0以后的操作系统的Shell就实现了OLE自动化技术。 那么什么是ActiveX?它和OLE有什么联系呢?2.3. ActiveX战略同早期的功能薄弱的OLE1.0相比,OLE2.0得到了很多软件厂商的支持。许多程序设计人员编写了大量的实现OLE自动化服务器功能的组件(不一定是EXE文件),这些组件一般不求功能齐全、强大,而是实现专门的功能,可以被其它程序编程控制,由此承袭OLE的名字称为OLE控件。它们在文件名中的扩展名一般为OCX(OLE Control Extension)。 微软刚刚赢得广大软件厂商的支持,使OLE技术深入人心,然而“人算不如天算”,国际互联网的超速发展让比尔盖茨始料未及。加上早期的OLE1.0不得人心,导致后来的人们总把在Word中插入一个图形当作OLE技术的全部,各类资料在介绍新OLE技术时命名也不统一,造成很大的混乱。针对这些情况,微软在1996年重新制订了一个关于OLE的规范OLE 96规范。这个规范扩展了 OLE控件的能力,并贯彻微软的Internet战略使它更易于在网络环境中使用,还考虑命名混淆的问题,重新给OLE控件贴上一个标签ActiveX控件。不仅如此,以前的什么OLE文档也相应称为ActiveX 文档了。总之,为了满足Internet战略,微软把OLE换成了ActiveX,企图使人们重新看待新的OLEActiveX,把它看做网络上的解决软件组件问题的标准。 许多在Windows上同微软合作得很好的厂商在开发新版本软件时都开始支持ActiveX技术,例如Delphi、PowerBuild等开发工具。原来同Windows竞争的操作系统也开始支持ActiveX,例如Macintosh,甚至老对手OS/2上也可以使用ActiveX控件。ActiveX技术也许真的会成为一个异种平台争相支持的规范,如果能够进一步完善ActiveX、采用更开放的策略以及微软不被卸成八大块的话。3. OPC的概念 (3)3.1. 什么是OPCOPC(OLE for Process Control),即用于过程控制的对象链接与嵌入技术,是一种规范,是在工业控制和生产自动化领域中使用的硬件和软件的接口标准。OPC以组件对象模型和分布式组件对象模型(COM/DCOM)技术为基础,采用客户/服务器(Client/Server)的模式,定义了一组COM对象及其接口标准。OPC规范是由世界范围内自动化领域中处于领导地位的硬件和软件开发商,在微软的协作下制定的,并且已经得到越来越多的客户和硬件制造商的认可。3.1.1. OPC的意义在传统的控制系统中,针对同一个硬件设备,每个应用软件都要根据自己的需求开发一套硬件驱动程序。这不仅加大了开发和维护费用,而且带来了访问冲突问题。OPC技术将各个硬件设备驱动程序和通讯程序封装成独立的OPC服务器,上层应用软件(作为OPC客户端)可以不关心硬件的性能特点,而通过标准的OPC接口访问OPC服务器。这样不仅解决了上述问题,而且实现了软件的“即插即用”。OPC相当于一块软件“主板”,它能够直接与现场的PLC、工业网络、数据采集和Windows CE设备连接,快速有效地获取现场实时数据。PC机内的各种监视、控制和管理等应用软件则像是插在OPC主板上的软件“芯片”,芯片可以通过OPC获得现场实时数据,芯片之间也可以按照OPC协议进行通讯,从而实现软件的“即插即用”。3.1.2. OPC对象与接口OPC的核心是COM/DCOM技术。在COM模型中,软件的功能被分解为一些组件,这些组件通过COM协议在一定条件下连接起来,实现相应的功能。COM对象分为客户端和服务器两类,客户端通过COM接口访问服务器2。OPC数据访问规范描述了OPC服务器需要实现的COM对象及其接口,它定义了定制接口(custom interface)和自动化接口(automation interface)1。OPC客户程序通过接口与服务器通讯,间接读取数据。OPC服务器必须实现定制接口,也可以有选择地实现自动化接口。一般来说,自动化接口能为VB等高级语言客户程序提供极大的便利,但数据传输效率较低;而定制接口则为用C/C+语言编写的程序带来灵活高效的调用手段。OPC客户程序访问服务器时,创建一个服务器对象(这里指的是逻辑对象,目的是利用这个逻辑对象建立与实际服务器的连接),调用这个服务器对象的接口,服务器对象创建组对象并返回组对象的指针,客户程序获得组对象的指针后调用其接口。注意,OPC项并不是OPC客户直接操作的对象,因为OPC项没有定义外部接口,对象的所有操作都是通过包容该项的组对象进行的。3.2. OPC数据访问服务器的结构及设计步骤3.2.1. OPC数据访问服务器的结构图 1. OPC数据访问服务器的结构本文实现的OPC数据访问服务器具有数据采集的功能,提供符合OPC规范的定制接口。主要由OPC 服务器对象、OPC 组对象、OPC 项对象和针对CAN(Controller Area Network控制器局域网)通讯卡编写的I/O 动态链接库(DLL)组成,采用如图1所示的结构。OPC 服务器对象是客户端与服务器交互的首要对象。客户端通过访问服务器对象的接口函数与之进行交互。一个服务器对象里可以设置一个以上的组对象。OPC 服务器对象的主要功能是: 创建和管理OPC 组对象; 管理服务器内部的状态信息; 将服务器的错误代码翻译成描述性语句; 浏览服务器内部的数据组织结构。OPC 组对象用于组织管理服务器内部的实时数据信息,它是OPC 项对象的集合。正因为有了组对象,OPC应用程序就可以成批地对所需要的数据进行访问,也可以以组为单位启动或停止数据访问。其主要功能是:管理组对象内部的状态信息;创建和管理项对象;OPC服务器内部的实时数据存取服务(同步或异步方式)。OPC 服务器对象和组对象支持的接口由OPC规范定义,但并未规定具体如何实现,需要开发人员自己完成。OPC项则与现场设备中的模块相对应,它包含数据项的值(value)、品质(quality)和时间戳(time stamp)。I/O DLL是针对具体硬件设备开发的驱动程序,实现从现场设备读取数据的功能。3.2.2. 实现OPC数据访问服务器的主要步骤:获得并注册OPC标准组件根据COM规范,COM服务器可分为进程内服务器、本地服务器和远程服务器。后两种服务器与客户程序运行在不同的进程空间,属于进程外服务器。为了实现进程间通讯,需要用到代理/存根模块。代理/存根模块由接口描述语言(IDL)直接生成。OPC基金会为每种OPC服务器提供了相应的代理/存根动态链接库,这些文件可以在OPC基金会的网站()上免费下载。注意,设计OPC服务器时可以在OPC对象上增加接口以满足特定的要求,但不能修改标准的OPC IDL文件或相应的 proxy/stub DLL。新增的接口描述应定义在独立的IDL文件中,并由该文件生成独立的代理/存根模块来完成接口的调用工作。组件的注册将在后面介绍。编写OPC服务器代码首先定义0PC数据服务器的名称(ProgID)和类标识(CLSID),实现COM库的初始化功能和0PC数据服务器类厂对象的接口功能。然后实现OPC对象和数据缓冲区。接下来针对具体硬件编写I/O DLL,实现数据的实时读取。这项工作是十分繁重的,要求开发人员具有良好的COM编程知识,具体过程限于篇幅不能详述,这里指出两点引起注意:a) 全局唯一标识符(GUID)GUID是为每个COM对象提供的十六字节标识数。COM类至少有两个GUID:类标识(CLSID)和接口标识(IID)。CLSID用于标识COM类,登记在Windows注册表中,包含指向包括COM类的DLL或EXE组件的路径。IID用于标识该类的接口,被应用程序用来查询和触发该类的方法,也登记在注册表中。由于对象类是由GUID标识的,所以必须保证它们的唯一性,才能使最终用户在使用由不同软件商开发的组件时不会发生冲突。可以使用宏DEFINE_GUID (name , long , word , word , word , byte1 , ,byte8 )其中 name 是标识数的名字,其余参数是实际的ID码。类标识的命名惯例是CLSID_ClassName ,而接口ID的命名惯例是IID_InterfaceName。有两种途径来获得GUID: Microsoft Visual C+提供了两个工具来产生GUID:UUIDGen.exe和GUIDGen.exe(大小写没有影响)。前者是一个命令行程序,直接产生一个GUID;后者是一个基于对话框的应用程序,运行UUIDGen.exe,产生一个Create GUID对话框。它提供四种格式,选定之后,按New GUID键产生新的GUID,显示在Result栏中;按Copy键可以复制产生的结果。 利用COM库提供的API函数来产生GUID:HRESULT CoCreateGuid (GUID pguid )如果创建GUID成功,则函数返回S_OK,并且pguid将指向所得到的GUID值。b) OPC组件的注册注册表是客户和组件程序共同访问的信息仓库,通常情况下,当组件程序被安装到计算机上之后,必须通过某种途径把它的信息注册到注册表中,然后客户程序才能根据注册表中的信息对组件程序进行操作。根据COM规范,组件程序可分为自注册组件程序和非自注册组件程序。OPC基金会提供的组件都是自注册组件。对于非自注册组件程序,其注册过程与组件程序没有直接关系,必须单独进行注册信息的配置,比如,可以编写一个注册表文件,然后在RegEdit中引入。对于DLL形式的进程内自注册组件,Wi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论