基于Delphi7.0环境下的OPC客户端程序的开发

扫码手机浏览

关键词:摘要:本文介绍了有关OPC的基本知识,给出了编写OPC客户端程序的一般方法。作者还给出了一个实例,用Delphi7.0编写了一个OPC客户程序,对北京亚控科技有限公司的KingView6.5OPC Server进行访问。摘要:本文介绍了有关OPC的基本知识,给出了编写OPC客户端程序的一般方法。作者还给出了一个实例,用Delphi7.0编写了一个OP...
  • 关键词:
  • 摘要:本文介绍了有关OPC的基本知识 ,给出了编写OPC客户端程序的一般方法 。作者还给出了一个实例 ,用Delphi7.0编写了一个OPC客户程序,对北京亚控科技有限公司的KingView6.5OPC Server进行访问 。

摘要:本文介绍了有关OPC的基本知识,给出了编写OPC客户端程序的一般方法。作者还给出了一个实例 ,用Delphi7.0编写了一个OPC客户程序,对北京亚控科技有限公司的KingView6.5
OPC Server进行访问。
关键词:OPC服务器,OPC客户端 ,Delphi7.0Based on Delphi7.0 Development of OPC Client Program
zhangsheng
(Machinery Technology Development Co.,LTD)
Abstract: The paper introduces some base knowledge about OPC and gives a general method to develop client program of OPC. By application of Delphi7.0, It introduces how to develop OPC client program to access KingView6.5’ OPC Server of Beijing Yakong Company Ltd..
Key Words :OPC Server, OPC Client, Delphi7.0
1.前言  
OPC是OLE for Process Control的缩写,即把OLE应用于工业控制领域 。OLE的原意是对象链接和嵌入,随着OLE2的发行 ,其范围已远远超出了这个概念。现在的OLE包容了新的特征,如统一数据传输、结构化存储和自动化,已经独立于计算机语言 、操作系统甚至硬件平台的一种规范 ,是面向对象程序设计概念的进一步推广。OPC建立在OLE规范之上,它为工业控制领域提供了一种标准的数据访问机制 。
工业控制领域用到大量的现场设备,在OPC出现之前 ,软件开发商需要开发大量的驱动程序来连接这些设备。即使硬件供应商在硬件上做了一些小小的改动 ,应用程序就可能需要重写;同时,由于不同设备甚至同一设备不同单元的驱动程序也可能不同,软件开发商很难同时对这些设备进行访问以优化操作。硬件供应商也在尝试解决这个问题 ,然而由于不同客户有着不同的需要,同时也存在着不同的数据传输协议,因此也一直没有完整的解决方案 。
自OPC出现之后 ,这个问题终于得到解决。OPC规范包括OPC服务器和OPC客户两个部分,其实质是在硬件供应商和软件开发商之间建立了一套完整的“规范 ”,只要遵循这套规则 ,数据交互对两者来说都是透明的,硬件供应商无须考虑应用程序的多种需求和传输协议,软件开发商也无须了解硬件的实质和操作过程。
2.OPC适用范围和基本概念
2.1.OPC适用范围
OPC的设计者们最终的目标是在工业领域建立了一套数据传输规范 ,并为之制定了一系列的发展计划 。现有的OPC规范涉及如下领域:
(1)在线数据监测。实现了应用程序和工业控制设备之间高效 、灵活的数据读写。
(2)报警和事件处理 。提供了OPC服务器发生异常时,以及OPC服务器设定事件到来时向OPC客户发送通知的一种机制 。
(3)历史数据访问。实现了读取、操作、编辑历史数据库的方法。
(4)远程数据访问 。借助Microsoft的DCOM技术,OPC实现了高性能的远程数据访问能力。
(5)安全性 、批处理、历史报警事件数据访问等。
2.2. OPC基本概念
本系统使用的OPC服务器为北京亚控科技有限公司的KingView6.5 OPC Server 。对数据项设定好为具体设备的物理地址。如下图所示:



