OPC服务器与客户程序开发指南.docx
《OPC服务器与客户程序开发指南.docx》由会员分享,可在线阅读,更多相关《OPC服务器与客户程序开发指南.docx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章OPC概述关键字:COMDCOMOPC DA 通讯规范CLIENTSERVER GROUP ITEM自定义接口自动化接口同步异步回调随着计算机科学技术、工业控制等各方面新技术迅速发展,计算机监控系统由早期集中式监控向全分布式方向发展,计算机监控系统软件随着面向对象技术、分布式对象计算、多层次Client/Server技术成熟,也从早期面向功能系统软件,发展为面向具体现场设备为特征面向对象监控系统软件。同时,计算机监控系统规模越来越大,不同厂家生产现场设备种类在不断增加,由于不同厂家所提供现场设备通讯机制并不尽相同,计算机监控系统软件需要开发硬件设备通信驱动程序也就越来越多,造成了硬件通讯
2、驱动程序需要不断开发现象,而基于COM/DCOM技术OPC技术,提供了一个统一通讯标准,不同厂商只要遵循OPC技术标准就可以实现软硬件互操作性。OPC(OLE for Process Control,用于过程控制OLE)是为过程控制专门设计OLE技术,由一些世界上技术占领先地位自动化系统和硬件、软件公司和微软公司(Microsoft)紧密合作而建立,并且成立了专门OPC基金会来管理,OPC基金会负责OPC规范制定和发布。OPC提出了一套统一标准,采用典型CLIENT/SERVER模式,针对硬件设备驱动程序由硬件厂商或专门公司完成,提供具有统一OPC接口标准SERVER程序,软件厂商只需按照OP
3、C标准编写CLIENT程序访问(读/写)SERVER程序,即可实现和硬件设备通信。如图1.1所示,和传统通讯开发方式相比,OPC技术具有以下优势:硬件厂商熟悉自己硬件设备,因而设备驱动程序性能更可靠、效率更高。软件厂商可以减少复杂设备驱动程序开发周期,只需开发一套遵循OPC标准程序就可以实现和硬件设备通信,因此可以把人力、物力资源投入到系统功能完善中。可以实现软硬件互操作性。OPC把软硬件厂商区分开来,使得双方工作效率有了很大提高。图1.1 OPC技术应用前后比较因此OPC技术出现得到了广大软硬件厂商支持,并迅速发展。自从1997年9月发布OPC DA1.0规范以来,经过多年发展,OPC规范已
4、经被工控领域大多数厂商接受,并成了工控软件技术标准。目前OPC规范主要有DA(Data Access)规范,AE(alarm and event)规范,HDA(history data access)规范等。而且随着OPC技术和企业整体信息系统集成需求变得日益迫切,对OPC技术跨平台性能和Internet特性提出了更高要求。为此,OPC基金会开始以XML为基础着手制定一系列新标准。2002年3月OPC基金会正式发布了OPC XML-DA规范,并和2004年12月正式发布了OPC XML-DA1.01规范,为OPC进一步提高工业控制系统互操作性揭开了新篇章。本书仅仅以符合DA规范OPC服务器和客
5、户程序为例介绍OPC技术,对于其它规范OPC技术,本书未能介绍。1.1 OPC技术本质COM/DCOM随着计算机网络技术发展,计算机监控系统也普遍采用了分布式结构,因而系统异构性是一个非常显著特点。OPC技术本质是采用了MicrosoftCOM/DCOM(组件对象模型/分布式组件对象模型)技术,COM主要是为了实现软件复用和互操作,并且为基于WINDOWS程序提供了统一、可扩充、面向对象通讯协议,DCOM是COM技术在分布式计算领域扩展,使COM可以支持在局域网、广域网甚至Internet上不同计算机上对象之间通讯。COM 是由 Microsoft 提出组件标准,它不仅定义了组件程序之间进行交
6、互标准,并且也提供了组件程序运行所需环境。在 COM 标准中,一个组件程序也被称为一个模块,它可以是一个动态链接库,被称为进程内组件(in-process component);也可以是一个可执行程序(即 EXE 程序),被称作进程外组件(out-of-process component)。一个组件程序可以包含一个或多个组件对象,因为 COM 是以对象为基本单元模型,所以在程序和程序之间进行通信时,通信双方应该是组件对象,也叫做 COM 对象,而组件程序(或称作 COM 程序)是提供 COM 对象代码载体。COM标准为组件软件和应用程序之间通信提供了统一标准,包括规范和实现两部分,规范部分规定
7、了组件间通信机制。由于COM技术语言无关性,在实现时不需要特定语言和操作系统,只要按照COM规范开发即可。然而由于特定原因,目前COM技术仍然是以Windows操作系统为主,在非Windows操作系统上开发OPC,具有很大难度。COM模型是C/S(客户/服务器)模型,OPC技术提出就是基于COMC/S模式,因此OPC开发分为OPC服务器开发和OPC客户程序开发,对于硬件厂商,一般需要开发适用于硬件通讯OPC服务器,对于组态软件,一般需要开发OPC客户程序。对于OPC服务器开发,由于多种编程语言在实现时都提供了对COM支持,如Microsoft C/C+,Visual Basic, Borlan
8、d公司Delphi等。但是开发OPC服务器语言最好是C或者是C+语言。在本书中选用Visual C+6.0为开发语言。对于OPC客户程序开发,可根据实际需求,选用比较合适,能够快速开发语言。1.2 OPCDA204规范简述OPCDA204规范(OPC Data Access Custom Interface Specification 2.04)是2000年9月OPC基金会发布OPCDA自定义接口规范。该规范制定了OPC服务器和OPC客户程序COM接口标准,通过制定标准接口来实现多个厂家OPC服务器和OPC客户程序开发。本书附带OPCDA204规范WORD文档。1.2.1 OPC客户程序和OP
9、C服务器一个OPC 客户可以连接一个或多个OPC 服务器,而多个OPC 客户也可以同时连接同一个OPC 服务器,如图1.2所示。图1.2 OPC 客户程序/OPC服务器关系1.2.2 OPC服务器对象组成一个OPC服务器由三个对象组成:服务器(Server),组(Group),项(Item)。OPC服务器对象用来提供关于服务器对象自身相关信息,并且作为OPC组对象容器。OPC组对象用来提供关于组对象自身相关信息,并提供组织和管理项机制。OPC组对象提供了OPC客户程序用来组织数据一种方法。例如一个组对象代表了一个PLC(可编程控制器)中需要读写寄存器组。一个客户程序可以设置组对象死区,刷新频率
10、,需要组织项等。OPC规范定义了2种组对象:公共组和私有组。公共组由多个客户共享,局部组只隶属于一 OPC客户。全局组对所有连接在服务器应用程序都有效,而私有组只能对建立它CLIENT有效。在一个SERVER中,可以有若干个组。OPC项代表了OPC服务器到数据源一个物理连接。数据项是读写数据最小逻辑单位。一个OPC项不能被OPC客户程序直接访问,因此在OPC规范中没有对应于项COM接口,所有和项访问需要通过包含项OPC组对象来实现。简单讲,对于一个项而言,一个项可以是PLC中一个寄存器,也可以是PLC中一个寄存器某一位。在一个组对象中,客户可以加入多个OPC数据项。每个数据项包括3个变量:值(
11、Value)、品质(Quality)和时间戳(Time Stamp)。数据值是以VARIANT形式表示。图1.3 Server/Group/Item关系这里最需要注意是项并不是数据源,项代表了到数据源连接。例如一个在一个DCS系统中TAG不论OPC客户程序是否访问都是实际存在。项应该被认为是到一个地址数据。大家一定要注意项概念。不同组对象里可以拥有相同项,如组1中有对应于一个开关ITEMAAA,组2中也可以有同样意义对应于一个开关ITEMAAA,即同样项可以出现在不同组中。1.2.3 OPC接口体系OPC规范提供两种接口:自定义接口(the OPC Custom Interfaces),自动化
12、接口(the OPC Automation interfaces)。 图1.4 OPC接口如前所述,象所有COM结构一样,OPC是典型CLIENT/SERVER结构,OPC服务器提供标准OPC接口供OPC客户程序访问。OPC服务器必须提供自定义接口,对于自动化接口,在OPC规范定义中是可选。图1.5典型OPC结构1.3 OPC对象接口定义本节主要对OPC服务器对象和OPC组对象接口进行简要介绍。OPC服务器对象提供一些方法去读取或连接一些数据源。OPC客户程序连接到OPC服务器对象,并通过标准接口和OPC服务器联系。OPC服务器对象提供接口(AddGroup)供OPC客户程序创建组对象并将需要
13、操作项添加到组对象中,并且组对象可以被激活,也可以被赋予未激活状态。对于OPC客户程序而言,所有OPC服务器和OPC组对象可见仅仅是COM接口。下面两个图例是OPC规范中定义OPC服务器对象和OPC组对象COM接口,其中任选接口均以 表示。(注:任选指开发OPC服务器时,这些接口可以根据实际情况选择实现还是不实现,除任选项外接口在开发时必须全部实现。)图1.6标准OPC服务器对象及接口IOPCServerPublicGroups,IOPCBrowseServerAddressSpace和IPersistFile为任选(optional)接口,OPC服务器提供商可根据需要选择是否需要实现。其它接
14、口为OPC服务器必须实现接口。其中:IOPCServerPublicGroups接口用于对公共组进行管理。IPersistFile接口允许用户装载和保存服务器设置,这些设置包括服务器通信波特率、现场设备地址和名称等,这样用户就可以知道服务器启动和配置改变而不需要启动其它程序。IOPCBrowseServerAddressSpace允许用户浏览服务器中有用组员数据,为用户提供OPC服务器各个组员定义列表。IOPCCommon接口是其它OPC服务器(例如OPC报警和事件服务器)也使用接口。通过该接口可为某个特定客户/服务器对话(session)设置和查询本地标识(LocateID)。这样,一个客户
15、程序操作将不会影响其它客户程序。IConnectionPointContainer接口服务器(OPC服务器对象接口)支持可连接点对象,当OPC服务器关闭时需要通知所有客户程序释放OPC组对象和其中OPC组员,此时可利用该接口调用客户程序方IOPCShutdown接口实现服务器正常关闭。IOPCServer接口及成员函数主要用于对组对象进行创建、删除、枚举和获取当前状态等操作。是OPC服务器对象主要接口。接口及成员函数定义为:图1.7标准OPC组对象及接口其中:IOPCItemMgt接口及成员函数用于OPC客户程序添加、删除和组对象中组员等控制操作。IOPCGroupStateMgt接口及其成员
16、函数允许OPC客户程序操作或获取用户组对象全部状态(主要是组对象刷新率和活动状态,刷新率单位为毫秒)。IOPCPublicGroupStateMgt为任选接口,用于将私有组对象(private group)转化为公有组对象(public group),这个接口一般不用,在很多商业OPC服务器中,此接口都没有开发。可选接口IOPCAsyncIO和IdataObject接口用于异步数据传输(在OPC数据访问规范1.0中定义,现在其功能已经被IOPCAsyncIO2和IConnectionPointContainer接口取代)。IOPCSyncIO用于同步数据访问。IOPCAsyncIO2用于异步数
17、据访问。这两个接口是数据访问规范进行数据访问最重要接口。有关OPC服务器对象和OPC组对象COM接口详细定义请看OPC规范定义,除在开发实例中用到COM接口,其它接口本文不再详述。1.4 OPC同步异步通讯OPCDA规范规定了两种通讯方式:同步通讯和异步通讯。这两种通讯方式和常见串口同步通讯、异步通讯以及以太网同步通讯、异步通讯功能差不多。同步通讯时,OPC客户程序对OPC服务器进行相关操作时,OPC客户程序必须等到OPC服务器对应操作全部完成以后才能返回,在此期间OPC客户程序一直处于等待状态,如进行读操作,那么必须等待OPC服务器完成读后才返回。因此在同步通讯时,如果有大量数据进行操作或者
18、有很多OPC客户程序对OPC服务器进行读、写操作,必然造成OPC客户程序阻塞现象。因此同步通讯适用于OPC客户程序较少,数据量较小时场合。异步通讯时,OPC客户程序对服务器进行相关操作时,OPC客户程序操作后立刻返回,不用等待OPC服务器操作,可以进行其他操作。当OPC服务器完成操作后再通知OPC客户程序,如进行读操作,OPC客户程序通知OPC服务器后离开返回,不等待OPC服务器读完成,而OPC服务器完成读后,会自动通知OPC客户程序,把读结果传送给OPC客户程序。因此相对于同步通讯,异步通讯效率更高,适用于多客户访问同一OPC服务器和大量数据场合。OPC异步通讯有四种方式:数据订阅,客户端通
19、过订阅方式后,服务器端将变化数据通过回调传送给客户程序。异步读,返回操作结果和数据值。异步写,返回操作结果,成功、失败。异步刷新,异步读所有Item值1.5 OPC服务器开发方式OPC服务器本身就是一个可执行程序,该程序以一定速率不断地同物理设备进行数据交互。服务器内有一个数据缓冲区,其中存有最新数据值,数据质量戳和时间戳。OPC 数据服务器设计和实现是一个较为复杂和繁重任务,设计者既需要熟悉OPC规范,同时也必须掌握相应硬件产品特性。OPC 数据服务器大致可以分解为不同功能模块。OPC 对象接口管理模块,Item 数据项管理模块以及服务器界面和设置等等。一个设备OPC Server主要有两部
20、组成,一是OPC标准接口实现,二是和硬件设备通信模块。虽然COM技术本质上具有语言无关性,可以用各种语言开发,但由于最适合COM开发语言仍然是C+,因此一般都选择采用Visual C+进行开发。目前用Visual C+开发COM组件主要有三种方式:使用COM SDK直接开发COM组件;通过MFC提供COM支持实现COM组件;通过ATL来实现COM组件。此外,目前国内外很多工控软件厂商也推出了一系列OPC快速开发工具包,使用专门OPC开发工具包,开发者只需具备基本编程基础即可快速上手,无需掌握ATL,COM/DCOM,也无需了解OPC技术细节,而且大多数OPC开发工具都支持多种常用编程语言,如V
21、B,VC等。网站也提供OPC开发工具,有兴趣读者可以到网站下载DEMO开发工具或者和QQ:41063473联系购买事宜。)建议所有学生或有志向开发人员可以尝试独立开发OPC服务器,如果是公司使用,建议购买OPC服务器开发工具。重点:何为OPC?OPCDA有哪些对象?OPCDA有哪些接口?OPCDA通讯方式?OPCDA开发方式?(工控帮) 第2章ATL简介关键字:ATL类厂接口标识符IDL组件聚合双重接口自定义接口自动化接口连接点事件注册属性方法客户程序Visual C+从4.0版本就已经提供全面COM支持,尤其在5.0和6.0版本中,不仅MFC类库提供COM应用支持,而且Visual C+集成
22、开发环境Visual Studio也为COM应用提供了各种向导支持,并且,Visual C+还提供了另一套模板库ATL专门用于COM应用程序开发。在上一章中介绍了采用Visual C+进行OPC服务器开发几种方式,因为ATL是专为COM应用程序开发,因此本书OPC服务器开发采用了ATL模式,在本章中首先对ATL进行简要介绍,并以实际例子介绍如何进行ATL编写COM组件。ATL(Active Template Library)是Visual C+提供一套基于模板C+类库,利用这些模板类,开发人员可以快速开发COM组件程序。所以说ATL专门针对于COM应用开发,它内部模板类实现COM一些基本特征,
23、比如一些基本COM接口IUnknown, IClassFactory, IDispatch等,也支持COM一些高级特性,如双接口(dual interface)、连接点(connection point)、Activex控制等。ATL最初设计是快速开发小型组件,ATL2.0版本添加了模板库用来支持可视化控件开发。ATL所具有特点:包含所有C+功能。无需运行库,除非你想使用它。引用计数。高水平对象和接口实现方法。类厂自动操作,对象创造,接口查询。ATL开发应用程序并不像开发MFC应用程序那样容易。但Visual Stduio提供某种帮助使开发者迅速开发应用程序。可利用ATL COM Winzar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPC 服务器 客户 程序 开发 指南
限制150内