【VB开源代码栏目提醒】:网学会员在VB开源代码频道为大家收集整理了“OPC客户端程序的实现 - 期刊论文“提供大家参考,希望对大家有所帮助!
OPC 客户端程序的实现 宋洪俊 1 孙雅秀 2 (山东科技大学 信息科学与工程学院,青岛 266510)摘要:本文介绍了 OPC 技术的基本知识,给出了基于 OPC 自动化接口的客户端程序开发的实现方法。
实现了 Visual Basic 编写的一个 OPC 客户端程序与 OPCMaster OPC Server 之间的数据交互。
关键词:OPC;COM;DCOM OPC 数据访问服务器; Realization of Client Program Based on OPC Song Hongjun1 Sun Yaxiu2 College of Information Science and Engineering,Shandong University of Science and Technology,Qingdao 266510Abstract:The paper introduces some basic knowledge about OPCand gives a general method todevelop the client program based on OPC data access automation interface.It realizes the datainteraction between the OPC client program by using Visual Basic and the OPCMaster OPCServer.Key
words:OPCCOMDCOMOPC DA1 引言 计算机技术的飞速发展带动了工业自动化水平的提高,工控软件也取得了长足进步。
在以前的控制系统中,由于供应商提供不同的硬件设备,为了实现与现场设备数据信息的交互,应用软件开发商需要开发不同的驱动程序来连接这些不同的设备, 但外接设备种类繁多,且产品在不断的升级,给用户和软件开发者带来了繁重的
工作任务,一个专用的接口模块很难同时对不同设备进行访问,给系统维护带来了不便。
硬件供应商曾尝试解决这些问题,但不同的客户有不同的需求,而且数据传输时采用不同的协议,因此一直没有完整的解决
方案。
OPC 技术的出现很好的解决了上述
问题,它提供了一套标准的数据访问机制,在硬件供应商和软件开发商之间建立了一套完整的 , “规范” 只要硬件开发商提供实现 OPC 接口的服务器,任何支持 OPC 接口的客户程序均可采用统一的方式对不同硬件厂商提供的设备数据进行存取;除此之外,系统应用软件之间也可以灵活地进行信息交互。
2 OPC 技术概述2.1 OPC 基本概念 OPC(OLE for Process Control) ,即把 OLE 应用于工业控制领域,是一个工业标准,它的出现为基于 Windows 的应用程序和现场过程控制应用建立了桥梁。
基于微软的 OLE现在的 Active X、COM 部件对象模型和 DCOM 分布式部件对象模型技术,OPC 包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
COM(Component Object Model 组件对象模型是 Microsoft 创建并已取得广泛认可的一种组件标准。
是所有 OLE 机制的基础,在 OPC 技术中使用的是 OLE2 技术,OLE 标准允许多台微机之间交换
文档、图形等对象;COM 是一种为了实现与编程语言无关的对象而制定的标准,该标准将 Windows 下的对象定义为独立单元,可以不受程序限制地访问这些单元。
这种标准可以使两个应用程序通过对象化接口进行通讯,无需知道对方是怎样创建的;例如,用户可以使用 C语言创建一个 Windows 对象,它支持一个接口,通过该接口,用户可以访问该对象提供的各种功能,用户可以使用 C、Visual Basic、Pascal、Smalltalk 或其它语言编写对象访问程序。
DCOMMicrosoft Distributed Component Object Model 是 COM 这个组件技术的无缝升级,它支持不同的两台机器上的组件间的通信,而且不论它们是运行在局域网、广域网、还是 Internet 上,DCOM 将屏蔽底层网络协议的细节,只需要集中精力于应用,DCOM 使得组件的位置对客户来说完全透明,无论它是位于客户的同一进程中或是在地球的另一端。
在任何情况下,客户连接组件和调用组件的方法的方式都是一样的。
DCOM 不仅无需改变源码,而且无需重新编译程序。
一个简单的再配置动作就改变了组件之间相互连接的方式。
使用 DCOM,应用程序可以在位置上达到分布性,从而满足客户和应用的需求。
通过 DCOM 技术和 OPC 标准,完全可以创建一个开放的、可互操作的控制系统
软件。
2.2 OPC 体系结构 OPC 体系结构是服务器——客户端模式,具有良好的稳定性和扩展性促进了
代码的重用和基于组件的开发应用。
OPC 服务器是数据源,它提供与设备通讯的数据,数据源可以是PLC,DCS,条形码读取器等控制设备。
随控制
系统构成的不同,作为数据源的 OPC 服务器即可以是和 OPC 应用程序在同一台计算机上运行的本地 OPC 服务器, 也可以是在另外的
计算机上运行的远程 OPC 服务器。
OPC 服务器采用的是以 EXE 方式实现的 COM 组件,实际上就是一个典型的进程外 COM 组件,只不过 OPC 服务器的接口是有 OPC 标准组织规定的标准接口。
OPC客户端是数据的使用者,他们在应用中使用数据,但不需要了解数据的来源,可以是由 VC、
VB、Delphi 等
常用语言编写的应用程序。
OPC 服务器通常支持两种类型的访问接口, 它们分别为不同的编程语言环境提供访问机制。
这两种接口是: 自动化接口 ; (Automation interface) 自定义接口(Custom interface)。
自动化接口通常是为基于脚本编程语言而定义的标准接口, 可以使用 Visual Basic、
Delphi、PowerBuilder 等编程语言开发 OPC 服务器的客户应用,客户程序可以很容易地应用接口,而无需了解接口的详细内部机理; 可以运用事件触发机制; 可以生成一个通用的动态链接库或控件供所有客户端应用
程序使用; 程序的速度和效率上存在不足。
而自定义接口是专门为C等高级编程语言而制定的标准接口,OPC 项目没有对外的接口定义,所有对 OPC 项目的访问需经由包含或者定义它的 OPC 组别来完成, 也即 OPC 客户程序不允许将 OPC 项目作为一个类来访问,需要用到较深的 COM/DCOM 知识,开发难度大,但数据访问效率高、速度快往往能发挥 OPC 服务器的最佳性能。
VB 应用程序 Delphi 应用程序 OPC 自动化接口 OPC PowerBuilder 应用程序 服务器 物理 (本地 逻辑接口 设备 或远程) C应用程序 OPC 自定义接口 图 1 OPC 体系结构 OPC 数据访问服务器(OPC DA)从逻辑上分为:服务器(Server) 、组Group、数据项Item,服务器对象用于提供服务器所在的机器名、 指出特定的 OPC 服务器应用程序名及支持的接口,来维护相关服务器信息,并作为组对象的容器;组对象拥有本组的所有信息,存储由若干 Item 组成的 Group 信息并逻辑组织数据项;数据项对象表示服务器中连接的数据源,存储具体的 Item 的定义、数据值、状态值等信息,一个 Item 就代表一个具体的过程变量,不是标准的 COM 对象它不提供接口。
OPC 服务器 OPC 组对象 … OPC 组对象 数据项 … 数据项 数据项 … 数据项 图 2 OPC DA 关系图3 OPC 客户端程序的开发3.1 应用 OPC 组件 引用 OPCDAAuoto.DLL,在引用对话框中,将 OPC Automation 2.0 加入,这样就可以在对象浏览器中看到 OPC 的各种属性和方法,然后开始定义全局变量。
为了使对象能够相应并处理事件,必须将 objTestGroup 和 objServer 的声明中加上“WithEvents”语句 图 3 引用对话框3.2 连接 OPC 服务器和建立 OPC 组、OPC 项 对服务器进行访问前,必须先在 OPC 组里添加要访问的 OPC 标签。
OPC 客户端程序要按照用户指定的标签或者从组态文件里读取需要添加的 OPC 标签。
Sub ConnectstrProgID As String Optional strNode As String If objServer Is Nothing Then 建立一个 OPC 服务器对象 Set objServer New OPCServer End If If objServer.ServerState OPCDisconnected Then 连接 OPC 服务器 objServer.Connect strProgID strNode End If If objGroups Is Nothing Then 建立一个 OPC 组集合 Set objGroups objServer.OPCGroups End If If objTestGroup Is Nothing Then 添加一个 OPC 组 Set objTestGroup objGroups.AddGroup End If 建立 OPC 项集合 Set objItems objTestGroup.OPCItems 生成从 TAG1 到 TAG4 的项标识符 For j 1 To 4 strIIDsj Server.Group.TAG j CHandlesj j Next 添加 OPC 项 Call objItems.AddItems4 strIIDs CHandles SHandles ErrsEnd Sub3.3 数据读取 OPC 协议中提供了三种数据访问机制,同步读写、异步读写和订阅。
(1)同步读写: 是一种简单而又相当有效的方法不考虑最大效率, 在执行读写命令时,客户端一直处于等待状态,直到读取完成。
在客户数目较少且读取数据较少时,采用这种方式。
要实现同步读写,只需在添加完 OPC 项以后执行以下
代码即可。
objTestGroup.SyncRead nS 8 SHandles vtItemValues Errs For j 1 To 4 MsgBox vtItemValuesj 读取的数可以灵活确定。
Next j (2)异步读写:该方式实现较为复杂,在发出读写命令后,客户端程序返回继续执行后面的程序,当读写完成后,由 OPC 服务器调用回调函数将结果返回。
在客户端较多或数据量较大时采用,读写效率很高。
它把对 CPU 和
网络资源的使用减少到最小同时异步可以对数量较大的数据进行操作。
(3)订阅:订阅只能读取 OPC 服务器的数据而不能向 OPC 服务器写数据。
OPC 客户端不必向 OPC 服务器发送请求当订阅的数据项发生变化时服务器会自动通知客户端。
3.4 断开 OPC 服务器 OPC 客户应用程序连接上 OPC 服务器以后要占用服务器资源, 退出 OPC 客户端应用程序时,OPC 服务器并不知道 OPC 客户应用程序的退出。
如果不断开连接,那么 OPC 服务器使用的计算机资源就永远不会被释放。
这样的情况反复发生,就可能会使连续运转的自动控制系统因计算机资源渐渐枯竭而发生严重问题,解决的办法就是显式地把它设置为“Nothing”。
4 结论 OPC 技术规范正成为工控系统普遍采用的工业标准它的应用使应用软件与不同厂商的硬件之间建立了统一的接口, 为不同控制系统间, 及用户与系统间提供了灵活开放的数据访问通道,并把软硬件开发分离,软件开发人员在不需要深入了解硬件原理,只要符合 OPCServer 规范,OPC 客户都可与 OPC 数据服务器进行数据交互。
参考文献:李正,徐皑冬,石刚.OPC 技术及组态软件在远程监控和维护中的应用J.仪表技术与传感器,2006,5.范逸之.Visual Basic 与分布监控系统-RS232/485 串行
通信M.清华大学出版社2002.王德康,苏宏业.基于 OPC 技术的先进控制软件
设计与研究.化工自动化及仪表,2000,274:27 一 30