OPC协议.docx
- 文档编号:26611221
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:10
- 大小:3.45MB
OPC协议.docx
《OPC协议.docx》由会员分享,可在线阅读,更多相关《OPC协议.docx(10页珍藏版)》请在冰豆网上搜索。
OPC协议
随着计算机网络技术的发展,计算机监控系统也普遍的采用了分布式结构,因而系统的异构性是一个非常显著的特点。
OPC技术本质是采用了Microsoft的COM/DCOM(组件对象模型/分布式组件对象模型)技术,COM主要是为了实现软件复用和互操作,并且为基于WINDOWS的程序提供了统一的、可扩充的、面向对象的通讯协议,DCOM是COM技术在分布式计算领域的扩展,使COM可以支持在局域网、广域网甚至Internet上不同计算机上的对象之间的通讯。
同时,计算机监控系统规模越来越大,不同厂家生产的现场设备的种类在不断增加,由于不同厂家所提供的现场设备的通讯机制并不尽相同,计算机监控系统软件需要开发的硬件设备通信驱动程序也就越来越多,造成了硬件通讯驱动程序需要不断开发的现象,而基于COM/DCOM技术的OPC技术,提供了一个统一的通讯标准,不同厂商只要遵循OPC技术标准就可以实现软硬件的互操作性。
OPC(OLEforProcessControl,用于过程控制的OLE)是为过程控制专门设计的OLE技术,由一些世界上技术占领先地位的自动化系统和硬件、软件公司与微软公司(Microsoft)紧密合作而建立的,并且成立了专门的OPC基金会来管理,OPC基金会负责OPC规范的制定和发布。
OPC提出了一套统一的标准,采用典型的CLIENT/SERVER模式,针对硬件设备的驱动程序由硬件厂商或专门的公司完成,提供具有统一OPC接口标准的SERVER程序,软件厂商只需按照OPC标准编写CLIENT程序访问(读/写)SERVER程序,即可实现与硬件设备的通信。
COM是由Microsoft提出的组件标准,它不仅定义了组件程序之间进行交互的标准,并且也提供了组件程序运行所需的环境。
在COM标准中,一个组件程序也被称为一个模块,它可以是一个动态链接库,被称为进程内组件(in-processcomponent);也可以是一个可执行程序(即EXE程序),被称作进程外组件(out-of-processcomponent)。
一个组件程序可以包含一个或多个组件对象,因为COM是以对象为基本单元的模型,所以在程序与程序之间进行通信时,通信的双方应该是组件对象,也叫做COM对象,而组件程序(或称作COM程序)是提供COM对象
的代码载体。
与传统的通讯开发方式相比,OPC技术具有以下优
势:
·硬件厂商熟悉自己的硬件设备,因而设备驱动程序性能更可靠、
效率更高。
·软件厂商可以减少复杂的设备驱动程序的开发周期,只需开发一
套遵循OPC标准的程序就可以实现与硬件设备的通信,因此可以把人力、物力资源投入到系统功能的完善中。
·可以实现软硬件的互操作性。
·OPC把软硬件厂商区分开来,使得双方的工作效率有了很大的提
高。
COM的模型是C/S(客户/服务器)模型,OPC技术的提出就是基于COM的C/S模式,因此OPC的开发分为OPC服务器开发和OPC客户程序开发,对于硬件厂商,一般需要开发适用于硬件通讯的OPC服务器,对于组态软件,一般需要开发OPC客户程序。
对于OPC服务器的开发,由于多种编程语言在实现时都提供了对
COM的支持,如MicrosoftC/C++,VisualBasic,Borland公司的Delphi等。
但是开发OPC服务器的语言最好是C或者是C++语言。
对于OPC客户程序的开发,可根据实际需求,选用比较合适的,能
够快速开发的语言。
OPCDA204规范(OPCDataAccessCustomInterfaceSpecification
2.04)是2000年9月OPC基金会发布的OPCDA自定义接口规范。
该规范制定了OPC服务器和OPC客户程序的COM接口标准,通过制定标准的接口来实现多个厂家的OPC服务器和OPC客户程序开发。
OPC客户程序和OPC服务器
一个OPC客户可以连接一个或多个OPC服务器,而多个OPC客户也可以同时连接同一个OPC服务器,如图1.2所示。
OPC服务器的对象组成
一个OPC服务器由三个对象组成:
服务器(Server),组(Group),项
(Item)。
OPC服务器对象用来提供关于服务器对象自身的相关信息,并且作为OPC组对象的容器。
OPC组对象用来提供关于组对象自身的相关信息,并提供组织和管理项的机制。
OPC组对象提供了OPC客户程序用来组织数据的一种方法。
例如一个组对象代表了一个PLC(可编程控制器)中的需要读写的寄存器组。
一个客户程序可以设置组对象的死区,刷新频率,需要组织的项等。
OPC规范定义了2种组对象:
公共组和私有组。
公共组由多个客户共享,局部组只隶属于一OPC客户。
全局组对所有连接在服务器的应用程序都有效,而私有组只能对建立它的CLIENT有效。
在一个SERVER中,可以有若干个组。
OPC项代表了OPC服务器到数据源的一个物理连接。
数据项是读写数据的最小逻辑单位。
一个OPC项不能被OPC客户程序直接访问,因此在OPC规范中没有对应于项的COM接口,所有与项的访问需要通过包含项的OPC组对象来实现。
简单的讲,对于一个项而言,一个项可以是PLC中的一个寄存器,也可以是PLC中的一个寄存器的某一位。
在一个组对象中,客户可以加入多个OPC数据项。
每个数据项包括3个变量:
值(Value)、品质(Quality)和时间戳(TimeStamp)。
数据值是以VARIANT形式表示的。
这里最需要注意的是项并不是数据源,项代表了到数据源的连接。
例如一个在一个DCS系统中的TAG不论OPC客户程序是否访问都是实际存在的。
项应该被认为是到一个地址的数据。
大家一定要注意项的概念。
不同的组对象里可以拥有相同的项,如组1中有对应于一个开关的ITEMAAA,组2中也可以有同样意义对应于一个开关的ITEMAAA,即同样的项可以出现在不同的组中。
OPC同步异步通讯
OPCDA规范规定了两种通讯方式:
同步通讯和异步通讯。
这两种通讯方式与常见的串口同步通讯、异步通讯以及以太网的同步通讯、异步通讯的功能差不多。
同步通讯时,OPC客户程序对OPC服务器进行相关操作时,OPC客户程序必须等到OPC服务器对应的操作全部完成以后才能返回,在此期间OPC客户程序一直处于等待状态,如进行读操作,那么必须等待OPC服务器完成读后才返回。
因此在同步通讯时,如果有大量数据进行操作或者有很多OPC客户程序对OPC服务器进行读、写操作,必然造成OPC客户程序的阻塞现象。
因此同步通讯适用于OPC客户程序较少,数据量较小时的场合。
异步通讯时,OPC客户程序对服务器进行相关操作时,OPC客户程序操作后立刻返回,不用等待OPC服务器的操作,可以进行其他操作。
当OPC服务器完成操作后再通知OPC客户程序,如进行读操作,OPC客户程序通知OPC服务器后离开返回,不等待OPC服务器的读完成,而OPC服务器完成读后,会自动的通知OPC客户程序,把读结果传送给OPC客户程序。
因此相对于同步通讯,异步通讯的效率更高,适用于多客户访问同一OPC服务器和大量数据的场合。
OPC服务器开发方式
OPC服务器本身就是一个可执行程序,该程序以一定的速率不断地同物理设备进行数据交互。
服务器内有一个数据缓冲区,其中存有最新的数据值,数据质量戳和时间戳。
OPC数据服务器的设计与实现是一个较为复杂与繁重的任务,设计者既需要熟悉OPC规范,同时也必须掌握相应的硬件产品特性。
OPC数据服务器大致可以分解为不同的功能模块。
OPC对象接口管理模块,Item数据项管理模块以及服务器界面和设置等等。
一个设备的OPCServer主要有两部组成,一是OPC标准接口的实现,二是与硬件设备的通信模块。
虽然COM技术本质上具有语言无关性,可以用各种语言开发,但
由于最适合COM开发的语言仍然是C++,因此一般都选择采用VisualC++进行开发。
远程组件,远程服务器与本地服务器类似,除了远程服务器是运行
在通过网络连接的分离的计算机上。
这种功能是使用DCOM实现的。
DCOM的优点在于它并不要求任何特别的编程来使具有功能。
另外服务
端和客户端通信是通过RPC(Remoteprocedurecall,RPC)通信协议进行
的。
对于这三种不同的服务器组件,客户程序和组件程序交互的内在方
式是完全不同的。
但是对于功能相同的进程内和进程外组件,从程序编
写的角度看,客户程序是以同样的方法来使用组件程序的,客户程序不
需要做任何的修改。
Part6:
Mappings
1MessageEncoding
Built-inTypes
AllUAmessageencodingsarebasedonrulesthataredefinedforastandardsetofbuilt-intypes.Thesebuilt-intypesareusedtoconstructstructures,arraysandmessages.Thebuilt-intypesaredescribedinTable20.
Table20–Built-inDataTypes
Name
Description
Null
Anunspecifiedvalue.
Boolean
Atwo-statelogicalvalue(trueorfalse).
SByte
An8bitsignedintegervalue.
Byte
An8bitunsignedintegervalue.
Int16
A16bitsignedintegervalue.
UInt16
A16bitunsignedintegervalue.
Int32
A32bitsignedintegervalue.
UInt32
A32bitunsignedintegervalue.
Int64
A64bitsignedintegervalue.
UInt64
A64bitunsignedintegervalue.
Float
AnIEEEsingleprecision(32bit)floatingpointvalue.
Double
AnIEEEdoubleprecision(64bit)floatingpointvalue.
String
AsequenceofUnicodecharacters.
DateTime
Aninstanceintime.
Guid
A16bytevaluethatcanbeusedasagloballyuniqueidentifier.
ByteString
Asequenceofbytes.
XmlElement
AnXMLelement.
NodeId
AnidentifierforanodeintheaddressspaceofaUAserver.
ExpandedNodeId
ANodeIdthatallowsthenamespaceURItobespecifiedinsteadofanindex.
StatusCode
Anumericidentifierforaerrororconditionthatisassociatedwithavalueoranoperation.
DiagnosticInfo
AstructurethatcontainsdetailederroranddiagnosticinformationassociatedwithaStatusCode.
ExtensionObject
Astructurethatcontainsanapplicationspecificdatatypethatmaynotberecognizedbythereceiver.
DataValue
Adatavaluewithanassociatedstatuscodeandtimestamps.
Variant
Aunionofallofthetypesspecifiedabove.
远程测试和验证环境
1,建立OPC设备
2,远程OPC服务器测试
3,建立与服务器的连接
4,枚举到的远程OPC服务器
5,选择需要的OPC服务器
6,在给定OPC设备上建立数据通路,就是OPC组和OPC项
7,将OPC组和OPC项与本地内存变量进行关联,就能使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPC 协议