OPC服务器范文
OPC服务器范文(精选7篇)
OPC服务器 第1篇
关键词:OPC规范,OPC数据访问,COM,OPC服务器
0 引言
随着计算机和通信技术的发展,计算机在工业自动化领域中发挥着越来越重要的作用,各种工业智能仪器、仪表在工业自动化领域中的应用也越来越广泛。然而,由于大部分生产厂家生产的智能设备的通信协议互不相同,如果软件开发商对这些智能设备的驱动一一进行开发,其成本将十分高昂。因此,尽快建立一种软件之间的开放式通信标准,已经成为自动化技术领域里的当务之急。同时,自动化系统也越来越要求实现大范围的信息共享,因而对工业控制系统的开放性提出了更高的要求。正是在这些因素的强烈驱使下,一种新的技术———OPC(OLE forProcess Control)技术应运而生。
1 OPC规范概述
OPC规范是由一些世界上占领先地位的自动化系统软件、硬件公司与微软合作而建立的,满足开放性和互操作性的一种标准。它是基于微软的OLE/COM(Component Object Model)原理,采用C/S(客户/服务器)模式,为不同厂商的硬件设备、软件和系统定义了公共的接口,使得过程控制和工厂自动化中的不同系统、设备和软件之间能够相互连接、通信和操作。OPC规范虽然定义了COM接口,规定了服务器程序和客户程序通过接口交互的标准,但并没有具体规定实现的方法,OPC按照面向对象的方法将服务器程序作为对象封装起来,只将接口方法暴露给客户,客户采用统一的方法访问服务器,保证了服务器程序对客户的透明性。OPC规范的内容涵盖了数据存储、事件报警、安全性等许多方面,具体包括:数据访问规范、报警事件规范、历史数据存储规范、批量过程规范、安全性规范等。
2 OPC数据访问服务器的对象
OPC数据访问服务器的对象包括:OPC服务器对象(OPCOPCServer)、OPC组对象(OPCGroup)和OPC项对象(OPCItem)。OPC服务器对象用来提供关于服务器对象自身的相关信息,并且作为OPC组对象的容器,它还包含一个作为可选功能使用的OPC浏览器对象。OPC组对象用来提供关于组对象自身的相关信息,并提供组织和管理OPC项对象的机制。OPC组对象提供了OPC客户程序用来组织数据的一种方法。一个客户程序可以设置组对象的刷新频率、需要组织的项等。OPC规范定义了2种组对象:公共组和私有组。公共组由多个客户共享,局部组只隶属于一个OPC客户。全局组对所有连接在服务器的应用程序都有效,而私有组只能对建立它的Client有效。在一个Server中,可以有若干个组。OPC项对象代表了OPC服务器到数据源的一个物理连接。数据项是读写数据的最小逻辑单位。
3 OPC数据访问服务器的设计与实现
本文采用的是在delphi平台下使用prOpcKit(vcl类库)进行开发。Delphii开发基于窗口的应用程序比较方便,对COM的开发也非常理想,在delphi环境下使用第三方开源库propckit,不仅能使OPC数据访问服务器有一个比较友好的界面,而且还能实现强大的opc服务器功能,是在delphi环境下开发opc服务器的最佳选择。
3.1 OPC服务器的程序结构
OPC对象和接口模块负责读写服务器数据存储区中的数据,且是OPC服务器程序与客户程序进行交互的部分。数据存储区用来存放从硬件设备采集的数据,在客户程序需要时传递给客户程序,且存储工控软件送出的指令,必要时送给硬件设备执行指定的动作。硬件接口部分则是通过驱动程序采集硬件设备数据的部分,当硬件更换时只在此模块作相应的调整,其它模块相对独立,保持不变。(图2)
3.2 准备工作
首先从OPC网站上(http://www.opcconnect.com/delphi.php)下载OPC开发工具包(prOpcKit:an OPC Toolkit for Delphi)。在delphi中进行安装,我们就可以使用新建来创建Opc Server我们的opc server了(prOpcKit是基于delphi的一个第三方开源免费包,适用版本为d5-d2007,原来是用于商业opc开发,2010年以后开源免费)(图3)
3.3 OPC对象与接口的实现
OPC对象是OPC服务器程序与客户程序进行交互的部分,最基本的对象莫过于opcserver以及item对象:
3.3.1 生成opcserver对象:
3.3.1. 1 opcserver基本参数:
(1)Name。这个名称会作为服务器的类名称。这个名称在服务器的命名空间中将作为类的名称。
(2)Description。给服务器一个适当的描述,比如‘Simple demo using RTTI’。
(3)GUID。一般都是自动生成可作为服务器的唯一标识,也就是类标识。
(4)Vendor。一般填写你公司的名称。这些信息比如填写“‘Production Robots Engineering Ltd”。
(5)Version。版本号,比如说1。
(6)Generate Items with RTTI。生成项目使用运行时态库。
3.3.1. 2 Opc server类的声明:
在delphi中生成opcserver类模块既可以通过向导生成,也可以直接手写代码生成代码如下(注意看黑体部分)(图4):
3.3.2 OPC项对象的实现
在opc服务器中最基本的元素就是项,每个服务器都会提供若干项,给客户端提供一些基本的信息和功能。
3.3.2. 1 项的基本参数:
(1)Item Handl。当客户端需要连接到一个项时,服务器提供一个32位的句柄给客户端,客户通过这个句柄访问这个项目,这种方式比访问项名更加有效,项句柄可以理解为项的身份标识。
(2)Data type。每个项都有个自己的数据类型客户端可能以其他的数据类型访问他,但是多数时候用项自身的数据类型。用delphi语言描述的话每个项可能的有如下这些数据类型:
(3)Access Rights。访问项的权限,一般有:可读、可写、或者可读可写项。
3.3.2. 2 项的声明
每个项目在opc server的类中都是以属性形式存在的,一般都是定义成published类型的属性,在delphi中属性的声明如下:
以上定义了4个item,对opc server类来说也就是4个属性,并声明了他们的读写方法。客户端对项的读写,实际上是通过项自身的读写方法实现的。以上4个项解释如下:TickCount表示系统开机时间,类型为整形,只读属性,读方法为GetTickCount;TimeOfDay表示当前时间,字符串类型吗,只读属性,读方法为GetTimeOfDay;FormWidth表示主窗体(服务器中我们新建的窗体名称为:MainForm,单元名称为:MainUnit)的宽度,类型为整型,可读可写,读方法为GetFormWidth,写方法为SetFormWidth;FormHeight表示主窗体的高度,类型为整型,可读可写,读方法为GetFormHeight,写方法为SetFormHeight。
3.3.2. 3 项读写方法的具体实现
项的具体实现,主要是将项相关的读写方法进一步完善。上面的4个项的读写方法如下:
这一块其实也可以称之为opc的数据存储区,这是OPC服务器程序中的重要部分,其中存放着数据项,opc服务器通常都是和硬件产品相连接的,本文中没有涉及到硬件,主要只讲了opc封装的原理。而对硬件产品的关联也都是在读写方法中,通过对硬件的接口读写完成的,而对相关接口如何读写,这与产品接口有关,本文在这里不做叙述。
3.4 注册/卸载服务器
Opc服务器编写完成后,它其实是一个com组件,这样的组件是需要注册才能使用的,在window中注册一个com组件是通过/regserver命令来完成的,反之卸载服务器是通过‘/unregserve r来完成的。注册服务器操作大致为,使用cmd,在windows的命令行敲入:服务器路径名称/regserver;卸载操作为:服务器路径名称/unregserver。
3.5 OPC服务器的测试
在实现了OPC服务器之后,测试服务器的互操作性是非常重要的。测试的方法很多,可以用自己编写的客户程序进行测试,也可以通过第三方软件如opc explorer来检测opc运行情况,如图5显示。
3.6 用户界面的设计
设计良好的用户界面能够增加软件的亲和度,设计我们的用户界面用户可以对服务器进行操作,主要功能有:(1)注册/卸载服务器————把服务器的注册信息写进系统注册表或从系统注册表中把服务器的注册信息删除。(2)关闭服务器—————服务器停止运行。(图6)
4 结束语
OPC数据访问服务器的开发相当繁琐,需要得到微软COM技术的支持。因此,对OPC数据访问服务器的开发人员而言,熟悉COM的编程机制和OPC的具体规范,了解计算机过程控制的一些基本理论及其所涉及的各种参数,熟练运用能有效支持COM接口程序的计算机语言是十分重要的。本文提供的在delphi利用prOpcKit开发和设计OPC数据服务器的方法,对于OPC服务器开发人员具有一定的借鉴意义。
本文的创新点:在delphi开发平台下利用prOpcKit设计和实现OPC数据访问服务器的各个部分,使得开发的服务器具有友好的界面,开发也比较方便。
参考文献
[1]OPC Foundation.OPC data access custom interface specification version3.0[EB/OL].
[2]朱耀春,陆会明等,OPC数据服务器的开发与测试(I),现代电力,2003.6.
[3]OPCFoundation.OPC Data Aeeess Custom Interfaee Standard Version2.05A,June28,2002.
[4]OPCFoundation.OPCData Aeeess Custom Interfaee Standard Version3.00,Mareh4,2003.
[5]OPCFoundation.OPCOvervier.Version1.0,1998-10-27.
[6]潘爱民.COM原理与应用[M].北京:清华大学出版社,1999.
[7]Corry,Mayfield,Cadman.COM/DCOM编程指南[M].北京:清华大学出版社,2000.
OPC服务器 第2篇
在工控领域,采用传统方式开发的监控软件缺乏统一的工业标准,致使不同厂家提供的软硬件在相互通信过程中存在很大困难。近年来,OPC技术的应用逐渐推广,使得该技术成为工控领域新的通信标准。OPC技术包含一系列工业接口规范,解决了应用软件和各种硬件设备相互通信的问题, 使应用软件和硬件开发商得以分离。
KingView(组态王)是用于对自动化设备和生产过程进行实时监控的组态软件。该软件包含大量的图形工具,使用户无需编程,通过“搭积木”的方式即可对报警、活动记录、事件和历史趋势等进行组态,构建一个集成的应用系统。此外,组态王全面支持OPC标准,使不同应用程序之间无缝异构连接成为可能,解决了各个厂商开发的硬件和应用软件之间无法相互通信的问题。
组态王既可以作为OPC客户端,也可以作为OPC服务器来使用。当组态王作为OPC服务器使用时,通常需要购买客户端软件,增加了系统设计成本[1]。考虑到组态王提供了用户与组态王OPC服务器连接的函数接口,用户可利用动态连接库KingViewCliend.dll,采用VC++、VB等语言自行编写组态王的OPC客户端程序,通过组态王的OPC接口来访问组态王数据库中的数据变量,实现信息交互。
VC++是一个基于Windows操作系统的可视化集成开发环境,支持面向对象的设计方法,可以使用功能强大的MFC(微软基础类库)。采用VC++开发的软件具有稳定性好、可移植性强、软硬件相分离的特点[2]。因此,笔者采用VC++6.0编写客户端程序,实现了对KingView的OPC服务器的访问。
1 OPC技术原理和通信结构
1.1 OPC技术原理
OPC是基于COM/DCOM的一项技术规范,它为现场设备和应用软件之间提供了开放、统一的标准通信接口。OPC技术采用Client/Server数s据访问模式,将数据采集端视为OPC Server,将所有访问OPC Server的工作站(包括应用程序和系统软件)视为OPC Client。OPC Server封装了针对具体硬件设备的数据通信逻辑,提供标准的OPC接口供客户访问,从而实现软硬件的隔离。Client/Server访问模式的基本思想:每个硬件供应商为其设备开发一个通用的数据接口(即OPC Server),供其它系统读写信息,客户端应用软件(OPC Client)只需遵循OPC数据接口协议,就能够从不同的硬件供应商提供的OPC数据服务器中取得数据,不必关心底层硬件内部的具体细节[3]。
1.2 OPC数据通信的逻辑结构
OPC Server数据通信逻辑主要由服务器(Server)、组(Group)、数据项(Item)[4] 三类对象组成。服务器对象包含服务器的全部信息,同时也是组对象的容器。组对象拥有本组的全部信息,同时包容OPC数据项并将其组织起来,形成一个自上而下的数据访问逻辑路径。客户可以在一个服务器中加入多个组对象,在一个组对象中加入多个OPC数据项。OPC服务器可以由安装在本机的客户端访问直接访问,也可作为一个远程工作站,通过Internet和工业以太网由其它客户端访问。其通信逻辑构成如图1所示。
2 OPC客户端设计
OPC客户端采用VC++6.0平台开发,主界面主要包括常用工具栏和菜单、数据管理窗口、数据浏览窗口、信息窗口4个部分组成。常用工具栏和菜单是在MFC单文档工程默认生成的框架基础上,添加消息响应得到的,完成了OPC编程客户端和服务器的连接和断开、OPC Group和OPC Item的添加和设置的功能;数据管理窗口显示了OPC数据的逻辑组织关系,也可以添加和编辑OPC Group 和OPC Item;数据浏览窗口作为OPC客户端的数据显示区,主要显示OPC Item的名称、数据类型和值,用户也可以在数据浏览窗口为OPC Item写入新值,以此改变OPC Server(本文指组态王)的数据值;信息窗口显示了OPC编程客户端与外界OPC Server或应用程序通信的细节。
3 OPC客户端软件开发过程
3.1 客户端编程流程
在VC++平台上编写OPC客户端软件的一般流程包括服务器的连接、变量组的初始化以及数据项的读写操作,如图2所示。
3.2 客户端编程实现
在VC++环境下编写OPC客户端程序的详细步骤如下。
(1) 在VC++环境下建立MFC单文档工程,工程名为MyOPCClient。
(2) 打开MyOPCClient工程所在的文件夹,将opcda.h、opccomn.h、opcerrors.h、opcprops.h、opcquality.h及opcda_i.c、opccomn_i.c 文件全部添加到工程所在的文件夹下,编辑Stdafx.h文件,添加标准库头文件[5]。
(3) 定义变量,初始化COM 库。利用函数CoInitialize(NULL)完成该功能,当函数返回值为S_ OK时说明初始化成功[6]。程序代码为
HRESULT r1;
r1 = CoInitialize( NULL) ;
if ( r1 ! = S _OK)
{AfxMessageBox( “COM 初始化出错” ) ;}
else
{AfxMessageBox( “COM 已经初始化” ) ;
Return;}
(4) 连接OPC服务器。OPC客户端与服务器连接之前,必须要指定一个OPC服务器,然后建立OPC Group和OPC Item,这是OPC的访问机制。编写客户端程序时,如果B/S模式是在一台计算机上实现,就不需要指定计算机名,如果不在同一台计算机上实现,则需要指定计算机名。此外,本文使用组态王服务器功能,所以指定OPC服务器名为KingView.View(组态王的OPC服务器标志)。程序代码为
r1 = CLSIDFromProgID (L“OPC Server. KingView.View”,& CLSID);
if ( r1 ! = S _OK)
{CoUninitialize( );
return;}
r1 = CoCreateInstance(CLSID, NULL, CLSCTX_LOCAL_SERVER ,IID _IOPCServer, ( void* * )&m _IOPCServer) ;
if ( r1 ! = S _OK)
{m _IOPCServer = NULL;
CoUninitialize( );
Return;}
(5) 创建OPC组对象。调用IOPCServer接口的AddGroup()方法可以创建一个OPC 组对象,通过设置参数可以为其指定名称和属性。程序代码为
r1 = m _ IOPCServer->AddGroup( L“实验group1”,TRUE,500,1,
& TimeBias,
& PercentDeadband,
LOCALE _ID,
&m _GrpSrvHandle,
& RevisedUpdateRate,
IID_ IOPCItemMgt,
(LPUNKNOWN*)&m_IOPCItemMgt);
(6) 创建OPC数据项对象。调用IOPCItemMgt接口的AddItems()方法可以添加数据项对象,通过改变AddItems()的参数可以改变数据项的属性和数量。程序代码为
r1=m_IOPCItemMgt->AddItems( Count,m _items,&m _ ItemResult,&m _pErrors)
(7) 完成OPC服务器连接、创建了OPC组和数据项对象后, OPC 客户端和OPC 服务器(组态王)即可进行数据的读写交互操作。OPC服务器和客户端数据的交互有同步和异步2种方式[3]。本文选用同步方式调用同步接口IOPCSyncIO 的Write()和Read()函数进行数据的读写操作,程序代码为
r1=m_IOPCItemMgt-> QueryInterface(IID_IOPCSyncIO, ( void** )&m _ IOPC SyncIO) ;
r1 = m _ IOPCSyncIO - > Read( OPC _DS _CACHE, Count, phServer,& pItemValue, & p_Errors) ;
r1 = m _ IOPCSyncIO - > Write ( Count, phServer, values,&pErrors);
(8) 在退出VC++应用程序运行环境时,断开与OPC服务器的连接,必须调用Release()函数释放接口指针,删除已经创建的数据项对象、组对象[6]。程序代码为
void CMyOPCClientView::OnStop( ) ;停止服务器。
r1=m_IOPCItemMgt->RemoveItems(1 ,phServer ,&pErrors);删除Items。
r1=m_IOPCServer->RemoveGroup(m_GrpSrvHandle ,TRUE);删除Group。
m_IOPCServer->Release( );释放OPC Server。
m_IOPCServer=NULL;
CoUninitialize( );关闭COM 库。
4 访问组态王OPC服务器的实现
将组态王作为OPC服务器,利用组态王提供的仿真PLC设备模拟实际设备提供数据,设置如下:
(1) 首先启动组态王开发系统,在资源管理窗口的设备下定义PLC仿真设备OPC通信1、OPC通信2、OPC通信3,以采集模拟数据,在数据词典中定义I/O变量Item0、Item1、Item2,PLC仿真设备连接时分别选择OPC通信1、OPC通信2、OPC通信3,然后新建OPC通信实验画面,在画面中添加输出文本框、报警控件,显示组态王Item0、Item1、Item2的值。
(2) 启动组态王运行系统和上述MyOPCClient客户端,点击界面菜单中的Edit菜单项,选择new server connect选项,在弹出的连接服务器选项的画面中,选择组态王的OPC服务器标志(KingView.View)完成客户端与服务器的连接。
(3) 在上述MyOPCClient客户端数据管理窗口中右击KingView.View(OPC Server),选择new group,或者选择菜单项tools添加OPC Group和OPC Item,建立OPC Group,命名为“实验group1”,并将所要显示的组态王变量Item0、Item1、Item2添加到数据浏览窗口中。
(4) 当OPC客户端加入组态王的变量后,便可按照选定的数据通信方式,同步或异步采集组态王的数据量。图3为组态王OPC通信实验画面的报警窗口,图4为客户端数据浏览窗口。可看出OPC编程客户端的变量值Item0、Item1、Item2的变化与组态王OPC服务器Item0、Item1、Item2的值完全一致,实现了VC++6.0编程客户端和组态王 OPC服务器的数据访问和交互。
5 结语
在VC环境下开发使用定制接口访问数据的OPC客户程序的方法以组态王为服务器,实现了VC++6.0编程客户端对组态王OPC服务器的访问,并取得了良好的效果。
参考文献
[1]汪玉凤,王鑫.基于组态王网络OPC的数据监控系统[J].仪表技术与传感器,2010(8):52-53,92.
[2]王育坚.Visual C++面向对象编程教程[M].北京:清华大学出版社,2003.
[3]石林锁,王涛,刘顺波.基于OPC规范的客户应用程序实现[J].微计算机信息,2003,19(5):68-71.
[4]王绪彪,张望,江丹玲.基于VB的OPC客户端软件的设计与实现[J].自动化与仪器仪表,2011(2):46-49.
[5]何海江.OPC客户端关键技术的实现[J].微计算机信息,2003(7):76-78.
基于OPC的楼宇监控技术的研究 第3篇
关键词:智能楼宇,系统集成,OPC技术
1 引言
在OPC技术应用于集成系统监控平台之前, 传统的集成系统中, 各个设备厂商的硬件设备之间以及各硬件设备与监控平台中的应用软件之间的信息共享是通过驱动程序来完成的。控制软件开发商要构造一个完整的监控平台往往需要针对不同的应用软件开发大量的驱动程序。OPC技术标准的制定, 使得所有的设备之间以及设备与监控平台中的应用软件之间的通信有了统一的规则。
由于所有OPC服务器接口的标准都是统一的, 因此OPC客户端应用程序能够用一种标准的方法实现对所有设备供应商提供的OPC服务器程序的访问。用户能够直接从OPC服务器读取到来自现场设备的数据, 而不需要另行开发通信程序。也就是说, 只要OPC客户端应用程序开发成功并能够使用, 就能够被用于带有OPC服务器的监控系统中。这样一来, OPC技术的引入就大大简化了监控系统的复杂性, 使用户可以独立开发OPC客户端应用程序而不必购买比较昂贵的商业组态软件。
2 项目介绍
下面以上海由由喜来登酒店系统集成软件开发项目为例详细阐述。为了实现数据共享, 以及在统一的界面对所有的子系统进行监控管理, 必须提取所有子系统需要的数据。系统通过运行在各子系统监控分机上的服务器程序采集各个子系统的数据, 加以整理后存入数据库, 同时提供监控系统。整个酒店的各个子系统共设置有1016个监控点 (其中AI点294个, DI点268个, AO点216个, DO点238个) , 监控对象主要包括空调子系统的送/回风机运行状态 (DI) 、手/自动状态 (DI) 、开/关控制 (DO) 、送风温度 (AI) 、送风湿度 (AI) 等, 给排水子系统的给排水泵运行状态 (DI) 、手/自动转换状态 (DI) 、开/关控制 (DO) 、给排水水流开关状态 (DI) 等, 照明子系统的楼层/事故照明的电源开关控制 (DO) 、电源运行状态/故障 (DI) 、电源手/自动状态 (DI) 等, 以及供配电子系统、新风机监控子系统、冷热源子系统等各子系统的数据。大楼内各子系统设备主要选择江森和霍尼韦尔的楼控产品, 主要采用OPC数据通信协议对办公大楼内的各个子系统进行集成, 并对各子系统设备的运行状态进行监测和控制, 采集并配置相关参数。整个大楼的集成网络结构如图1所示。
整个大楼的集成系统主要分为三个层次, 即管理层、控制层和设备层, 各层有着彼此不同的特点。
(1) 管理层
管理层主要是位于大楼中央监控室的监控计算机, 采用以太网进行通信, 并且能够与其他监控分机进行互联, 实现管理层上的集成。
(2) 控制层
控制层主要是运行于各监控分机中的OPC服务器程序。由于OPC服务器封装了各子系统设备的驱动程序, 因此服务器可以向下对现场设备进行数据采集, 并将采集到的数据转换为统一的OPC数据传输格式, 通过OPC接口向上传送给位于监控主机中的OPC客户端应用程序。
(3) 设备层
由于霍尼韦尔、江森等大型自动化设备厂商往往会提供OPC服务器以便进行系统集成, 因此该项目主要采用霍尼韦尔和江森公司提供的自动化设备, 包括空调子系统、新风机监控子系统、给排水系统、供配电子系统的大部分设备。没有附带OPC服务器的设备, 将由控制软件开发商为之开发OPC服务器。由于Lon Works使用开放式的, 面向对象的总线网络协议Lon Talk, 可靠性和实时性较高, 因此底层的现场设备采用Lon Works总线网络进行互联。
(4) OPC客户端和服务器
OPC客户端运行于中央监控计算机中, 负责采集并显示现场设备运行的实时数据, 管理人员通过OPC客户端对现场设备进行数据访问操作。客户端与服务器进行连接, 通过OPC服务器实现与现场设备的通信, 从而实现整个系统的数据通信, 最终达到管理和控制的目的, 实现系统集成。
3 监控平台软件体系结构
整个上位机监控系统包括三个模块, 即集成平台管理软件模块、数据通信模块、数据库模块, 三个模块既各自独立又相互联系。整个监控系统软件体系结构如图2所示。
在监控系统软件体系中, 集成平台管理软件模块主要用于实现模拟现场设备运行情况的界面显示、报警通知和报表打印等功能。
数据通信模块也就是OPC客户端应用程序, 它作为整个上位机监控系统的数据通信模块, 与OPC服务器进行连接, 通过OPC服务器与现场设备进行数据交互, 采集现场设备的运行参数。在监控点比较多的情况下, OPC服务器程序和OPC客户端程序一般运行在不同的计算机上, 通过DCOM配置实现远程的数据交互。OPC服务器将采集到的数据通过标准的OPC接口传送给位于上位机监控系统中OPC客户端应用程序, OPC客户端应用程序读取并显示采集到的各个设备的运行参数以供管理人员进行分析和使用。管理人员可以通过OPC客户端应用程序直接对设备运行参数进行配置, 以实现对现场设备的监测和控制, 实现对整个系统的集中监控和统一管理。
数据库模块在整个监控系统中也非常重要, 它负责存储由OPC客户端采集到的现场设备的数据信息, 并为集成平台管理软件提供接口, 使集成平台管理软件能够通过该接口共享数据库信息。由此, 在集成平台管理软件中既能显示模拟现场设备的运行状况, 又能显示现场设备的各类数据信息。我们采用ADO方式来实现对数据库的访问。ADO不仅支持关系型数据库, 也支持非关系型数据库, 它封装了ODBC和OLE DB的功能, 执行效率和可扩展性能都优于ODBC, 并且能够用统一的方法来访问不同的数据类型。
将OPC技术应用于整个大楼的系统集成当中, 不仅能够实现各个子系统之间的互联和互操作。而且能够实现在一个统一的集成管理平台上对大楼内所有的现场设备进行控制和管理, 这为未来进一步实现智能建筑一体化系统集成奠定了良好的基础。
4 系统客户端的开发
编写OPC客户端应用程序是通过接口调用OPC服务器的功能, 对楼宇自动化系统中的现场设备进行数据访问操作, 完成对数据的配置, 从而为监控系统提供实时数据, 以达到对系统中现场设备运行状态的实时监测。在整个OPC客户端应用程序的设计过程中, 有两个部分是最重要的, 一个部分是OPC数据读取模块的设计, 另一个部分是OPC数据保存模块的设计。两个部分的信息交互采用多线程技术来完成。我们将数据读取模块作为工作线程 (它对现场设备的数据读取工作主要在后台完成) , 将数据保存模块作为主线程。工作线程会定时读取服务器数据缓冲区中的数据, 当数据发生变化时, 作为主线程的数据保存模块就会将变化的数据保存至数据库。OPC数据读取模块主要实现与OPC服务器的数据交互, 也就是定时读取来自服务器的实时数据;也可以完成对服务器数据的写入操作。数据保存模块可以通过ADO的数据访问方式来访问OPC数据采集模块建立的数据库。
这里提到的接口功能实现主要由服务器来完成, OPC客户端应用程序就是需要通过接口函数来调用服务器接口提供的功能。当然, 函数的编写必须符合OPC数据访问规范标准。具体的OPC客户端应用程序连接和断开OPC服务器的实现流程如图3所示。
5 服务器端的设计
OPC服务器的功能主要是通过封装在其内部的设备驱动程序实现对现场设备的数据访问, 然后通过统一的OPC接口将数据传递给OPC客户端。因此, 需要按照OPC数据访问规范的要求完成OPC服务器的结构、数据传输机制和接口功能的设计与实现。在OPC服务器的结构设计中, 服务器的数据采集功能主要参考OPC数据访问规范2.0版本来实现。根据OPC数据访问规范中有关服务器的描述, OPC服务器的结构应如图4所示。
整个服务器的设计主要包括两个部分, 一个是与客户端进行通信的OPC标准接口类的设计, 另一个是对现场设备进行数据采集的硬件通信模块部分的设计。标准接口类部分的设计目标主要是按照OPC数据访问规范的要求, 分别实现各内部组件对象 (主要包括OPC Server对象和OPC group对象) 的接口功能, 以及实现将从现场设备中采集到的数据与接口类中的Item相关联, 转换为统一的数据格式传递给OPC客户端应用程序的功能。硬件通信模块的设计目标主要是根据设备支持的通信协议完成I/O动态链接库的设计, 并实现通过调用动态链接库中的API函数进行与现场设备的数据交互的功能。
OPC服务器的工作流程如图5所示。
6 OPC客户端的测试
集成平台管理软件主要采用自行开发的BMS监控软件, 通过BMS监控软件来监控并显示空调系统设备的运行状态。监控软件空调系统的界面如图6所示。
图6显示了大楼内空调系统中空调机组的配置情况, 点击进入空调机组可以看到每一空调机的具体运行状况, 如图7所示。
从图7中我们可以看到, 空调机组运行状况界面包括空调机组的5个运行参数, 即故障报警、空调机手/自动设置、空调机运行/停止控制选择、送风温度以及送风湿度。这5个参数的读取和配置由监控系统中的OPC客户端应用程序来完成, BMS监控软件共享OPC客户端应用程序的系统数据库。OPC客户端应用程序对空调系统设备OPC服务器进行数据访问操作的主界面如图8所示。
从图8中可以看出, OPC客户端应用程序首先与空调系统设备的OPC服务器进行连接, 然后添加组;在与服务器连接之后, 就可以读取到来自服务器的空调机设备参数 (即故障报警、手/自动设置、运行/停止控制选择、送风湿度、送风温度) 。
通过以上OPC客户端应用程序在实际的工程项目中的测试可以看出, 本课题设计的OPC客户端应用程序能够成功地运用到大楼内上位机监控系统中, 满足通过服务器对现场设备的数据访问操作的要求。OPC客户端应用程序设计的目的不只是为了读取一个设备的数据值, 而是要实现对整个建筑内所有现场设备的数据访问操作。只要设备厂商提供了其子系统设备的OPC服务器, 并将其通过网络进行互联, OPC客户端应用程序就能够通过多线程的方式同时对大楼内所有的OPC服务器进行连接, 在同一界面环境下对现场设备进行数据读取和配置。这样就使得管理人员在需要对多个设备进行数据访问时, 不必同时操作多个界面, 从而节省了系统资源。由于OPC客户端和OPC服务器的接口标准是统一的, 所以即使现场的硬件设备进行了升级或完全改变, 也只需要替换该设备相应的OPC服务器或更新服务器内部封装的设备驱动程序, 而不需要对客户端程序作很多改动, 只要在程序中更换一个相应的Prog ID即可。所以说OPC客户程序的代码重用率是相当高的。
7 结束语
随着自动化技术、网络技术的快速发展, OPC技术规范也在不断地发展和创新, 它所拥有的强大应用潜力已经在许多领域得到了展示。随着Web服务的广泛应用, 在楼宇自动化领域, 基于Web服务的自动化设备在远程监控、维护、管理等方面的需求越来越迫切。将OPC XML技术应用于楼宇自动化系统集成, 更能提高各种应用系统在异构平台上基于Internet技术的互联能力和互操作性。同时, 由于其采用软件方式, 在实现控制系统和信息系统的无缝连接的同时更易于实现功能的扩展, 使得系统更加开放, 势必将成为未来楼宇自动化系统集成的又一种高效的方法。
参考文献
[1]王再英, 韩养社等.楼宇自动化系统原理与应用[M].北京:电子工业出版社, 2006.45~49
[2]邢建春, 王平等.工业控制软件互操作标准OPC综述[J].工业控制计算机, 2006, 13 (1) :29~32
[3]苗雷, 冯济缨.基于现场总线的OPC接口技术的研究[J].贵州工业大学学报, 2004, 6:30~32
[4]刘快.基于OPC技术的实时控制系统研究与应用[J].浙江大学学报, 2004, 6:15~17
[5]周江建, 周运森.中间件OPC技术在工业控制系统中的应用[J].计算机工程, 2004, 23:23~25
[6]孟逢逢.冗余OPC数据采集系统的设计与实现[J].计算机应用, 2009, 1:13~15
利用OPC功能实现装置间数据共享 第4篇
阳煤集团淄博齐鲁第一化肥有限公司主要有尿素与辛醇两种最终产品, 配套装置有造气、净化、PSA、合成氨、合成压缩、普利森、尿素压缩、尿素主装置、辛醇压缩、辛醇主装置等。现造气装置由浙江中控ECS100系统的四对控制器控制, 净化、合成氨和辛醇二期PSA两装置由横河CS3000系统两对控制器控制, 尿素PSA及辛醇一期PSA两装置由浙江中控ECS100系统的两对控制器控制, 普利森由浙江中控ECS100系统的一对控制器控制, 辛醇压缩由浙江中控ECS100系统的一对控制器控制, 辛醇主装置由横河CS3000系统两对控制器控制, 这9套装置因生产需要皆有大量数据须实现共享。在2011年度检修期间, Honeywell TDC3000需进行更新改造, 原先的共享模式需打破, 利用OPC功能很好地解决了该问题。
1 原系统构成及共享方式
原造气、净化、PSA、普利森、辛醇压缩皆由浙江中控ECS100系统控制, 它们间的数据共享由ECS100系统控制器间通过消息传送来实现, 合成氨、合成压缩、尿素主装置、辛醇主装置与它们的数据共享通过系统间的硬点连接实现。
浙江中控ECS100系统将五套装置的控制器在SCnet II网络层通过光纤进行互连, 形成互为冗余的两条网络, 如图1所示 (以造气与净化两装置为例) 。
异型系统间因共享数据量较少靠硬点连接实现数据交换, 如Honeywell TDC3000系统将要传出的模拟量做量程处理后送一模拟输出点, 数据由该模拟输出点送出, 在浙江中控ECS100系统做一量程相同的模拟输入点将其接收。
浙江中控ECS100系统在发送端取数据组成消息, 发送消息;接收端接收消息将消息, 并分解后将不同类型的数据赋值给相应类型的变量。发送消息、接收消息、程序分别如图2、图3所示。
2 现系统构成及共享方式
因Honeywell TDC3000系统已到报废期且故障率明显增高, 利用2011年度检修将其更新为横河CS3000系统, 用于控制净化、合成氨及新上辛醇二期PSA装置。造气/净化两装置原先皆由浙江中控ECS100系统实现控制, 大量的数据共享靠同系统控制器间消息传送实现;现属异型系统间数据共享, 且数据量较多, 靠原先的硬点连接方式既浪费系统资源, 又带来两系统逻辑共地问题, 为系统的可靠运行埋下隐患。为此, 采用OPC功能来实现异型间数据的通信, 达到共享的目的。
具体方案:造气、尿素PSA、普利森、辛醇一期PSA、辛醇压缩五装置皆为浙江中控ECS100系统控制, 故保持原共享方式 (控制器间消息传送) , 而其与净化、合成氨及辛醇二期PSA的数据共享 (即与横河CS3000系统的通信) 由OPC功能实现。
将造气与普利森需外送数据通过原通信方式集中到普利森装置控制器上, 在该系统操作站上安装中控OPC服务器软件包将数据开放, 并将自主开发的OPC客户端安装于本地, 通过该客户端将共享数据写入横河CS3000系统对应控制器实现每台操作站皆能监视。而净化、合成氨及辛醇二期PSA需外送的数据 (在横河CS3000系统上) 由横河操作站上的OPC服务器将数据开放, 再由造气装置ECS100系统操作站通过二次计算点 (取OPC数据形成) 显示。辛醇主装置与净化、合成氨及辛醇二期PSA的数据共享靠安装在辛醇主装置横河CS3000系统操作站上的OPC客户端实现, 客户端连接的两端操作站上都必须安装横河OPC服务器软件包将数据开放。
3 系统数据共享的实现
3.1 OPC客户端
在普利森装置ECS100系统操作站及辛醇主装置CS3000系统操作站上安装的OPC客户端采用Dephi语言开发, 所连接服务器名、变量都写入一配置文件, 该配置文件可通过文本编辑器编辑, 以便于日后根据工艺要求改变作调整。OPC客户端界面如图4所示。
造气装置ECS100系统操作站上二次计算点建立时调用其内嵌的OPC客户端, 如图5所示。
3.2 OPC服务器
(1) OPC服务器软件需单独安装, 安装完后需单独启动, 且软件需要指定组态文件路径用作配置文件, 在数据读写过程中OPC服务器软件不能退出。参数设置界面如图6所示。
OPC服务器 第5篇
锅炉是高温、高压的热能设备, 关系人民生命财产安全和社会健康稳定发展, 是国家重点监管的特种设备。随着锅炉数量的快速增长, 锅炉监管工作面临着更多的压力和责任。
为提高特种设备的安全监管水平, 及时掌握特种设备运行状况, 有效落实企业主体责任, 山东省质量技术监督局信息中心研制开发了“特种设备 (锅炉) 运行远程监控信息系统”, 其主要根据锅炉控制系统的结构和锅炉实时运行数据远程传输技术的要求, 研究锅炉实时数据采集方案、远程无线传输方案、实时数据监控主站集成方案, 实现锅炉运行实时数据远程传送, 达到对在用锅炉进行远程监控运行状况、实时监控关键参数的目的。该项目现已开发完成并进行试点。
2 技术基础
2.1 锅炉控制系统
目前锅炉控制系统一般采用DCS (集散控制系统) 或PLC (可编程控制器) 加上位机, 上位机普遍采用工控机, 上位机操作系统一般为Windows操作系统, 监控软件为组态软件或PLC厂家提供的监控软件如WinCC等[1], 数据平台大多为SQL数据库。控制系统内部采用网络技术, 控制系统与控制系统之间网络连接组成更大的系统, 整个控制系统与企业的管理系统也采用网络连接, 以上为锅炉运行数据通过互联网实现远程传送提供了基本条件。
2.2 OPC数据采集
OPC (OLE for Process Control) 的出现为基于Windows的应用程序和现场过程控制应用搭建了桥梁。OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化、使其间的数据交换更加简单化而提出的。在企业的信息集成中, 包括现场设备与监控系统之间、监控系统内部各组件之间、监控系统与企业管理系统之间以及监控系统与因特网之间的信息集成, OPC作为连接件, 按一套标准的COM对象、方法和属性, 提供了方便的信息流通和交换[2], OPC是整个企业网络的数据接口规范。本系统所开发的OPC采集程序, 无论是PLC还是DCS, 或者是FCS (现场总线控制系统) , 都可以通过OPC快速可靠地彼此交换信息, 只要它们提供了OPC支持, 所有的数据交换都通过OPC接口进行, 而不论连接的控制系统或设备由哪个具体厂商提供。
2.3 GPRS DTU数据传输
通用分组无线业务 (GPRS) 利用GSM网络中未使用的TDMA信道, 提供中速的数据传递。GPRS突破了GSM网只能提供电路交换的思维方式, 只通过增加相应的功能实体和对现有的基站系统进行部分改造来实现分组交换[3]。数据传输单元 (Data Transfer unit, DTU) 是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据, 通过无线通信网络进行传送的无线终端设备。GPRS DTU上电后, 首先读出内部FLASH中保存的工作参数 (包括GPRS拨号参数、串口波特率、数据中心IP地址等, 事先已经配置好) 。GPRS DTU登陆GSM网络, 然后进行GPRS PPP拨号。拨号成功后, GPRS DTU将获得一个由移动随机分配的内部IP地址。
3 基于OPC技术的远程监控系统方案
3.1 软件实现方法
本系统中OPC技术采用C/S结构, 数据存储服务器由3类对象组成:服务器 (Server) :用于指出特定的OPC服务器应用程序名;组对象 (Group) :组织并存储由若干数据项组成的Group信息;数据项 (Item) :存储具体的Item的名字、数据值、品质等信息, 一个Item代表一个具体的过程变量。
可以将数据传输程序嵌入在锅炉控制系统上位机软件中, 也可以独立设置传输软件, 使上位机只与锅炉控制系统上位机的组态软件或其他监控软件的实时数据库交换和读取实时数据。由于OPC技术是以COM技术为基础, 同时需要直接与底层硬件打交道, 本系统在VC++环境中使用定制接口开发OPC客户端程序。下边是程序实现的关键步骤:OPC Client通过与OPC Server的连接, 从而获取现场设备的数据项, 通过这些数据项的操作, 进而实现对锅炉的组态进行监控等功能, 如图1所示;OPC Client与OPC Server的断开如图2所示。
3.2 无线传输方案
在锅炉运行远程监控信息系统中使用GPRS DTU作为数据的传输通道, 在具体实施中, DTU作为数据终端和锅炉控制系统上位机通过RS232/RS485接口相连, 把数据输出给DTU, DTU则把收到的数据通过GPRS网络发送给中国移动的GPRS网络, 之后数据到达中国移动的机房, 通过机房中的设备数据被传送到因特网, 然后通过因特网数据到达山东省质监局数据中心。
在本系统中, GPRS DTU通过数据中心的IP地址 (如果是采用中心域名的话, 先通过中心域名解析出中心IP地址) 以及端口号等参数, 向山东省质监局数据中心发起TCP或UDP通信请求, 在得到中心的响应后, GPRS DTU即认为与中心握手成功, 然后就保持这个通信连接一直存在, 如果通信连接中断, GPRS DTU将立即重新与中心握手。对于DTU来说, 只要建立了与数据中心的双向通信, 完成用户串口数据与GPRS网络数据包的转换就相对简单了。一旦接收到用户的串口数据, DTU就立即把串口数据封装在一个TCP/UDP包里, 发送给数据中心。
3.3 数据传输协议
按锅炉实时运行数据远程传输技术要求, 将实时数据库读取的数据整合后传输。数据是由锅炉控制系统单向传输到数据中心, 不对锅炉控制系统下传数据, 而且数据传输完全由传输软件控制, 系统不会受到病毒或黑客袭击, 锅炉系统是安全的。
3.4 数据监控平台
系统采用基于JavaEE技术的多层体系结构[4], 如图3所示, 主要包括数据层、业务逻辑层和表示层。
数据层:由数据库系统组成, 可以支持ORACLE、MS SQLSERVER、SYBASE、DB2等, 本项目采用ORACLE系统, 主要处理数据操作和存储过程;
业务逻辑层:由一系列处理业务逻辑的类库组成, 运行在符合JavaEE规范的应用服务器之上, 本系统采用Apache Tomcat;
表示层:使用JSP、Html、Vml等技术完成界面展示和与用户的交互, 用JavaScript做一些逻辑处理;
客户端主要使用IE浏览器系统进行业务处理[5]。
4 结语
整套系统安装完成后, 您可以在任何有互联网的地方, 登陆http://123.232.28.34:12320/Guolu/, 进入“山东省特种设备 (锅炉) 运行远程实时监控信息平台”, 输入用户名和密码进行登录, 进入界面如图4所示, 选择任意一台锅炉打开后进入界面, 您将可以查看: (a) 锅炉基本信息; (b) 锅炉实时运行参数; (c) 锅炉各运行参数历史曲线; (d) 锅炉用能分析等。
山东省特种设备 (锅炉) 运行远程实时监控信息系统可以实现以下功能: (a) 特种设备监管部门可以通过互联网实时浏览, 全面实时掌握锅炉的安全运行状况, 为特种设备 (锅炉) 运行数据的集中管理和综合分析提供强有力的技术支撑; (b) 锅炉生产厂家实时监控锅炉运行情况并对历史数据进行曲线、报表、分析等数据挖掘, 优化锅炉设计, 同时可为使用单位 (客户) 提供远程的、专业的专家支持, 提高售后服务质量; (c) 锅炉使用单位对在用锅炉的运行参数等实现数据实时采集、集中管理及远程实时监控, 有助于锅炉运行管理。本系统经过试用, 得到了用户的一致好评。
摘要:构建基于OPC技术锅炉远程实时监控系统, 利用OPC采集程序对在用锅炉的安全运行参数进行数据采集, 通过GPRS DTU通信终端无线传输至监控主站, 研发形成数据监控平台对锅炉进行远程监控, 全面实时掌握其运行状况。
关键词:OPC技术,锅炉,远程监控
参考文献
[1]宋超, 申飞, 沈春山.基于S7-300PLC与WinCC的DCS控制实验系统设计[J].自动化与仪表, 2009 (04) :11-14.
[2]郭红晓, 莫徳举.OPC技术及其软件的开发[J].北京化工大学学报, 2002 (03) :71-73.
[3]胡敦利, 李颖宏, 徐继宁.工业级GPRS数据终端的设计与实现[J].仪器仪表学报, 2005 (增刊08) :669-671.
[4]梁勇.Java语言程序设计[M].北京:机械工业出版社, 2011.
OPC服务器 第6篇
现代工业过程监控系统中大量使用着各个厂家的组态软件, 如WinCC、iFix、Intouch、组态王 (King View) 、力控、MCGS等[1]。这些组态软件的应用大大提高了工业控制的自动化程度, 同时也存在一些问题, 如在一个工厂中, 由于不同监控系统的生产厂家不同, 使得各组态软件之间的通信存在一定困难。虽然大品牌的组态软件都支持通用的硬件设备, 可直接与PLC等硬件设备通信, 但这需要改变系统的结构。为了不改变系统的结构, 可通过网络来共享数据, 这时就可以采用OPC (OLE for Process Control) 技术。
OPC建立在OLE规范之上, 为工业过程控制领域提供了一种标准的数据访问机制。在OPC出现以前, 工业过程控制领域用到大量的硬件设备, 软件开发商需要开发大量的驱动程序来连接这些设备。而OPC规范能在硬件供应商和软件开发商之间建立了一套完整的“规则”, 只要遵循这套规则, 数据交互对两者来说都是透明的, 硬件供应商无需考虑应用程序的多种需求和传输协议, 软件开发商也无需了解硬件的实质和操作过程。接口的任务由硬件生产厂家或第三方厂家完成, 以OPC的形式提供给用户, 解决了软、硬件厂商的矛盾, 完成了系统的集成, 提高了系统的开放性和可互操作性。OPC技术的实现包括2个组成部分:OPC服务器及OPC客户端。OPC服务器是一个现场数据源程序, 它收集现场设备数据信息, 通过标准的OPC接口传送给OPC客户端[1]。OPC客户端是一个数据接收程序, 如人机界面软件 (HMI) 、数据采集与处理软件 (SCADA) 等。OPC客户端通过OPC标准接口与OPC服务器通信, 获取OPC服务器的各种信息。符合OPC标准的客户端都可以访问来自任何生产厂商的OPC服务器程序。
本文中, 笔者利用OPC技术, 以在组态王与WinCC之间通过工业以太网进行数据传输为实例, 介绍OPC技术在组态软件之间的应用。
1 系统结构
将安装有King View的上位机作为OPC服务器, 安装有WinCC的上位机作为OPC客户端, 系统结构如图1所示。
2 King View端的配置
在本地上位机中安装有King View 6.52版软件, 作为系统的监控组态软件, 与下位机PLC系统通信, 完成数据的采集和控制功能, 实现整个控制系统的集中监控。同时为了满足集成自动化的需要, 上层的管理级要采集该监控系统的数据, 在保证不修改该监控系统硬件的情况下, 只对软件部分进行适当的修改便可实现数据的传输。这里利用King View的OPC功能, 其本身可以充当OPC服务器, 向其它符合OPC规范的控制系统提供数据。在King View中定义相关的变量, 并和采集数据的硬件连接;然后在充当客户端的其它应用程序中与King View运行系统建立连接, 并且添加数据项目, 便能实现数据通信和调用功能。在应用程序运行时, 客户端将按照指定的频率采集King View的数据。
King View作为OPC服务器的配置过程:在King View开发系统中, 首先建立King View为OPC Server, King View的OPC服务器名称为“KingView.View.1”;然后对充当OPC服务器的上位机进行DCOM程序的配置, Win 2000/Win NT/Windows XP及以上版本的操作系统自带DCOM配置程序, 在Windows“开始”菜单中选择“运行”, 在编辑框中输入“dcomcnfg”, 即可进入到“组建服务”对话框, 在目录树中依次打开“组件服务”-“计算机”-“我的电脑”-“DCOM配置”, 选择“我的电脑”属性, 打开“我的电脑属性”对话框, 在“COM安全”属性页中, 对“访问权限”和“启动和激活权限”进行设置, 添加“everyone”用户, 并将其权限分别设置为“允许访问”、“允许启动”和“完全激活”。
然后在“DCOM配置”列表中选中“opcEnum”, 单击“属性”按钮, 进入到“opcEnum属性”对话框, 在“安全性”属性页中选中并编辑“使用自定义访问权限”、“使用自定义启动权限”和“使用自定义配置权限”, 添加“everyone”用户, 并将其权限分别设置为“允许访问”、“允许调用”和“完全控制”[2];然后在“身份标识”属性页中选中“交互式用户”。
最后回到“DCOM配置”列表中, 选中kingview.view, 单击“属性”按钮进行属性配置。同样, 在“安全性”属性页中选中并编辑“使用自定义访问权限”、“使用自定义启动权限”和“使用自定义配置权限”, 添加“everyone”用户, 并将其权限分别设置为“允许访问”、“允许调用”和“完全控制”;然后在“身份标识”属性页中选中“交互式用户”。
服务器端定义完成后, 在“组建服务”对话框上单击“确定”按钮关闭对话框。进入King View运行系统, 此时King View即可作为OPC服务器。
3 WinCC端的设置
WinCC可以作为OPC服务器和OPC客户端, 在此处作为OPC客户端。WinCC OPC客户端可以访问多个OPC服务器, 计算机上WinCC项目作为WinCC OPC客户机使用, 对每个OPC服务器必须创建一个连接, 才能使得WinCC OPC客户端作为管理层的监控中心。
在WinCC OPC客户端上需要对WinCC项目进行组态:OPC通道的组态和用OPC条目管理器组态访问。在WinCC资源管理器的浏览窗口中, 单击“变量管理器”符号, 从“变量管理器”的弹出式菜单中选择“添加新的驱动程序”条目, 打开“添加新的驱动程序”对话框。选择“OPC.chn”驱动程序并单击“打开”按钮, 它将创建通道并在变量管理器中显示通信驱动程序。这样便完成了添加OPC通道到WinCC OPC客户端的WinCC项目中。
在WinCC OPC客户端上, 从“OPC组 (OPCHNUnit#1) ”通道单元的弹出式菜单选择“系统参数”条目, 打开“OPC条目管理器”。在OPC条目管理器的浏览窗口中单击想要访问的计算机名称, 即OPC服务器所在计算机的名称, 此时OPC条目管理器显示出该计算机的所有OPC服务器的ProgID。这里选择“KingView.View.1”, 即King View作为OPC服务器时的名称。在该步骤中, OPC服务器和OPC客户端所在的计算机必须已经在网络上连通。
然后在OPC客户端上建立变量, 在变量地址选择对话框中选择OPC服务器中的变量, 完成后变量添加到WinCC OPC客户端的WinCC项目中。在组态画面中组态变量显示框, 以显示实际的变量值。
此时若远程的King View OPC服务器已经启动, 则运行WinCC OPC客户端, 便可以看到变量的实时动态变化。
4 结语
介绍了利用OPC技术实现2种组态软件通信的方案设计及相关软件的设置步骤, 为其它组态软件之间的通信提供了一种模式。
参考文献
[1]张石, 高麟.控制系统组态软件的现状与发展[J].工业控制计算机, 1997 (5) :1-3, 7.
OPC服务器 第7篇
1 OPC技术概述
OPC是Object Linking and Embedding (OLE) for Process Control的缩写, 它是微软公司的对象链接和嵌入技术在过程控制方面的应用。OPC以OLE/COM/DCOM技术为基础, 采用客户/服务器模式, 为工业自动化软件面向对象的开发提供了统一的标准, 这个标准定义了应用Microsoft操作系统在基于PC的客户机之间交换自动化实时数据的方法。采用这项标准后, 硬件开发商将取代软件开发商为自己的硬件产品开发统一的OPC接口程序, 而软件开发者可免除开发驱动程序的工作, 充分发挥自己的特长, 把更多的精力投入到其核心产品的开发上。这样不但可避免开发的重复性, 也提高了系统的开放性和可互操作性。
2 西门子S7-200
SIMATIC S7-200系列PLC适用于各行各业, 各种场合中的检测、监测及控制的自动化。S7-200系列的强大功能使其无论在独立运行中, 或相连成网络皆能实现复杂控制功能。因此S7-200系列具有极高的性能/价格比。在集散自动化系统中充分发挥其强大功能。使用范围可覆盖从替代继电器的简单控制到更复杂的自动化控制。应用领域极为广泛, 覆盖所有与自动检测, 自动化控制有关的工业及民用领域, 包括各种机床、机械、电力设施、民用设施、环境保护设备等等。如:冲压机床, 磨床, 印刷机械, 橡胶化工机械, 中央空调, 电梯控制, 运动系统。
3 PC与S7-200通信
3.1 角色分配
正如前面提到的OPC技术是采用客户/服务器模式, 也就是C/S架构。因此在利用OPC技术作为PC和S7-200通信前, 必须要分配好客户端和服务器端的角色。根据OPC标准, 用于工业现场的下位机的硬件驱动由硬件厂商或专门的软件公司完成, 而这些驱动不是必须要提供给上位机的开发使用者, 取而代之的是提供有统一接口标准的OPC服务。因此上位机的开发者无需再为与下位机通信而去编写专门的驱动程序了, 只需按照OPC规范编写客户端程序访问服务器, 即可实现与硬件设备的通信。所以在OPC标准下, 下位机作为服务器端, 上位机作为客户端。在本次探讨当中显然PLC S7-200作为服务器端, 而PC机作为客户端。
3.2 构建通信框架
SIMATIC S7-200系列PLC, 虽然是性价比较高的PLC, 但是也存在不足之处, 比如其本身并不具备S7-300和S7-400可以提供OPC服务器的功能, 因此在通信前要先为S7-200搭建一个服务器。S7-200 PC Access软件, 它是西门子公司推出的专为连接S7-200系列PLC而开发的OPC服务器, 它从现场数据源PLC获取数据, 然后向标准的OPC客户端提供数据信息。如图1所示。
在需要OPC客户端的PC上安装PC ACCESS, 然后导入前面建立的S7-200符号表, 同时定义PC access到S7-200的通讯。这在PG/PC INTERFACE中完成。具体通过PPI, 或MPI, 或PROFIBUS, 或以太, 或MODEM均可以, 根据所用硬件定。也就是说OPC的服务器端和客户端都是在同一台PC上, 这和常见的C/S模式有所区别。OPC技术主要是为了解决通讯协议的复杂化, 而不是为了解决具体的通讯物理方式。所以根据上面的框架配置可以得出, 实际物理连接S7-200和PC之间并没有OPC, OPC的服务也不是在S7-200上的, 应该是PC上PC Access收集到S7-200上的信息, 并生成OPC服务供客户端访问。
3.3 OPC客户端程序开发
西门子既然提供了PC Access做为服务器, 自然也提供客户端软件如SIMATIC WinCC, 其是第一个使用最新的32位技术的过程监视系统, 具有良好的开放性和灵活性。如今, 已发展成为欧洲市场中的领导者, 乃至业界遵循的标准。如果你想使设备和机器最优化运行, 如果你想最大程度地提高工厂的可用性和生产效率, WinCC当是上乘之选。但本文探讨的方法不是使用WinCC进行监控, 而是使用自己开发的客户端程序。
OPC技术主要包含两种接口:CUSTOM标准接口和OLE自动化标准接口, CUSTOM接口是服务商必须提供, 而自动化接口是可选的。CUSTOM接口是一组COM接口, 主要用于C++应用程序开发, 利用MFC的COM库函数开发OPC客户端, 但要求开发人员对OPC规范和COM原理有比较深的了解。无疑这种方式的难度和工作量都比较大。而.Net框架是今后微软的发展趋势, 其中C#更是.Net的主推开发语言, 完全面向对象, 支持垃圾回收、声明特性、属性等等特点更是方面开发者使用, 缩短开发周期。本文就利用C#开发S7-200的OPC客户端应用。
S7-200 PC Access软件提供的服务器S7200.OPCServer是在COM平台开发的, 对于C#语言, 作为客户端程序语言访问OPCServer, 可使用OPC基金会提供的OpcRcw动态链接库, OPC NET COM包装器和OPC NET API所封装的C#类。
3.4 通信流程如下
1) 在项目中添加命名空间:using OpcRcw.Comn;using OpcRcw.Da;
2) 定义OPC相关变量。OPCServer对象、OPCGroup对象、Item句柄数组、OPCGroup句柄等;
3) 建立连接Type.GetTypeFromProgID ("S7200.OPCServer", "192.168.1.2") ;
4) 增加相应的组, 定义组的特性, 并输出组的句柄。ServerObj.AddGroup (...) ;
5) 利用Group对象下的IOPCItemMgt接口提供的AddItems () 方法实现项的添加。
AddGroup (Name, //组名
Active, //创建时, 组是否被激活
UpdateRate, //组的刷新频率, 以ms为单位
HandleClient, //客户号
biasTime, //这里不使用
percentDeadband,
LocaleID, //本地语言
out UpdateRate, //移去组时, 用到的组ID号
ref guidGrpTst, //返回组中的变量改变时的最短通知时间间隔
out objGroup) ;//指向要求的接口
6) OPC客户端与服务器数据交换。由IOPCSyncIO、IOPCAsyncIO2等接口实现, 分别为同步模式和异步模式。同步方式效率较低, 但实现起来简单, 适合少量数据量的交互;采用异步方式, 实现起来较复杂, 当大量客户或大量数据进行交互时, 异步方式效率高, 能够最大限度地节省系统资源。
7) 数据处理完毕, 必须关闭OPC客户端与OPC服务器之间的通信连接, 只要释放系统资源即可, 但与OPC服务器断开连接之前必须先释放组和服务器对象。
4 结束语
OPC技术是在OLE/COM技术的基础上发展起来的, 具有良好的语言无关性和高度的代码可重用性, 采用OPC设计实时监控系统, 具有高度的灵活性, 可大大缩短系统的开发周期, .Net作为微软的发展方向, 利用其首推的编程语言C#开发OPC客户端程序也是发展趋势, 而且也是一种行之有效的方法。本文通过C#成功实现了OPC客户端与西门子S7-200通信连接, 并将其应用到实际工程中, 较好地满足了实时、高效的要求。
参考文献
[1]史丽萍.OPC在煤矿监控信息集成中的应用[J].煤矿安全, 2010 (3) .
[2]DON BOX.COM本质论[M].潘爱民, 译.北京:中国电力出版社, 2001.
[3]西门子 (中国) 自动化与驱动集团.通过ETHERNET建立SIMATIC NET OPC服务器与PLC的S7连接[Z].北京:2005.
OPC服务器范文
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


