VC环境下的OPC客户端程序开发

合集下载

OPC实现VC应用程序

OPC实现VC应用程序
VC环境中使用定制接口开发OPC客户应用程序,下面是程序实现关键步骤。
4.1 包含OPC头文件
开发OPC客户应用程序,需要OPC接口外,还需要程序中包含OPC标准库文件,可以从OPC基金会网站(网址:)下载这些文件:
#include "opcda_i.c" OPC数据存取接口
ItemArray为OPCITEMDEF类型结构数组,它包含数据项详细信息,客户需要知道要进行交换数据RSView32标签数据库中名称、数据类型及作为OPC服务器RSView32项目名称。添加数据项之前,要用这些数据项信息对ItemArray结构数组进行初始化。
4.6 数据交换
成功增加完所需要数据项后,OPC客户(VC应用程序)和OPC服务器(RSView32)就可以进行数据交换了。数据量不大情况下,可以使用IOPCSyncIO同步接口Write()和Read()两个方法进行数据读写操作,实现OPC客户(VC应用程序)和OPC服务器(RSView32)之间数据交换。代码如下:
3 RSView32作为OPC服务器
西门子专门用于工业控制通用组态软件之一RSView32支持OPC技术,它可以用作一个OPC客户和外部OPC服务器软件通信,也可以作为一个OPC服务器和其它第三方支持OPC技术软件进行连接。本文中RSView32作为服务器,VC应用程序作为客户端,采用C/S模式实现两者之间数据交换。
#include "opcda.h" OPC数据存取2.0头文件
#include "opccomn_i.c" OPC公共接口定义
#include "opccomn.h" OPC公共头文件
4.2 初始化COM支持库

VB6.0开发WinCC的OPC客户机实例

VB6.0开发WinCC的OPC客户机实例

VB6.0开发WinCC的OPC客户机实例关键词:OPC VB6.0 WinCC上位机WinCC是西门子公司在自动化领域采用最先进的技术与微软公司在共同开发的居于世界领先地位的工控软件。

WinCC即WINDOWS CONTROL CENTER(视窗控制中心)。

WinCC 是一个功能强大的全面开放的监控系统,既可以用来完成小规模的简单的过程监控应用,也可以用来完成复杂的应用。

在任何情况下WinCC都可以生成漂亮而便捷的人机对话接口,使操作员能够清晰地管理和优化生产过程。

它集成的OPC(OLE for process control)服务器使得过程数据可由其它应用程序(OPC客户机)访问。

WinCC在安装时提供了OPC的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll), 在WINCC的帮助中,有Siemens OPC DAAutomation 2.0使用的简略帮助,但说得不很详细,我在使用VB6.0开发WinCC的OPC客户机中碰到不少问题,现一并写出来,与大家共享。

希望起到抛砖引玉,举一反三的作用。

一、开发实例背景:我厂包装机BE电气改造后,由原来了单片机、直流调试板、温度控制板等控制改为带有通讯端口PLC、变频器、温控仪等控制,上位机监控软件为WinCC。

在控制系统中,变频器、温控仪的控制信号通过串口、OPC客户机接入上位机WinCC,报警信号接入PLC。

其硬件组态结构如图一OPC开发要求:①通过WinCC建立内部变量Tag(1),Tag(2),Tag(3),Tag(4)……;在视图窗口建立相应了I/O输入输出域。

通过更改WinCC中I/O域的值,来设定或更改变频器、温控仪等的参数。

②通过VB开发了串口驱动程序,读取变频器、温控仪等的参数,通过OPC控件把值传递给WinCC中的I/O域。

二、VB6开发WinCC的OPC客户机具体步骤:1、打开VB6,建立如图二窗体:其中,文本框组Text4.text为写入WinCC内部变量名称;文本框组Text5.text为显示相应了WinCC内部变量值;文本框组Text8.text为写入期望了WinCC内部变量值。

基于Visual C#的OPC客户端实现

基于Visual C#的OPC客户端实现

基于VisualC#的OPC客户端实现作者:朱立军安娜陈未如来源:《现代电子技术》2009年第02期摘要:OPC是连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标准。

这里以C#为开发工具,按照OPC技术的规范标准,将OPC技术应用到虚拟仪器显示组件中。

具体实现了OPC客户端数据访问服务器的过程,接口步骤及其读写数据的方法,并根据OPC服务器提供的数据,最终在虚拟仪器显示组件中生成了虚拟的正弦波、方波、锯齿波、三角波等。

