发表于:2003-11-20 11:48:00
楼主
[摘要]介绍了OPC技术及在工业控制软件中的具体应用。重点叙述了OPC技术原理和特点,OPC数据采集技术和OPC冗余技术。
[关键词] OPC,OPC控件,OPC冗余服务器。
1.引言
OPC全称是OLE for Process Control,是过程控制业中的新兴标准,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。在这种情况下,OPC标准应运而生。OPC 以OLE/COM/DCOM机制作为应用程序级的通信标准,采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。
2.OPC技术及接口
OPC技术的实现包括两个组成部分,OPC服务器部分及OPC客户应用部分,其应用模式如图1所示。
OPC服务器是一个典型的现场数据源程序,它收集现场设备数据信息,通过标准的OPC接口传送给OPC客户端应用。OPC客户应用是一个典型的数据接收程序,如人机界面软件(HMI)、数据采集与处理软件(SCADA)等。OPC客户应用通过OPC标准接口与OPC服务器通信,获取OPC服务器的各种信息。符合OPC标准的客户应用可以访问来自任何生产厂商的OPC服务器程序。
OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的。在Windows 3.1下,微软公司通过OLE 1技术使相对独立的不同应用程序结合到一起成为可能,向用户软件模块化迈进了关键一步。在OPC技术中使用的是OLE 2技术,微软不仅对OLE 1进行了扩展,还引入了一种新的深层次结构,使得在微软Windows下开发软件的思维方式有所改变,OLE标准允许多台微机之间交换文档、图形等对象。COM是Component Object Model的缩写,是所有OLE机制的基础。COM是一种为了实现与编程语言无关的对象而制定的标准,该标准将Windows下的对象定义为独立单元,可不受程序限制地访问这些单元。这种标准可以使两个应用程序通过对象化接口通讯,而不需要知道对方是如何创建的。例如,用户可以使用C++语言创建一个Windows对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用Visual Basic,C,Pascal,Smalltalk或其它语言编写对象访问程序。在Windows NT4.0操作系统下,COM规范扩展到可访问本机以外的其它对象,一个应用程序所使用的对象可分布在网络上,COM的这个扩展被称为DCOM(Distributed COM)。通过DCOM技术和OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。很多国际先进的自动化软件供应商均以OPC技术作为核心,开发出了多种功能的自动化软件,如ICONICS、PCSOFT等公司。同时,具有OPC标准接口的自动化软件组件,遵守统一的数据访问标准,配置灵活,方便了软件集成,如ICONICS公司的具有软逻辑(Soft Logic)功能的ControlWorX32组件,通过OPC标准可以自由的集成在HMI/SCADA 软件中。
OPC服务器通常支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automation interface);自定义接口(Custom interface)。自动化接口通常是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用。而自定义接口是专门为C++等高级编程语言而制定的标准接口。OPC服务器的访问方式与接口如图2。
3.OPC技术在过程控制中的应用
OPC技术目前已经在国内开始使用,下面介绍OPC技术在控制应用软件开发中的典型应用。
3.1 OPC数据采集技术
OPC技术通常在数据采集软件中广泛使用。现在众多硬件厂商提供的产品均带有标准的OPC接口,可以编制符合标准OPC接口的客户端应用软件完成数据的采集任务。随着软件组件化的发展,过去提出的搭积木方式在工控软件中成为现实,用户可以通过各种软件模块完成控制应用的实现。因此,我们提出了创建OPC数据采集ActiveX控件方式完成OPC服务器的数据采集任务。通过OPC数据采集控件,用户可以方便的编写数据采集监控程序,同时也可以为原有的数据采集系统添加新的功能。OPC数据采集控件的想法来自于VisualBasic编程环境中的数据库(Data)控件,数据库控件的主要作用是连接各种数据库,为用户进行数据库编程提供方便。OPC数据采集控件提供类似数据库控件的功能,使用方式与数据库控件相仿,通过数据订阅和数据的动态绑定,为具有数据绑定功能的所有ActiveX控件提供数据源,用户甚至无须编程就可显示来自OPC服务器的实时数据。我们在实际应用中,开发了OPC数据采集控件,现将该控件的属性、方法、事件归纳如下:
* OPC数据采集控件属性
属性名称
属性描述
OPCItems
连接OPC服务器中数据项的个数
OPCItemID
数据项的维一性编号。用于从数据项集合中选择某一数据项。
OPCItemName
OPC服务器中数据项的名称
OPCServerName
OPC服务器名称
OPCRemoteNodeName
OPC服务器所在的网络节点名称。如果该属性是空串,则表明OPC服务器是在本机上。
OPCItemValue
OPC数据项的当前值
OPCItemQuality
OPC数据项的当前值的质量
OPCItemTimeStamp
OPC数据项的当前值的时间戳
UpdateRate
OPC服务器数据的更新速率。单位是1/1000秒
DeadBand
用来设置参数的变化量,当变化量超过死区时,OPC服务器发出DataChange事件
TimeBias
OPC服务器的时间偏置
LocaleID
与OPC服务器进行通讯时所用的语言标识
DisplayFullOPCItemName
是否显示OPC数据项的全称。数据项的全称包括节点名、服务器名和数据项名
OPCItemGain
数据变换的增益。数据输出值=OPCItemGain*OPC数据原始值+OPCItemBias
OPCItemBias
数据变换的偏置。数据输出值=OPCItemGain*OPC数据原始值+OPCItemBias
OPCItemDigits
数据项的小数据点位数
PrintConfiguration
当该属性从False变成True时,自动打印出控件的配置参数
* OPC数据采集控件方法
方法名称
方法属性
Refresh()
该方法用来强制更新当前数据
WriteOPCItemValue(ByVal ItemID As Long, ByVal Value As Variant)
该方法用来将编号为ItemID的数据项数值改写为Value,并返回该数据项的名称
PrintItem()
该方法用来打印控件的配置参数
* OPC数据采集控件事件
事件名称
事件描述
ItemIDChanged(ByVal ItemID As Long)
当改变OPCItemID属性时,触发该事件。
DataChange(ByVal NumItems As Long, ItemIDs() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
当数据项集合中的一个或多个数据项取值发生变化时,触发该事件
OneDataChange(ItemID As Long, ItemValue As Variant, Quality As Long, TimeStamp As Date)
当数据项集合中的一个数据项取值发生变化时,触发该事件
OPCServerShutdown()
当OPC服务由于某种原因关闭时,触发该事件
3.2 OPC服务器冗余技术
在工控软件开发中,一项最为重要的技术就是冗余技术,优秀的软、硬件冗余技术是系统长期稳定工作的保障。目前流行的工控软件也都具有冗余功能。OPC标准的制定为软件冗余提出了新的思路,我们可以通过OPC技术更加方便的实现软件冗余。在实践应用中,我们开发了OPC冗余服务器,解决了对任何厂商的OPC服务器冗余问题。图 3是OPC冗余技术的结构图。
OPC客户应用程序可以是任何符合OPC标准的客户端应用,如用户自己编写的采集监控程序或其他软件厂商开发的符合OPC标准的HMI、SCADA应用。OPC冗余服务器通过主/备份OPC服务器采集数据,同时通过标准的OPC接口为客户端应用提供数据信息。因此,OPC冗余服务器既是OPC服务器的客户端应用,同时又是符合OPC标准的服务器程序。由于OPC冗余服务器采用OPC标准,具有开放性和可互操作性,可以和任何符合OPC标准的软件无缝集成,真正作到了即插即用。OPC冗余服务器可以根据用户配置的检测时间定时检测OP