OPC服务器由三类对象组成:服务器(Server)、组(Group) 、数据项(Item)。服务器对象(Server)拥有服务器的所有信息 ,同时也是组对象(Group)的容器 。组对象(Group)拥有本组的所有信息 ,同时包容并逻辑组织OPC数据项(Item)。在这里数据项(Item)就是指所有的信号的输入与输出。
OPC组对象(Group)提供了客户组织数据的一种方法 。客户可对之进行读写,还可以设置客户端的数据更新速率。当服务器缓冲区内的数据发生改变时,OPC将向客户发出通知 ,客户得到通知后再进行必要的处理。而无须浪费大量的时间进行查询 。OPC规范定义了两种组对象:公共组和局部组(私有组) 。公共组由多个客户共有,局部组只隶属于一个OPC客户。一般来说,客户和服务器的一对连接只需要定义一个组对象。
在每个组对象中 ,客户可以加入多个OPC数据项(Item) 。OPC数据项(Item)是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的,通过OPC数据项(Item) ,OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC数据项(Item)并不提供对外接口,客户不能直接对之进行操作 ,所有的操作都是通过组对象进行的 。每个OPC数据项(Item)的数据结构包括三个成员变量:即数据值、数据质量和时间戳。数据值是以Variant形式表示的。
3.OPC体系结构
OPC规范提供了两套接口方案,即COM接口和自动化 。COM接口效率高,通过该接口 ,客户能够发挥OPC服务器的最佳性能 ,采用C++语言的客户一般用COM接口方案;自动化接口使用解释性和宏语言访问OPC服务器,采用Delphi语言的客户一般采用自动化接口。自动化接口使解释性和宏语言编写客户应用程序变得简单。我们给出的客户端应用程序的应用实例就是用Delphi7.0编写的 。典型的OPC体系如下图所视:


4.客户端监控程序开发一般步骤
4.1 OPC的连接
先在程序中 ”Import Type Library”的将OPC Automation 2.0加入,然后开始定义全局变量。在本程序中 ,我使用了一个OPC组进行OPC访问,所有OPC数据项通过这个OPC组来访问物理设备对应地址的数据。首先定义了OPC组与OPC数据项 。注意数据项的值一定要以Variant形式表示 。在定义所有变量后,下面进行OPC的连接。
主要程序如下:
Begin
Servers := Server.GetOPCServers("192.168.2.19");
Server.Connect (sServerName); \\连接OPC服务器
Server.OPCGroups.DefaultGroupUpdateRate = 500\\设定组的刷新速率
Group = Server.OPCGroups.Add("KingView.View.1")
End;
4.2 OPC的数据项读写
对OPC的写可以有同步与异步之分,对于大量的数据传输 ,异步是更佳的选择,但对少量的数据传输,同步表现得更好。要进行数据传输 ,先要将值数据进行赋值
读数据项主要程序如下:
Begin
TestItem:=Group.OPCIt.Item(1);
TestItem.Read;
//读OPC数据项(Item)并把值写到文本框做显示
Edit1.Text:=TestItem.Value;
TestItem.Read;
End;
写数据项主要程序如下:
Begin
TestItem:=Group.OPCItems.Item(1);
TestItem.Write(Edit1.Text)
End;
4.3 OPC连接断开
OPC客户端连接后要占用服务器资源,所以如果不需要使用OPC时,必须进行OPC连接断开 。断开的程序相当简单 ,释放资源即可。
断开连接的主要程序如下:
Server.OPCGroups.RemoveAll
Server.Disconnect
通过OPC技术,经过直接访问硬件供应商提供给的OPC服务器,从而达到访问硬件的数据。具体的OPC客户程序的界面如下:


4.结论
OPC的优越性是显而易见的:
(1).硬件供应商只须提供一套符合OPC Server规范的程序组 ,无须考虑工程人员需求 。
(2).软件开发商无须重写大量的设备驱动程序。
(3).工程人员在设备选型上有了更多的选择。
(4).OPC扩展了设备的概念 。只要符合OPC Server规范 ,OPC客户都可与之进行数据交互,而无须了解究竟是PLC还是仪表,甚至在数据库系统上建立了OPC规范 ,OPC客户也可与之方便地实现数据交互。参考文献
[1]. 北京亚控科技有限公司组态王使用说明书.
[2]. Steve Teixeira.Delphi开发人员指南.机械工业出版社.
[3]. 江义华.Delphi7完美经典.中国铁道出版社,2003.
[4]. 马国华.监控组态软件及其应用,清华大学出版社 ,2002



本文转载自互联网,如有侵权,联系删除