关键词:OPC;OPC接口;OPC服务器;C#中图分类号:TP311.5文献标识码:B文章编号:1004 373X(2009)02 171 03Implementation of OPC Client Based on Visual C#ZHU Lijun,AN Na,CHEN Weiru(Shenyang Institute of Chemical Technology,Shenyang,110042,China)Abstract:OPC is the software interface standard between data sources (OPC server) and data users (OPC application).Based on OPC technology standards, the virtual instrument is proposed and is applied to the virtual instrument display components by using C# language.The OPC client data access server process,the method of write and read data and interface steps are realized.According to the data provided by OPC server,finally,the waveform ofsine,square,sawtooth,triangle are generated in the display components of virtual instrument.Keywords:OPC;OPC iterface;OPC server;C#0 引言随着计算机技术和数字信号处理技术的发展,人们可以用计算机软件替代传统的硬件实现的一些功能,将计算机硬件和软件有机的融合为一体,这就是所谓的虚拟仪器。

VC环境下OPC客户端程序设计

VC环境下OPC客户端程序设计

(8)OPC连接断开,释放接口指针。当程序退出或停止服务器时,依次删除Item(RemoveItems)、Group(RemoveGroups),释放资源。 void CAsynOPCDlg::OnStop( ) 停止服务器。 h1=m_IOPCItemMgt->RemoveItems(1,phServer,&pErrors);删除Items。 h1=m_IOPCServer->RemoveGroup(m_GrpSrvHandle,TRUE);删除Group。 m_IOPCServer->Release( );释放服务器。 m_IOPCServer=NULL; CoUninitialize( );关闭COM库。 图4 OPC客户端程序 使用OPC技术之后,我们就可以通过OPC客户端直接访问由硬件供应商提供的OPC服务器,从而达到直接获取现场设备数据的目的。图4显示的即是基于VC开发的OPC客户端程序对OPC服务器KEPServer的访问界面,实现了OPC客户端与OPC服务器进行数据交互的功能,为开发其它功能更加完善的OPC客户端软件提供了基础。
(7)OPC的数据项读写。对OPC数据项的读写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。本程序采用异步访问方式,需要指向IOPCAsyncIO2指针。 h1=m_IOPCItemMgt->QueryInterface(IID_IOPCAsyncIO2,(void**)&m_IOPCAsyncIO2); void CAsynOPCDlg::OnRead ( ) 实现异步读数据。 h1=m_IOPCAsyncIO2->Read(1,phServer,1,&dwCancelID,&pErrors); delete[] phServer; void CAsynOPCDlg::OnWrite( ) 实现异步写数据。 h1=m_IOPCAsyncIO2->Write(1,phServer,values,2,&dwCancelID,&pErrors); delete[] phServer;

OPC服务器和客户端程序开发指南.doc

OPC服务器和客户端程序开发指南.doc

OPC服务器和客户端程序开发指南第一章OPC概述关键词:Comdcmopcda通信标准CLIENTSERVER GROUP ITEM自定义接口自动化接口同步异步回调随着计算机科学技术、工业控制等方面新技术的飞速发展,计算机监控系统从早期的集中式监控向全分布式方向发展,计算机监控系统软件随着面向对象技术的成熟,分布式对象计算、多级客户机/服务器技术也从早期的功能系统软件,发展成为以特定现场设备为特征的面向对象的监控系统软件。

与此同时,计算机监控系统的规模越来越大,不同厂家生产的现场设备种类也越来越多。

由于不同厂家提供的现场设备的通信机制不尽相同,需要由计算机监控系统软件开发的硬件设备通信驱动程序越来越多,导致硬件通信驱动程序需要不断开发的现象。

基于COM/DCOM技术的OPC技术提供了统一的通信标准,不同的厂商只要遵循OPC技术标准,就可以实现软硬件的互操作。

过程控制技术是专门为过程控制而设计的。

它是由一些世界领先的自动化系统和软硬件公司与微软公司密切合作建立的,并成立了一个专门的OPC 基金会来管理它。

OPC基金会负责OPC规范的制定和发布。

OPC提出了一套统一的标准,采用典型的客户机/服务器模式。

硬件设备的驱动程序由硬件制造商或专业公司完成,为服务器程序提供统一的OPC接口标准。

软件制造商只能通过根据OPC标准编写客户端程序来访问(读/写)服务器程序来实现与硬件设备的通信。

如图1.1所示,与传统的通信开发方法相比,OPC技术具有以下优点:硬件供应商熟悉他们自己的硬件设备,因此设备驱动程序更加可靠和高效。

软件制造商可以缩短复杂设备驱动程序的开发周期,只需要开发一套符合OPC标准的程序来实现与硬件设备的通信,这样就可以投入人力和物力来改善系统功能。

可以实现软件和硬件的互操作性。

OPC区分了软件和硬件制造商,大大提高了双方的工作效率。

图1.1应用前后的OPC技术对比因此,OPC技术的出现得到了众多软硬件制造商的支持,并且发展迅速。

(完整word版)OPCclient在VC环境下编程

(完整word版)OPCclient在VC环境下编程

OPC client 在VC环境下编程一.连接使用到变量的说明类型说明HRESULT 函数返回值,用来检测函数返回值(如:初始化COM库,查找CLSID,创建OPC服务等),提供函数执行情况CLSID 全球唯一标示符,用来确定OPC服务的标识,从注册表查找获得LPWSTR LPSTR和LPWSTR是Win32和VC++所使用的一种字符串数据类型.LPSTR被定义成是一个指向以NULL(‘\0')结尾的8位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的16位双字节字符数组指针OPC接口说明IOPCServer *m_IOPCServer;IOPCServer 接口及成员函数主要用于对组对象进行创建,删除,枚举和获取当前状态等操作.是OPC 服务器对象的主要接口.接口及成员IOPCItemMgt *m_IOPCItemMgt;IOPCItemMgt 接口及成员函数用于OPC 客户程序添加、删除和组对象中组员等控制操作。

IOPCSyncIO *m_IOPCSyncIO;IOPCSyncIO 用于同步数据访问。

OPCITEMDEF m_Items[1];OPCITEMDEF 数组,包含着项的存取路径, 定义和被请求的数据类OPCITEMRESULT *m_ItemResult;OPCITEMRESULT 数组,服务器用来告诉客户关于项的附加的信息(项句柄和规范的数据类型)OPCHANDLE m_GrpSrvHandle;OPC服务的句柄,在多个函数中都会用到使用到的函数说明CoInitialize(NULL); 初始化COM库CoInitialize是Windows提供的API函数,用来告诉Windows以单线程的方式创建com对象.应用程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。

返回值S_OK : 该线程中COM库初始化成功S_FALSE 该线程中COM库已经被初始化CoInit ialize () 标明以单线程方式创建。

使用C#开发OPC Client的研究和应用

1 OPC 和C#概述1.1OPC 概述OPC (OLE for Process Control)是一种利用微软的 C O M /D C O M 技术来达成自动化控制的协议,根据 OPC Specifica-tion 的定义,OPC is "a standard mecha-nism for communicating to numerous data sources, either devices on the factory floor, or a database in a control room."现代化企业中自动化程度越来越高,数据量也在成倍增长,为了能够充分利用这些数据,发展出了ER P/ME S等信息化系统,这些系统架构大体如图1。

OPC协议做为一种通讯转换协议,介于下层控制系统与上层软件之间;它隐藏下层系统的不同,为上层的数据应用提供一个统一的接口,使得上层软件在数据集成时,无需考虑下层控制系统的协议和实现方式,只要符合OP C客户端的接口规范即可,这大大节省了上层软件在数据集成方面的工作。

OPC发展至今已有1.0、2.0、3.0等几个版本,在目前工业自动化中以2.0使用最为广泛。

1.2C#概述C#(念法:C Sharp,音标[∫a:p])是微软公司在2000年6月发布的一种新的编程语言,并在微软职业开发者论坛(PDC)上登台亮相。

C #是微软公司研究员A n d e r s Hejlsberg的研究成果。

C#看起来与Java有着惊人的相似;但是C#与Java也有着明显的不同,它借鉴了De lph i的一个特点,与COM (组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。

C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言。

此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。

opc编程

C++6.0环境下的OPC通信设计及其在控制系统中的应用Posted by admin十一月 24, 2009随着计算机技术和控制技术的不断发展,现代工业过程控制系统逐渐发展成为现场设备管理,过程管理和商业管理三个层次组成的系统,然而它们之间却存在相互通信的问题,其主要问题是不同的计算机系统(DCS,MIS等)的接口不统一、不标准,过程控制系统和信息系统各有专用技术接口以及API(应用程序接口)。

尽管可以编写定制的驱动程序和接口程序,但因不同类型硬件及软件包都需相互通信,使得驱动程序的种类迅速地增长,并且连接程序开发没有一个统一、开放的标准,不同程序间易相互冲突。

这种情况不仅增加了用户的负担,而且在实际上并不能真正解决不同系统的互操作性【1~2】。

出于对上述问题的考虑,1996年8月,一个由自动化领域的领先公司组成的工作组在Microsoft公司帮助下提出了一个基于微软 OLE,COM,DCOM,XML,Internet及Net技术的开放的、灵活的、即插即用的工业标准OPC【3】。

2 OPC技术简介2.1 OPC背景OPC(OLE for Process Control)是基于Microsoft公司的Distributed internet Application(DNA)构架和Component Object Model(COM)技术,根据易扩展性而设计的。

OPC规范定义了一个工业标准接口,该标准使得COM技术适用与过程控制和制造自动化等应用领域。

OLE原意即对象链接与嵌入,而现在的OLE包含了许多新的特征,如统一数据传输、结构化存储和自动化,已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范。

PLC2.2 OPC接口结构OPC由两套接口组成:客户端和服务器程序员使用的OPC自定义接口(OPC COM Custom Interfaces);支持用高端商业应用开发的客户程序的OPC自动化接口(OPC OLE Automation Interfaces)。

VC OPC Client 核心代码

&dwRevUpdateRate, // [out] revised update rate
IID_IUnknown, // [in] REFIID riid,
(LPUNKNOWN*)&pUNKgroup); // [out, iid_is(riid)] LPUNKNOWN *pUNKgroup
hr= CLSIDFromProgID(wszProgID, // [in]
&clsid); // [out]
if(FAILED(hr))
{
CoTaskMemFree(&clsid); //COM 内存释放函数
CoUninitialize(); //终止COM库功能服务
if(pResults) CoTaskMemFree(pResults);
if(pIAsync2) pIAsync2->Release();
if(pISync) pISync->Release();
if(pIItemMgt) pIItemMgt->Release();
if(pOPC) pOPC->Release();
return 16; //获取clsid失败
}
//--------------------------------
//创建Server实例
hr=CoCreateInstance(clsid, //[in]
MultiByteToWideChar(CP_ACP, 0, mIOMDevice->ConfigMessage, -1, wchBuffer, 255);
//添加组
hr = pOPC->AddGroup (

基于Visual C的OPC客户端实现

《自动化技术与应用》2007年第26卷第4期计算机应用曼旦巴旦竺!皇!垒旦巳!!里璺塑旦旦璺基于VisualC++的OPC客户端实现纪强君,.唐秀昆z,曹长修3(1.重庆大学自动化学院,重庆400044;2.军事医学科学院,北京815200)摘要:OPC为工业现场设备通信提供了标准,本文通过介绍OPc技术的工作原理,结合OPc客户端的工作机制,简要介绍了OPc客户端程序的开发方法及用VisualC++实现的具体步骤。

关键词:OPC标准;0PC客户端;VisualC++中国分类号:TP33.7文献标识码:B文章编号:1003—724l(2007)04一0070—04OPCCIientDevelOpmentBaSedOnVISuaIC++JIQiang-_junl,TANGXiu-kun2,CAoChang-xiu3(1.ConegeofAutl湖撕on,ChongqingUIliVersity,Chongqing400044,Cllina;2.AcademyofIIlilita巧medicalscience,B蜘ing815200,C11ina)Abstract:0PCprovidesastandardformecommunicationsofindustrialfieldapparatus.Thispaperintroducestheprinciplesof0PC,andpresentstlledesignofaOPCclientbyusingⅥsualC++.KeyWords:0PCstandard;OPCclieIlt;ⅥsualC++1引言在传统控制系统中,各种过程控制方面的应用程序是通过驱动程序与现场设备进行数据交换的,这种方式存在着很多问题,例如:同一种设备为适应不同的应用程序可能需要有多种不同的驱动程序,不同驱动程序之间存在着不一致性,驱动程序对硬件存在着极大的依赖性等等。

为解决这些问题,一些技术上领先的自动化硬件和软件供应商与微软合作定义了一套统一的标准,这就是OPC标准。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC环境下的OPC客户端程序开发来源:中国论文下载中心 [ 08-07-30 15:41:00 ] 作者:赵健师奕兵编辑:studa0714Ads by Google曙光刀片服务器TC2600支持Intel® Xeon® 5000系列处理器高密度高能效易管理低成本OPC Grape Seed Extract Save 70% on our Premium Blend: Worldwide Shipping Quoted Upfront SapphireTrend Premier OPC Trending solution for realtime process control & analysis 摘要本文通过分析OPC 数据访问规范,介绍了有关OPC技术的基本概念、数据访问方式以及编写OPC客户端接口程序的一般方法。

同时给出了一个具体实例,用Visual C++编写了一个OPC客户端接口程序,并利用OPC服务器KEPServer对其进行测试,实现了OPC客户端与OPC服务器之间的数据交换。

关键词OPC服务器;OPC客户端;COM技术1 引言随着通信技术、计算机技术和自动化技术的快速发展,大范围信息共享的需求在自动化系统中显得越来越来越重要,现代工业控制系统已逐渐发展成为以现场设备层、过程控制层和中央管理层三个层次组成的系统,因而对其开放性也提出了更高的要求。

在传统的控制系统中,现场设备之间以及现场设备与控制软件之间的信息共享主要是通过驱动程序来实现的,不同厂家的设备使用不同的驱动程序,使得软件开发商不得不开发大量驱动程序来连接这些设备,即使设备厂家在硬件上做小小的改动,应用程序就可能重写,这也势必造成工业控制软硬件的升级与维护不便,给用户和软件开发商带来巨大的工作负担。

同时,由于不同设备的驱动程序也有所不同,使得不同的应用程序也不能同时访问同一设备的数据,因此,需要制定一种统一开放的接口标准,使应用程序能够方便的存取一台或多台现场设备的数据,为不同厂商的软硬件提供一种系统集成和数据交换的途径。

正是在自动化系统开放性要求的驱使下,促使了OPC技术的产生。

2 OPC技术简介OPC(OLE for Process Control)是基于微软公司的DNA(Distributed InterNet Application)构架和COM (Component Object Model)/DCOM(Distributed COM)技术,根据易扩展性而设计的,OPC规范定义了一个工业标准接口,这个标准使得COM技术适用于过程控制和制造自动化等应用领域。

OLE最初意思为对象链接与嵌入,是微软的复合文档技术。

随着后续版本OLE2中导入了COM技术之后,现在的OLE在原版的基础上增加了更多新的功能,包括结构化存储、统一数据传输和自动化等,它已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范,进一步推广了面向对象程序设计的概念。

OPC正是建立在OLE2规范之上,为工业控制领域提供了一种标准的数据访问机制。

2.1 OPC数据访问规范OPC规范是由世界主要的自动化设备制造商、OPC基金会和微软公司共同协商制定而成的,为不同厂商的设备和应用程序之间实现了接口标准化。

它把硬件供应商和软件开发商分离开来,在设备、数据库等数据源和客户之间架起了一座桥梁,为解决统一接口标准问题提供了解决方案。

这其中包括OPC数据访问规范(OPC DA)、OPC报警和事件规范(OPC AE)和OPC历史数据访问规范(OPC HDA)等,而OPC数据访问规范是最常用的规范之一。

通过对OPC数据访问规范的分析可知,在OPC数据访问规范中主要包括3类对象,分别是OPC Server、OPC Group和OPC Item。

OPC服务器对象维护有关服务器的信息并作为OPC组对象的包容器,能够动态地创建和释放组对象;OPC组对象除了维护有关自身的信息之外,还提供了包容OPC项的机制,从逻辑上管理OPC项。

它提供了客户组织数据的一种方法,客户可以对其进行读写,还可以设置客户端的数据更新速率。

当服务器缓冲区内的数据发生改变时,OPC 将向客户发出通知,客户得到通知后再进行必要处理,而无需浪费大量的时间进行查询;OPC项则表示了与OPC服务器的连接,它并不提供对外接口,客户端不能直接对其进行操作,而是通过组对象对其进行操作的。

图1表示了这3类对象的相互关系以及它们与OPC客户端程序之间的关系。

图1 OPC DA服务器对象与OPC DA客户端的对应关系2.2 OPC数据访问方式OPC客户端在对OPC服务器进行数据访问时,可以选择两种不同的访问方式,即同步访问方式和异步访问方式。

其中同步访问方式的实现相对简单,OPC服务器将OPC应用程序所要求得到的数据访问结果作为方法引数返回给OPC应用程序,此时OPC应用程序一直处于等待状态,直到结果被返回为止。

当客户数目较少并且与服务器交互的数据量也较少的时候可以采用同步访问方式。

与此相对,异步访问方式的实现较为复杂,OPC服务器接到OPC应用程序的要求后,立即将方法引数返回,OPC应用程序随后可以进行其它处理。

当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序,OPC应用程序在VC的事件处理程序中接收从OPC服务器传来的数据。

当有大量客户和大量数据交互时,异步访问方式的效率更高,能够避免客户数据请求的阻塞,从而最大限度的节省CPU和网络资源。

图2和图3分别表示了两种数据访问方式的处理过程。

图2 同步数据访问处理图3 异步数据访问处理3 VC环境下OPC客户端程序设计OPC客户端程序在设计时需要遵守OPC数据访问规范,实现规范所规定的全部必需接口。

同时,客户端模块需要有独立的设备连接界面和监控运行界面,并能够支持多服务器的连接。

下面详细介绍VC环境下的OPC客户端程序开发步骤,并给出关键源代码:(1)包含OPC头文件。

首先创建新的工程,编辑StdAfx.h文件,加载opcda.h、opccomn.h、opcerrors.h、opcprops.h、opcquality.h以及opcda_i.c、opccomn_i.c文件。

(2)初始化COM库。

由于OPC是基于COM技术制定的,所以在使用接口类之前必须首先使用CoInitialize(NULL)函数对COM库进行初始化,如果成功,函数返回值等于S_ OK。

HRESULT h1;h1=CoInitialize(NULL);if(h1!=S_OK)return(FAUSE);(3)通过OPC服务器的ProgID查询注册表中相关CLSID。

每个COM服务器都有一个字符串型的ProgID,通过ProgID可以得到全球惟一的CLSID,使用CLSIDFromProgID( )函数实现ProgID到CLSID的转换。

h1=CLSIDFromProgID(ProgID,&CLSID);(4)连接OPC服务器,查询对象的IID_IOPCServer接口。

在连接OPC服务器前,OPC客户端需要事先指定计算机名和OPC数据访问服务器名,建立连接后,创建OPC组并添加OPC数据项。

h1=CoCreateInstance(clsid,NULL,CLSCTX_ LOCAL_ SERVER,IID_IOPCServer,(void**)&m_OPCServer);(5)创建OPC组,查询IOPCItemMgt接口。

IOPCServer接口的AddGroup()方法可以创建一个有指定名称和属性的OPC组。

h1=m_IOPCServer->AddGroup(L,” ”,TRUE,800,111,&TimeBias,&PercentDeadBand,LOCAL_ID,& m_ GrpSrvHandle,&RevisedUpdateRate,IID_IOPCItemMgt,(LPUNKNOWN*)m_IOPCItemMgt);(6)添加OPC数据项。

使用IOPCItemMgt接口的AddItem()方法可以添加具有特殊属性的指定数量的数据项。

pOPCItemMgt->AddItems(ItemNumber,ItemArray,(OPCITEMRESULT**)&pItemResult,(HRESULT **) & pErrors);(7)OPC的数据项读写。

对OPC数据项的读写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。

本程序采用异步访问方式,需要指向IOPCAsyncIO2指针。

h1=m_IOPCItemMgt->QueryInterface(IID_IOPCAsyncIO2,(void**)&m_IOPCAsyncIO2);void CAsynOPCDlg::OnRead ( ) 实现异步读数据。

h1=m_IOPCAsyncIO2->Read(1,phServer,1,&dwCancelID,&pErrors);delete[] phServer;void CAsynOPCDlg::OnWrite( ) 实现异步写数据。

h1=m_IOPCAsyncIO2->Write(1,phServer,values,2,&dwCancelID,&pErrors);delete[] phServer;(8)OPC连接断开,释放接口指针。

当程序退出或停止服务器时,依次删除Item(RemoveItems)、Group(RemoveGroups),释放资源。

void CAsynOPCDlg::OnStop( ) 停止服务器。

h1=m_IOPCItemMgt->RemoveItems(1,phServer,&pErrors);删除Items。

h1=m_IOPCServer->RemoveGroup(m_GrpSrvHandle,TRUE);删除Group。

m_IOPCServer->Release( );释放服务器。

m_IOPCServer=NULL;CoUninitialize( );关闭COM库。

图4 OPC客户端程序使用OPC技术之后,我们就可以通过OPC客户端直接访问由硬件供应商提供的OPC服务器,从而达到直接获取现场设备数据的目的。

图4显示的即是基于VC开发的OPC客户端程序对OPC服务器KEPServer的访问界面,实现了OPC客户端与OPC服务器进行数据交互的功能,为开发其它功能更加完善的OPC客户端软件提供了基础。

相关文档
最新文档