当前位置:文档之家› 基于Visual C的OPC客户端实现

基于Visual C的OPC客户端实现

基于Visual C的OPC客户端实现
基于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—04

OPCCIientDevelOpmentBaSedOnVISuaIC++

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标准。本文简要介绍了基于OPC的数据存取标准,如何用VisualC++开发0PC客户端程序。

2OPC标准概述

OPC全称是OLEforProcessControl,直译为过程控制中的对象连接嵌入技术。0PC标准是根据Microsoft的OLE(现在Active)、COM(部件对象模型)和DCOM(分布式部件对象模型)技术所要求的功能,制定的一个开放和互用式的工控行业的软件接口标准【1l,在当今过程

收稿日期:2006—11一l4控制领域,是一种非常流行的数据交换技术,主要用来解决按照标准的方法完成软件或设备之间数据交换的问题。

0PC标准采用CLIENT/SERVER模式,规定了OPCServer与OPCClient之间遵循标准的接口。OPC服务端一般由控制设备的生产厂商,将硬件设备驱动程序和通信程序封装成独立的OPC服务器,负责向0PC客户端不断地提供数据。OPC客户端一般由使用设备的客户自己开发,可以不包含任何通讯接口程序,不必关心底层的硬件设备特性,也不必考虑软硬件如何通讯,只要遵循OPC数据接口协议,就能够从OPC服务器中取得数据,从而实现数据的灵活配置和多种系统的真正集成。由于0PC服务端与客户端之问的接口是标准的,因此可以开发出通用的OPC客户端,使不同的应用访问同一台设备或使同一个应用访问不同的设备[21。

0PC主要包括OPC数据存取标准、0PC报警和事件、OPC历史数据存取标准。OPC数据存取标准详细规定了客户程序和服务器程序进行数据通信的机制,其它类型的OPC服务器往往是在数据存取服务器的基础

计算机应用

《自动化技术与应用》2007年第26卷第4期

上通过增加对象、扩展接口而来的‘3I,所以该标准也是其它OPC标准的基础。

3OPC的结构和对象

OPC标准规定服务器支持两种类型的访问接口,它们分别为不同的编程语言环境提供访问机制。这两种接口是:自动化接口(Automationinte“ace);定制接口(Custominterface)。自动化接口是为基于脚本编程语言而定义的标准接口,可以使用VisualBasic、Delphi、PowerBuilder等编程语言开发OPC服务器的客户应用,实现方法简单,但速度慢,功能少。定制接口是专门为C++等高级编程语言而制定的标准接口,实现方法复杂,但速度快,效率较高,通过该接口能够发挥OPC服务器的最佳性能。…按照OPC标准,定制接口是服务商必须提供的,而自动化接口则是可选的,不过,OPC基金会提供了一个叫做“自动化包装器”的动态链接库,用于在两者问转换。典型的OPC体系结构如图l所示。

图l典型的OPC体系结构

根据OPC标准进行OPC客户端开发,就必须了解OPC服务器中的数据组织方式。OPC数据存取标准规定服务器由三类对象组成:服务器(SerVer)、组(Group)、数据项(Item)【3I。服务器对象用于指出特定的OPC服务器应用程序名,并向OPC客户端提供创建和操作OPC组对象的功能。组对象存储由若干Item组成的Group信息并逻辑组织数据项,一组可以作为一个单元被激活或失活。一组也可以提供一种方法允许客户“订阅(Subscription)”项目列表,以便在数据项变化时它能得到通知;数据项对象存储具体的Item的定义、数据值、状态值等信息,一个Item就代表一个具体的过程变量。每个数据项的数据结构包括三个成员变量:即数据值、数据质量和时间戳。数据值是以VARIANT形式表示的。通过定义数据项,OPC技术尽可能地隐藏了设备的特殊信息,也使0PC服务器的通用性大大增强。OPC数据存取服务器所定义的三个对象中只有两个标准的COM对象,即服务器和组对象。0PC数据项并不提供对外接口,客户不能直接对之进行操作,所有对数据项的操作都是通过组对象来进行。

4OPC客户端程序的设计方法客户端程序的设计主要是指客户程序中OPC接口部分的设计。客户程序本身可以完成很多复杂的数据处理与显示功能,但需要通过OPC接口部分访问OPC服务器,对现场数据进行存取【4J。一般来说,有三种方法编写这样的客户端程序:

(1)使用提供了自动化接口的OPC服务器,客户端可使用VB、Delphi等工具编程,编写方法同其它ActiveX控件没有差别。

(2)使用COM技术,在VisualC++环境中采用定制接口开发0PC客户端,直接实现各种接口功能。这种开发方式难度和工作量都大,要求开发人员对OPC标准和COM技术原理有比较深入的了解。

(3)使用第三方动态链接库或软件包开发客户端。目前,有很多公司研制出了第三方的OPC产品,可以快速开发出OPC客户端,当然购买这些软件包的价钱不菲。

其中方法三最简单,但成本高,由于软件包将接口的部分实现封装起来,某些特定功能会受到限制;方法二最复杂,但能够发挥OPC服务器的最佳性能;方法一介于两者之间。

OPC客户端应用程序要获取OPC服务器的数据,必须首先指定服务器应用程序所在的计算机名(服务器应用程序和客户应用程序不在同一台PC上)、OPC数据访问服务器名和该服务器提供的OPC项的定义。建立OPC连接后,客户应用程序一般可以通过三种方式从OPC服务器读取数据:使用同步接口10PCSyncIO,简单有效,适合于只读取少量数据的客户程序;使用接口IOPCCaⅡback的“订阅”功能OnDataChange,每当数据有变化时,服务器自动通知客户,这种方法稍复杂,但效率很高,且可以被IOPCAsyncl02::Refresh2触发;使用异步接口10PCASyncl02,可以直接与物理设备通讯,速度慢但数据精确度高【3|。具体的客户端程序开发过程如下图所示。

设计OPC客户端程序时需要注意OPC对象的VARAINT结构类型、引用计数问题、内存管理问题和处理错误返回代码问题。由于一个OPC客户程序可能与多个OPC服务器相连,因此设计时也最好采用多线程,同时与多个OPC服务器程序进行交换以保证较高的

《自动化技术与应用》2007年第26卷第4期通信效率。

计算机应用CompulerApp¨calions

图2OPC客户端程序的开发过程图

5OPC客户端程序的实现

由于OPC技术是以COM技术为基础,同时需要直接与底层硬件打交道,所以本文在VisualC++环境中使用定制接口开发OPC客户端程序。下面是程序实现的关键步骤:

5.1包含OPC头文件

开发OPC客户应用程序,除了需要0PC接口外,还需要在程序中包含OPC标准库文件[4|,可以从OPC基金会网站(网址:www.opcfoundation.org)下载这些文件:

#include”opcda—i.c”OPC数据存取接口#include”opcda.h”OPC数据存取2.0头文件#include”opccomn_i.c”OPC公共接口定义#include”opccomn.h’’0PC公共头文件5.2初始化COM库

由于OPC是基于COM技术制定,程序要用到COM库的某些函数,必须先初始化COM库。

hr=Colnitialize(NULL,COINITMUL_TITHREADED)

如果函数初始化COM库成功,函数返回值等于SOK【5|。

5.3连接OPC服务器

OPC客户能够连接到OPC服务器上,并建立OPC组和OPC数据项,这是OPC数据访问的基础,如果没有这个机制,数据访问的其它机能不可能实现。(以下代码均略去变量定义、出错处理等部分,给出的是一些关键代码)

MultiByteToWideChar(CPACP,0,MachineName,一l,wszMachineName,strlen(MachineName)+1);

MultiByteToWideChar(CP—ACP,0,ServerName,…l,wszServerName,strlen(ServerName)+1);

hr=::CLSIDFromProgID(wszServerName,&clsid);

cS.pwszName二wszMachineName;

qi[0】.pIID=&IIDjOPCServer;

hr=::CoCreateInstanceEx(clsid,NULL,CLSCTX—SERVER,&cs,l,qi);

pIOPCServer=(IOPCServer¥)qi【川.pItf;

5.4创建OPC组

通过OPC提供的IOPCServer接口的AddGroup()函数可以创建一个有指定名称和属性的OPC组。在调用该函数之前,可以使用上一步得到的Iunknown接口指针,通过QueryInterface()函数请求IOPCServer接口指针。代码如下:

ppUrlknown一>QueryInterface(IID_IOPCServer,(void料)&pSenrer);

//得到IOPCServer接口指针

hr=pIOPCServer_>AddGroup(WSzGroupName,女bActive,+pRate,l234,pTimeBias,pDeadBand,dwLCID,&hServerGroup,&dwReVisedUpdateRate,IIDjUllknoWn,&pIGroupUnknown);

5.5添加数据项

通过OPC提供的IOPCBrowseServerAddressSpace接口的BrowseOPCItemIDs成员函数,取得ItemName,通过0PC提供的IOPCItemMgt接口的AddItems成员函数,可以添加具有特殊属性的指定数量的数据项。

hr=pIOPCServer>QueryInterface(IID—IOPCBrowseServerAddressSpace,(void¥半)&pIOPCBrowSe);

hr=pIOPCBrowse>BrowseOPCItemIDs(OPCFLAT,L””,VTEMPTY,0,&pEnumString);

pEnumString>Skip(index);

if((hr=pEnumString>Next(1,&pszName,&coum))==SOK)

lWideCharToMultiByte(CPACP,0,pszName,l,pBuf,BufSize,NULL,NULL);

ItemName=pBuf;

//取得ItemName,index是Item的序号

hr二pIGroupUnknown>QueryInterface(IID__IOPCItemMgt,(void料)&pIOPCItemMgt);

计算机应用

COmpulerAppIicaliOns

《自动化技术与应用》2007年第26卷第4期

MultiByteToWideChar(CPACP,0,ItemName,一1,wszItemName,Strlen(ItemName)+1);

ItemDef.szItemID=wszItemName:

ItemDef.vtRequestedDataType=VT—EMPTY;

hr=pIOPCItemMgt>AddItems(1,&ItemDef,&pItemResult,&pErrors);

hItem=(HANDI。E)pItemResult>hServer;

//添加Item到Group,创建OPCItem对象5.6数据交换

成功地增加完所需要的数据项后,OPC客户端(VC应用程序)就可以读取Item里的相关数据,完成对OPCServer的远程数据采集了。在数据量不大的情况下,可以使用IOPCSyncIO同步接口的write()和Read()两个成员函数进行数据的读写操作,从而实现OPC客户(VC应用程序)和OPC服务器之间的数据交换。代码如下:

hr二pIGroupUnknown>QueryInterface(IIDIOPCSyncIO,(void{})&pIOPCSync);

//得到IOPCSyncl0接口指针

hr=pIOPCSyncIO>Read(OPCDS—CACHE,ReadNumber,hServerRead,&pItemValue,&pErrors);

//读ReadNumber数据

hr=pOPCSyncIO>Write(WriteNumber,hServerWrite,WriteValue,&pErrors);

//写WriteNumber数据

5。7释放接口指针

在VC应用程序停止运行之前,必须删除已创建的OPC对象并释放内存。依次删除item(RemoveItems),删除group(RemoveGroup)并断开与服务器的连接,清除OPCSever对象,释放资源。

6结束语

OPC技术统一了数据存取的接口标准,把硬件供应商和应用软件开发者分离开来,使得软件开发者无需了解硬件的实质和操作过程,只要遵循OPC标准进行开发,就能够访问OPC服务器中的数据,大大简化了过去从设备传输数据的复杂过程。本文介绍的在VisualC++环境下,使用定制接口开发访问数据的OPC客户端程序,能够发挥OPC服务器的最隹陛能,较好地满足了过程控制领域对数据实时、高效的要求。

参考文献:

[1]徐国君、李成利.OPc技术及其在工业控制中的应用[J],青岛科技大学学报,2003(6X16一18

[2]任学军.OPC客户开发技术.西北电力技术[J],2002(6l1719

[3]郑立.0PC应用程序入门[M】.北京:0PC中国促进委员会,2002

[4]邹云涛,吴重光.OPCDA客户端的三种实现方式,自动化博览,2004(1X5卜53

[5]潘爱民.COM原理与应用[M].北京清华大学出版社,2002

作者简介:纪强君(1976一),男,陕西汉中人,重庆大学在读硕士,研究方向为计算机控制。

(上接第97页)

本不变,提高了步进电机的精度及带负载能力。实验参考文献:

证明,采用DSP的来实现步进电机的细分控制系统是[1]TMs320LF/Lc240xADsPcontrollersReference有效的。Guide[z],(LiteratureNumber)sPRu357c,May2006,Texas

InstrumentsIrlcorporated.2006.5

[2]TMS320LF2407,TMS320LF2406,TMS320LF2402

DSPControllers,[Z](LiteratureNumber)SPRS094I,Sep—

tember2003,TexasInstrumentsIncorporated.

[3]I.298dualfuⅡ一bridgedriver,【Z]STMicroelectrollics.

1999.7

图5细分数为45时反馈电阻R6上的波形

作者简介:熊远生(1979一),男,河南信阳人,嘉兴学院机电工程学院讲师,从事网络控制、运动控制及变结构控制等研究。

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

作者:纪强君, 唐秀昆, 曹长修, JI Qiang-jun, TANG Xiu-kun, CAO Chang-xiu

作者单位:

刊名:

自动化技术与应用

英文刊名:TECHNIQUES OF AUTOMATION AND APPLICATIONS

年,卷(期):2007,26(4)

被引用次数:3次

参考文献(5条)

1.徐国君.李成利OPC技术及其在工业控制中的应用[期刊论文]-青岛科技大学学报(自然科学版) 2003(06)

2.任学军OPC客户开发技术[期刊论文]-西北电力技术 2002(06)

3.郑立OPC应用程序入门 2002

4.邹云涛.吴重光OPC DA客户端的三种实现方式[期刊论文]-自动化博览 2004(01)

5.潘爱民COM原理与应用 2002

相似文献(10条)

1.学位论文强乐远程电力参数监测与信息发布系统的研究和设计2008

目前电力设备在线监测系统从以往的集中式、个别参数逐步向分布式、多参数发展,监测系统的规模不断扩大,功能不断增强。在这种情况下,对电力设备在线监测系统的设计也面临一些新的问题。电力系统中电力设备种类众多,软件系统开发商必须为每一个特定的硬件开发专门的驱动程序,由此产生了重复开发、驱动程序间不兼容、驱动程序不能适应硬件的特征等一系列问题。同时对于大型电力设备通常需要进行多种状态参量的同步监测

,因此一个分布式监测系统通常是多个监测子系统的复杂组合,它必须具有足够的灵活性,以适应不同设备的具体情况及各种监测要求。

基于COM/DCOM技术的OPC提供了一个统一的标准,不同厂商只要遵循OPC标准就可以实现软硬件的互操作,Modbus/TCP通常作为工业现场各种RTU、

I/O模块与其它类型总线间的“网关”,发挥着重要作用。因此,设计基于Modbus/TCP的OPC数据访问规范的系统成为了一个需要进行研究和创新的课题。

本文基于Modbus/TCP协议和设计方法,实现了Modbus/TCP服务器端、客户端的程序,依据OPC的基础和核心技术COM,采用OPC DA2.05a规范开发了OPC服务器和客户端的程序,利用实时数据平台的关键技术,在OPC客户端实现了将OPC服务器中的数据存储到DB2数据库中,最后运用ASP.NET和XML相关技术设计了B/S架构信息发布系统。

本文结合了B/S与C/S优点,利用B/S+C/S的创新模式设计了远程电力参数监测与信息发布系统,内部使用C/S架构,外部使用B/S架构,设计的Modbus/TCP数据访问服务器在OPC客户端和由C8051F005设计的RTU设备间提供数据交换通道,可以方便OPC客户端进行访问和查看数据,通过OPC客户端与OPC服务器的交互,利用ADO接口将数据采集到利用范式设计的DB2数据库中,供信息外部网络发布。其中,该系统的部分功能现已在江苏省盐城市,安徽省等地方电力公司试用。

2.期刊论文于普良.孔建益.侯宇.杨金堂.李公法.YU Puliang.KONG Jianyi.HOU Yu.YANG Jintang.LI Gongfa基于Delphi的OPC客户端在监测系统的应用-机床与液压2009,37(4)

介绍了OPC技术的工作原理,并结合OPC客户端的工作机制,简要介绍了OPC客户端程序的开发方法及Delphi实现的具体步骤.

3.期刊论文李春洋.周宁面向BACnet协议的工控OPC服务器设计-武汉理工大学学报(信息与管理工程版)2010,32(3)

由于BACnet协议具有开放、实用、易于与其他网络集成的特点,其应用范围正在向工业现场监控领域扩展.为了使BACnet工业监控系统与其他系统进行数据交互,设计了基于OPC标准的数据交换服务器.该服务器能集成BACnet协议数据,并且实现BACnet协议数据向OPC服务器数据的映射.该服务器不仅能在工业监控系统中使用,而且还可以通过OPC客户端向第三方软件提供良好的数据服务.

4.学位论文宋翠霞OPC在网络检测与控制系统中的开发及应用2006

OPC (OLE for Process Control)是在微软的协助下,由世界上领先的跨国自动化公司和软硬件供应商合作开发的一套工业标准。OPC的设计目的是利用微软的COM(Component Object Model)、DCOM(DistributedCOM)和OLE(Object Linking and Embedding)技术,开发一个开放的接口标准,为过程控制工业中的现场设备、自动控制应用和企业管理应用之间提供了一种标准的数据访问机制。本文根据OPC规范首先进行OPC技术的的设计与开发,即OPC服务器和OPC客户端的开发,然后利用OPC技术实现实验室加热炉数据采集系统、实时数据库以及METLAB/Simulink等应用软件与PHD的数据通讯,为远程实时控制提供可靠、高效的数据传输,从而提高对实验室装置的智能化控制水平。另外,当实验室规模扩张,需要对更多的实验装置通过网络进行控制时,通过本文开发的OPC接口可以非常容易地将其纳入进来,即完成网络控制系统的扩充。

5.学位论文陆晓燕基于CAN总线的OPC服务器端的程序设计2008

OPC (OLE for Process Control)是用于工业过程控制的对象链接与嵌入技术.OPC为不同的厂商定义了硬件设备、软件和系统的公共接口,使得不同的系统、设备和软件之间能够互相连接、通信、操作,提高了系统的开放性,从而大大减少了系统集成过程中的重复开发,大幅度降低硬件和软件供应商的维护和开发成本,具有广泛的发展前景.

本文简要介绍了OPC技术的产生、特点、应用和发展前景.设计了符合规范的OPC服务器的结构模式.在iCAN实验开发平台上,实现了OPC服务器对数据的实时读取和存储功能.

论文的主要工作如下:

1、通过OPC快速开发工具研究OPC的数据存取,实现OPC标准接口功能,开发了符合OPC规范的OPC数据访问服务器,实现了与第三方客户端软件的无缝连接和OPC服务器的注册.

2、介绍了网络适配器CANET-E的功能及数据转换格式,实现了OPC服务器从CANET-E和iCAN功能模块组成的现场通讯网络中读取/发送数据的功能.

3、基于ADO技术的SQL,Server数据库的设计,实现实时数据的存储、查询功能.

4、利用OPC客户端软件对OPC服务器进行测试.

本课题设计的OPC服务器对CAN网络的实际通信状况进行了很好的监测,该设计具有可行性.

6.学位论文周轶旻基于多OPC服务器网络的PLC控制系统远程监控技术研究2007

随着电子技术、通信技术、网络技术、计算机技术不断发展并被应用到工业控制领域,以及对于工业控制系统可靠性、可维护性等方面要求的不断提高,工业控制系统由早期简单的分散控制发展到集散控制系统,再发展到现在的现场总线控制系统。而监控技术的重要性以及对于远程监控的要求也随着工业控制系统的发展不断得到提高。

现场总线技术是以智能传感、控制、计算机、数字通讯等技术为主要内容的综合通信技术,是目前自动化控制系统发展的热点。基于PROFIBUS现场总线的西门子PLC控制系统在工业现场控制中,得到了广泛的应用。

OPC技术是为了不同工业控制系统供应厂商的设备和应用程序之间的软件接口标准化,使其间的数据交换更加简单化的目的而提出来的一种接口标准。OPC标准以微软公司的OLE技术为基础,它的制定是基于通过提供一套标准的OLE/COM接口的技术而完成的。OPC技术的应用有效提高了工业控制系统的开放性和互操作性。

本文从实际应用的角度出发,对包括COM组件对象模型、各对象模型之间的关系,OPC服务器与客户机之间的数据访问方式等技术的OPC内部机制进行了探讨。研究了PROFIBUS现场总线技术与特点。以一套基于PROFIBUS现场总线的西门子PLC控制系统为基础,建立了可用于实验验证的远程监控系统。并在该系统中引入OPC技术,在远程监控系统的通信网络中配置了多个OPC服务器,配置多个OPC客户端,对PLC控制系统进行远程监控。重点研究解决了多个OPC服务器与PLC控制系统通信,多个OPC服务器同时处理不同现场数据,和OPC应用程序客户端从不同服务器同时获得数据的问题,实现了对PLC控制系统的远程实时监控。研究结果有实际应用价值和同类技术研究参考价值。

7.期刊论文黄春光.刘锋涛.HUANG Chun-guang.LIU Feng-tao OPC技术在电力设备监测系统中的应用-继电器

2006,34(20)

介绍了OPC技术的特点及其在电力设备在线监测系统中的应用情况.首先,结合OPC技术在工业控制系统中的应用,分析了该技术在开发监控系统方面存在的优势.接着,通过深入阐述OPC客户端/服务器程序接口的创建方法及过程,说明OPC规范在修改后已得到进一步的完善.以开发的CBS2000系统为例,指出采用OPC标准设计监控系统软件,可大大提高软件的开发速度并减少软件的维护工作量.实践表明,利用OPC技术开发不仅能增强系统的稳定性和可靠性,还能提高系统的开放性和兼容性,在电力设备监测系统开发领域具有良好的前景.

8.学位论文花新峰基于OPC技术的企业实时信息集成2006

目前企业管控一体化研究的焦点是制造执行系统(MES),而MES的核心是实时数据库系统。通过该实时数据库系统,企业资源规划系统(ERP)与过程控制系统(PCS)结合在一起,使企业的管控一体化成为可能。实时数据库系统的关键技术之一是获取工业现场的实时数据,目前在工业控制领域的主流趋势是使用OPC标准作为信息集成时数据传递的接口。

本论文主要探讨了使用OPC技术进行企业实时数据信息集成的方法。首先介绍了企业管控一体化系统和论文的实际背景,其次对OPC技术做了简要的概述,详细地叙述了OPC软件的开发方法和过程。主要包括:OPC客户端程序的开发方法、OPC服务器的开发过程。随后给出了使用OPC技术进行企业MES数据集成的具体实例。

本论文所做的主要工作如下:

1.介绍了企业管控一体化系统和论文的实际背景

2.论述了制造执行系统MES在管控一体化系统中的作用与地位

3.论述了OPC技术在MES信息集成中的重要作用

4.给出了贵州铝厂热电厂管控一体化的实施方案

5.对OPC客户程序开发的不同方式进行了研究比较

6.探讨了OPC服务器软件的开发方法及过程,开发了应用于本课题的OPC数据访问服务器

7.在简要介绍力控实时数据库软件PCAuto3.6的基础上,探讨了它与OPC服务器的连接方法

8.在力控实时数据库平台上完成了工控用户界面的组态、WWW方式应用、数据报表分析等。

9.学位论文周士贵管控一体化系统数据集成和预处理的研究2003

在全球经济一体化背景下,建立一个能够提高企业竞争力的企业信息管理系统是对中国企业的一个挑战.由于历史的原因,企业生产设备和控制系统品种繁多,要想实施先进的企业管理模式,就必须找到一种有效的方法将这些信息"孤岛"的信息集成起来.该课题就是在这样的市场需求下开展研究的.该文提出了面向中小型流程企业管控一体化系统的方案.作为企业生产过程自动化和企业管理信息化相结合的桥梁,该系统设计了基于OPC技术的能够与以太网连接的企业级SCADA系统,确定了以实时数据库、关系数据库组成的数据仓库为数据平台的数据集成基本构架,根据流程工业的特点和ERP的管理理念在方案中提出了面向生产过程的实时ERP策略.为企业管理提供了一个良好的结构框架.OPC是一套基于Windows操作平台的工业应用程序之间的组件对象模型接口标准.OPC自动化接口是OPC标准的一套可选的接口,它是为商业用户利用VB进行开发而提供的.该文利用该接口开发设计了OPC客户端应用程序,并对其进行了试验和测试,证明了利用OPC技术完全可以有效的实现异构系统数据的集成.生产过程中大量的时序数据直接应用到信息管理系统是不现实的,为了提高数据挖掘的效率,该文比较深入地讨论了时序数据的预处理,提出了一种基于线性插值理论的数据压缩方法,并对该算法进行了证明和测试,试验结果也证明了该算法的有效性和正确性.

10.期刊论文基于OPC技术的监控系统设计应用-电脑开发与应用2005,18(10)

为了降低各通信模块硬件与应用软件之间的相互耦合性,提高各设备的标准化、开放性及网络化,介绍了OPC技术的特点,阐述了OPC的结构及OPC客户端/服务器程序接口,讨论了该技术的应用并提供源代码说明如何用VISUAL BASIC实现OPC数据存取服务器的自动化接口.采用OPC标准设计监控系统软件

,可大大提高软件的开发速度并减少软件的维护工作.

引证文献(3条)

1.汤勃.孔建益.王兴东.杨金堂.邹光明OPC客户程序设计及其在远程监测系统中的应用[期刊论文]-湖北工业大学学报 2009(4)

2.汤勃.王兴东.孔建益.杨金堂.邹光明基于OPC技术的轧机主传动系统远程监测与诊断[期刊论文]-机械设计与制造 2009(4)

3.陈在平.彭登峰基于Visual https://www.doczj.com/doc/7c11279517.html,的OPC客户端的研究与实现[期刊论文]-制造业自动化 2008(12)

本文链接:https://www.doczj.com/doc/7c11279517.html,/Periodical_hljzdhjsyyy200704021.aspx

授权使用:上海交通大学(shjtdxip),授权号:41b8f89f-8d2d-4406-96da-9dbb01671fea

下载时间:2010年7月22日

OPC客户端编程汇编

OPC编程汇编 OPC客户端的自动化实现 OPC是建立在COM,DCOM的基础商的,因此绝大多数语言都可以很好的进行开发。在Net中开发客户端有以下几种方式: (1)使用OPCNetAPI,需要用到OPCNetAPI.dll,https://www.doczj.com/doc/7c11279517.html,.dll (2)使用自动化接口,需要用到OPCDAAuto.dll (3)使用自定义接口,需要用到多个Wrapper:OpcRcw.Ae.dll,OpcRcw.Batch.dll,https://www.doczj.com/doc/7c11279517.html,n.dll,OpcRcw.Da.dll,OpcRcw.Dx.dll,OpcRcw.Hda.dll,OpcRcw.Sec.dll 以上开发方式所需的动态链接库可以从OPC基金会(https://www.doczj.com/doc/7c11279517.html,/)的网站上下载,一些下载项目可能需要注册,或成为基金会的成员。 不同的方式有各自的有缺点,请参见… 本文使用自动化接口,https://www.doczj.com/doc/7c11279517.html,语言进行开发,开发项目是无线射频(RFID)卡方面的应用,典型的如公交车,或公司考勤使用的刷卡机。需要注意的是自动化接口存在一个“不是问题”的问题,数组下标是以1开始的,而不是传统计算机开发上的以0开始。不知道设计者头脑是怎么想(有人知道吗?);这可能会给一些语言的开发造成问题(有人碰到吗,没有你就是幸运的) 需求:OPCDAAuto.dll或该Dll的Interop (一):客户端开发流程 OPC客户端的开发主要遵循下图所示的开发流程,下面就从以下几个开发步骤进行说明 (二):枚举OPC服务器列表 枚举服务器主要是通过OPCServer接口的GetOPCServers方法来实现的,该方法会返回OPC服务器数组(以1为下界,上面已有说明),以下是代码段 '枚举OPC服务器列表

c#opc客户端开发

using System; using System.Collections.Generic; using https://www.doczj.com/doc/7c11279517.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OPCAutomation; using https://www.doczj.com/doc/7c11279517.html,; namespace Opc_Client { public partial class Form1 : Form { public Form1() { InitializeComponent(); } #region私?有?D变à?量¢? OPCServer SyServer; OPCGroups SyGroups; OPCGroup SyGroup; OPCItems SyItems; OPCItem SyItem; string strHostIP = string.Empty;

string strHostName = string.Empty; bool opc_connected = false; //连¢?接¨?状á??态?? int itmHandleClient = 0; //客¨a户?ì端?句?柄à¨2 int itmHandleServer = 0; //服¤t务?端?句?柄à¨2 #endregion #region方¤?法¤?§ private void GetLocalServer() { IPHostEntry IPHost = Dns.GetHostEntry(Dns.GetHostName()); if (IPHost.AddressList.Length > 0) { strHostIP = IPHost.AddressList[4].ToString(); this.tboxServerIP.Text = strHostIP.ToString(); } else { return; } IPHostEntry ipHostEntry = Dns.GetHostByAddress(strHostIP); strHostName = ipHostEntry.HostName.ToString(); try { SyServer = new OPCServer(); object serverList = SyServer.GetOPCServers(strHostName); foreach (string turn in (Array)serverList) { this.cmbServerName.Items.Add(turn); cmbServerName.SelectedIndex = 0; btnConnServer.Enabled = true; } } catch (Exception err) { MessageBox.Show("枚?举¨′本à?地ì?OPC服¤t务?器??出?错?¨a:êo"+err.Message,"提?¨¢示o?信?息?é",MessageBoxButtons.OK,MessageBoxIcon.Warning); } }

Delphi7.0开发OPC客户端程序(Siemens_Opc_client)

OPC是OLE for Process Control的缩写,即把OLE应用于工业控制领域,OPC是建立在O LE规范之上,它为工业控制领域提供了一种标准的数据访问机制。OPC服务器由三类对象组成:服务器(Server)、组(Group)、数据项(Item)。服务器对象(Server)拥有服务器的所有信息,同时也是组对象(Group)的容器。组对象(Group)拥有本组的所有信息,同时包容并逻辑组织OPC数据项(Item)。在这里数据项(Item)就是指所有的PLC信号的输入与输出。OPC组对象(Group)提供了客户组织数据的一种方法。客户可对之进行读写,还可以设置客户端的数据更新速率。当服务器缓冲区内的数据发生改变时,OPC将向客户发出通知,客户得到通知后再进行必要的处理。而无须浪费大量的时间进行查询。OPC规范定义了两种组对象:公共组和局部组(私有组)。公共组由多个客户共有,局部组只隶属于一个OPC客户。一般来说,客户和服务器的一对连接只需要定义一个组对象。在每个组对象中,客户可以加入多个OPC数据项(Item)。OPC数据项(Item)是服务器端定义的对象,通常指向设备的一个寄存器单元。OPC客户对设备寄存器的操作都是通过其数据项来完成的,通过OPC数据项(Ite m),OPC规范尽可能地隐藏了设备的特殊信息,也使OPC服务器的通用性大大增强。OPC 数据项(Item)并不提供对外接口,客户不能直接对之进行操作,所有的操作都是通过组对象进行的。每个OPC数据项(Item)的数据结构包括三个成员变量:即数据值、数据质量和时间 戳。数据值是以Variant形式表示的。 Delphi7.0加载Siemens动态库: 1.打开Delphi7.0,点击Project->Import Type Library 2.在Import Type Library里面找到Siemens OPC DAAutomation 2.0 (Version 1.0),在Clas s Nams里面可以看三个类方法(TOPCGroups,TOPCGroup,TOPCServer),默认的Palette Pag e为ActiveX,单击Install… Delphi7.0中编写客户端程序: 1.连接OPC服务器 在Form上面添加三个OPC控件: OPCGroup1: TOPCGroup; OPCGroups1: TOPCGroups; OPCServer1: TOPCServer;

(C#)OPC客户端源码

【转】(C#)OPC客户端源码 转载申明 申明:本文为转载,如需转载本文,请获取原文作者大尾巴狼啊的同意,谢谢合作! 转自:大尾巴狼啊 原文出处:https://www.doczj.com/doc/7c11279517.html,/xiaosacao/archive/2009/01/13/1374895.html 前几天我就发布过这篇文章,可惜的是,发布后代码有的却看不到,后来我就删了,至今不明白什么原因- -! 关于C++、VB来开发OPC客户端的资料网上有很多,但C#的至今没发现有多少。 由于近期项目的需要,就开发了OPC客户端的一个模块。在我想来,程序员挺累的,原因我很累。所以我想大家也很累~~~嘿嘿。特别是刚接手OPC客户端开发的前几天,天天盯住显示器,百度、GOOGLE不停的搜索。每天早上醒来,眼睛都瑟瑟的。 从事3年以上软件开发的朋友们,估计都会腰酸背痛吧!反正我是这样的。 不说那么多废话了,贴上源码,让需要的同行看看吧,代码的质量并不高,就当做抛砖引玉吧! 1、枚举本地服务器 2、获取服务器信息 3、列出了服务器上Tag 4、可以设置组的属性 5、读\写功能 6、可进行远程连接(DCOM需配置) 先看图:

引用类库: OPC服务器: 开发工具: 当前环境:

源码: ///程式使用C#.NET 2005 编写 ///引用类库OPCDAAuto.dll ///OPCServer采用KEPWare ///在windows xp sp2、sp3、windows 2003上测试通过///完成于:2008年12月31日 ///测试于:2009年01月05日 ///

///作者:潇洒草 ///Email:zhkai868@https://www.doczj.com/doc/7c11279517.html, ///QQ:44649029 /// ///如分发,请保留此摘要。 ///鄙视那些拿代码当宝贝的人,鄙视那些你不拿源码换就不稀罕你的人,鄙视那些自私的人。///别人看到你的代码,你能死啊?对你有多大威胁啊?强烈鄙视~~~ ///如果你是这样的人,赶紧关了。。偶不欢迎。。 using System; using System.Collections.Generic; using https://www.doczj.com/doc/7c11279517.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using https://www.doczj.com/doc/7c11279517.html,; using System.Collections; using OPCAutomation; namespace OPC测试通过 { public partial class MainFrom : Form { public MainFrom() {

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

VC环境下的OPC客户端程序开发 来源:中国论文下载中心 [ 08-07-30 15:41:00 ] 作者:赵健师奕兵编辑: studa0714 Ads by Google 曙光刀片服务器TC2600支持Intel? Xeon? 5000系列处理器高密度高能效易管理低成本https://www.doczj.com/doc/7c11279517.html, OPC Grape Seed Extract Save 70% on our Premium Blend: Worldwide Shipping Quoted Upfront https://www.doczj.com/doc/7c11279517.html, SapphireTrend Premier OPC Trending solution for realtime process control & analysis https://www.doczj.com/doc/7c11279517.html, 摘要本文通过分析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客户端的实现

1引言 OPC(OLE for Process Control)是一个工业标准,他是许多世界领先的自动化和软、硬件公司与微软公司合作的结晶。管理该标准的组织是OPC基金会。该基金会的会员单位在世界范围内超过150个,包括了世界上几乎全部的控制系统、仪器仪表和过程控制系统的主要供应商。OPC 技术建立了一组符合工业控制要求的接口规范,将现场信号按照统一的标准与SCADA、HMI等软件无缝连接起来,同时将硬件和应用软件有效地分离开。只要硬件开发商提供带有OPC接口的服务器,任何支持OPC接口的客户程序均可采用统一的方式对不同硬件厂商的设备进行存取,无须重复开发驱动程序。如果希望将数据引入数据库进行统计分析,就要进行客户端开发。 2客户程序的设计方法与比较 客户程序的设计主要是指客户程序中OPC接口部分的设计。客户程序本身可以完成很多复杂的数据处理与显示功能,但需要通过OPC接口部分访问OPC服务器,对现场数据进行存取。 开发OPC、Data、Access、Client之前,要弄清服务器的大体情况,比如需要访问的服务器是否提供自动化接口、服务器的OPC的版本等,到目前为止,OPC有1.0和2.0两个版本,两个版本的接口定义不同,2.0版是对1.0的改进,但不兼容。 OPC客户端的主要任务: ①创建服务器对象。 ②建立与服务器的连接。 ③浏览OPC服务器的功能。客户程序需要创建OPC基金会提供的OPC服务器浏览器对象(OPCServerList)再通过该对象的IOPCServerList接口获得OPC服务器名称的列表;可以通过枚举注册表中包含“OPC”子键的程序名来浏览符合OPC数据存取规范的服务器,但效率较低。 ④通过OPC接口读写数据。 ⑤断开连接。

OPC客户端的自动化

OPC客户端的自动化实现 OPC是建立在COM,DCOM的基础商的,因此绝大多数语言都可以很好的进行开发。在Net中开发客户端有以下几种方式: (1)使用OPCNetAPI,需要用到OPCNetAPI.dll,https://www.doczj.com/doc/7c11279517.html,.dll (2)使用自动化接口,需要用到OPCDAAuto.dll (3)使用自定义接口,需要用到多个Wrapper:OpcRcw.Ae.dll,OpcRcw.Batc h.dll,https://www.doczj.com/doc/7c11279517.html,n.dll,OpcRcw.Da.dll,OpcRcw.Dx.dll,OpcRcw.Hda. dll,OpcRcw.Sec.dll 以上开发方式所需的动态链接库可以从OPC基金会(http://www.opcfoundati https://www.doczj.com/doc/7c11279517.html,/)的网站上下载,一些下载项目可能需要注册,或成为基金会的成员。 不同的方式有各自的有缺点,请参见… 本文使用自动化接口,https://www.doczj.com/doc/7c11279517.html,语言进行开发,开发项目是无线射频(RFID)卡方面的应用,典型的如公交车,或公司考勤使用的刷卡机。需要注意的是自动化接口存在一个“不是问题”的问题,数组下标是以1开始的,而不是传统计算机开发上的以0开始。不知道设计者头脑是怎么想(有人知道吗?);这可能会给一些语言的开发造成问题(有人碰到吗,没有你就是幸运的) 需求:OPCDAAuto.dll或该Dll的Interop (一):客户端开发流程 OPC客户端的开发主要遵循下图所示的开发流程,下面就从以下几个开发步骤进行说明 (二):枚举OPC服务器列表 枚举服务器主要是通过OPCServer接口的GetOPCServers方法来实现的,该方法会返回OPC服务器数组(以1为下界,上面已有说明),以下是代码段'枚举OPC服务器列表 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try GlobalOPCServer = New OPCAutomation.OPCServerClass() Dim ServerList As Object = GlobalOPCServer.GetOPCServers For index As Short = LBound(ServerList) To UBound(ServerList) '加入控件列 表中,注意这里使用LBound和UBound cbbServerList.Items.Add(ServerList(index)) Next If cbbServerList.Items.Count > 0 Then

OPC客户端搭建

1.OPC对象的分层结构 OPC数据访问提供从数据源读取和写入特定数据的手段。OPC数据访问对象是由下图所示的分层结构构成。即一个OPC服务器对象(OPCServer)具有一个作为子对象的OPC组集合对象(OPCGroups)。在这个OPC组集合对象里可以添加多个的OPC组对象(OPCGroup)。各个OPC组对象具有一个作为子对象的OPC标签集合对象(OPCItems)。在这个OPC标签集合对象里可以添加多个的OPC标签对象(OPCItem)。此外,作为选用功能,OPC服务器对象还可以包含一个OPC浏览器对象(OPCBrowser)。 OPC对象中的最上层的对象是OPC服务器。一个OPC服务器里可以设置一个以上的OPC 组。OPC服务器经常对应于某种特定的控制设备。例如,某种DCS控制系统,或者某种PLC 控制装置。OPC组是可以进行某种目的数据访问的多个的OPC标签的集合,例如某监视画面里所有需要更新的位号变量。正因为有了OPC组,OPC应用程序就可以以同时需要的数据为一批的进行数据访问,也可以以OPC组为单位启动或停止数据访问。此外OPC组还提供组内任何OPC标签的数值变化时向OPC应用程序通知的数据变化事件(表1-4)。

2.OPC客户端搭建过程(部分代码) 1)连接服务器 a)查询服务器端主机的名字。 string hostname = Dns.GetHostName(); b)初始化服务器对象,搜索主机上的服务器ID,并枚举出来。 public void searchlocalsvr(string hostName)//寻找本地服务器 { try { OPCSvr = new OPCServer(); object serverList = OPCSvr.GetOPCServers(hostName); foreach (string server in (Array)serverList) { Console.WriteLine("本地OPC服务器:{0}", server); } } catch (Exception err) { Console.WriteLine("枚举本地OPC服务器出错:{0}", err.Message); } } c)连接服务器。 public void ctOPCSever(string HostName)//连接OPC服务器 { string OPCSvrName; searchlocalsvr(HostName); Console.WriteLine("请输入要连接的服务器名字:"); OPCSvrName = Console.ReadLine(); try { OPCSvr.Connect(OPCSvrName, ""); Console.WriteLine("连接服务器成功!"); } catch (Exception err) { Console.WriteLine("连接本地OPC服务器出错:{0}", err.Message); } } 2)创建组(OPCGroups)对象和添加数据项对象(OPCItems) public void CreateGrp()//创建组对象 { try

VB编写OPC客户端程序

如何用VB编写OPC客户端程序 一、引言 在工业自动化领域,计算机早已成为必不可少的工具,计算机技术的不断发展,大大加速了工业自动化技术的进步,而各种各样的工业控制应用软件正是具体实现这一进程的最重要的工具。 以往,应用软件开发商要为每一种硬件开发驱动程序,由于硬件的种类繁多,特征各异,软件开发商的负担异常繁重,尤其是如果硬件特征发生了变化,整个应用软件相应的驱动程序也要相应地修改,这对软件开发商,对整个工程都是很不利的。而且由于驱动程序的不统一,不同应用程序访问同一硬件设备时常常发生冲突。OPC(OLE for Process Control)技术标准正是在这种情况下产生的。OPC 基于微软的OLE、COM和DCOM技术,而且它本身就是一种特殊的COM,也正因为有微软的参与,以及以已经成熟的技术为基础,它比一般的工业标准制定的效率更高,它从开始制定到第一个可运行的规范开始运行,只用了不到一年的时间。 二、OPC原理及应用 OPC技术为工业自动化软件面向对象的开发提供了统一的标准。它大大减轻了软件开发商的负担,软件开发商不必再为每一硬件单独编写驱动程序,只要硬件的特征符合统一的OPC接口程序标准,或者硬件生产商提供OPC服务器,如图一所示,不同的应用软件开发商都可以采用OPC标准设计工控软件,以标准规定的统一接口通过OPC服务器存取现场数据。 这样,当现场设备发生变化或系统中加入新设备时,OPC服务器的提供商需要重新实现服务器接口,以适应硬件的变化,但由于服务器所提供的接口的一致性,工控软件不作更改即可继续使用,只是某些情况下可能需要重新组态(如添加新的PLC站点等),这样,软件开发商可以节省大量的时间致力于工控软件的性能方面的提高,不必再考虑硬件变化带来的影响,大大减小了软件维护的工作量。这正如OPC规范里所说,OPC将应用软件和硬件设备划清了界限。 2.1 OPC基本结构 OPC服务器有两类接口:定制接口(Custom Interface) 、自动化接口(Automation Interface),定制接口比较低级,它提供更多的功能,效率也比后者高,可以用C++语言调用此类接口,自动化接口主要用于VB、DELPHI等开发工具。按照OPC规范,定制接口是服务商必须提供的,而自动化接口则是可选的,不过,OPC基金会(管理OPC标准的国际组织)提供了一个叫做“自动化包装器”的动态连接库,用于在两者间转换。如图二所示: 在OPC的早期规范里主要包括OPC数据存取规范、OPC报警和事件、OPC 历史数据存取规范。OPC数据存取规范详细规定了客户程序和服务器程序进行数据通信的机制,其它类型的OPC服务器往往是在数据存取服务器的基础上通过增加对象、扩展接口而来的,所以该规范也是其它OPC规范的基础。OPC数据存取规范规定的基本对象有三类:OPC Server、OPC Group和OPC Item,OPC Server包含服务器的所有信息,也是OPC Group的容器,OPC Group除了包含它自身信息外,还负责管理OPC Item。它们的结构如图三所示。每一个OPC Item代表到数据源的一个连接,但它没有提供外部接口,客户端程序无法

OPC客户端源码

申明:本文为转载,如需转载本文,请获取原文作者大尾巴狼啊的同意,谢谢合作! 转自:大尾巴狼啊 原文出处: 前几天我就发布过这篇文章,可惜的是,发布后代码有的却看不到,后来我就删了,至今不明白什么原因- -! 关于C++、VB来开发OPC客户端的资料网上有很多,但C#的至今没发现有多少。 由于近期项目的需要,就开发了OPC客户端的一个模块。在我想来,程序员挺累的,原因我很累。所以我想大家也很累~~~嘿嘿。特别是刚接手OPC客户端开发的前几天,天天盯住显示器,百度、GOOGLE不停的搜索。每天早上醒来,眼睛都瑟瑟的。 从事3年以上软件开发的朋友们,估计都会腰酸背痛吧!反正我是这样的。 不说那么多废话了,贴上源码,让需要的同行看看吧,代码的质量并不高,就当做抛砖引玉吧! 1、枚举本地服务器 2、获取服务器信息 3、列出了服务器上Tag 4、可以设置组的属性 5、读\写功能 6、可进行远程连接(DCOM需配置) 先看图: 引用类库: OPC服务器:

当前环境: 源码: ET 2005 编写 oString(); } else { return; } + "."+ } oString() + " Error:"+ (i).ToString(); } } oString(); = (i).ToString(); = (i).ToString(); } } mail 2009-03-31 15:01 | 李默[未注册用户]

能给我份源码吗? 2009-04-04 19:01 | 滕大鹏[未注册用户] #30楼回复引用 我想要文档,能给份吗?谢谢 2009-04-04 19:03 | 滕大鹏[未注册用户] #31楼回复引用 谢谢楼主,我的邮箱是,能给我发一份全部的资料吗? 2009-04-07 14:02 | TJC #32楼回复引用 谢谢,传份给我,要全部资源(文档+源码),万分感谢!2009-04-08 22:02 | hxf[未注册用户] #33楼回复引用 急需一份资料谢谢 2009-04-11 16:34 | jhjohn[未注册用户] #34楼回复引用 麻烦传份给我,要全部资源(文档+源码),万分感谢 2009-04-13 08:36 | yldx #35楼回复引用 您好!麻烦传分全部资源(文档+源码),谢谢 2009-04-15 13:00 | xhm0924[未注册用户] #36楼回复引用 谢谢,传份给我,要全部资源(文档+源码),万分感谢!急用2009-04-25 09:35 | bestyaq

别人学习opc客户端开发的体会

OPC协议的编写 2010-01-28 14:20:46| 分类:通信类| 标签:|字号大中小订阅 我从北京买了一本《OPC应用程序入门》,在此之前基本上只是知道有OPC,在五月四日开始,我学了七天。其中有苦有甜。我写下来,权做休息或是练练打字。 第一天 安装了《入门》提供的东西,包括是下面几个文件。还有个批处理文件,是一个注册过程。 opccomn_ps.dll opcproxy.dll opcdaauto.dll OPCTrend.ocx OPCBar.ocx OpcServer.exe OPCJDADemoServer.exe 看了一阵书,知道了前三个是:通用接口,PROXY-STUB,自动化接口。不明白。 后面两个是demo 服务器。 上网,用GOOGLE,查OPC,很自然就找到了https://www.doczj.com/doc/7c11279517.html,.,又下了个free 服务器。安装了(注册)。 到了工控网,看到有人在推荐clienttools,就下了一个,叫WXOPC。运行一下, 点击连接服务器图标,立即出现了三个: OPCJ.SAMPLESERVER.1 OPCJ.DADEMOSERVER.1 HEXATEC.PCDATA

第三个是opcconnect上download的计算机基本情况的简单程序。 点击他们,还出现了一些“item”,“value"的内容还在变,有意思。我就想这工具还真不错,不知我能不能做到,但一想,如果这些功能都做不到,这OPC就没多少 人敢学,也就没有市场。 有一段时间没用VB了,先热了热身,看了自己过去编过的code。 第二日 今天先看书。 《OPC应用程序入门》,40元,我花了48元,从汇款到收到用了12天,拿到手上,感觉很单薄。我的看书观点是:在看的过程中迷信书,看完后怀疑书,然后忘记书。尽管这本书上我立即就发现 有错误。我还是仔细地看下去。 这是一本教人们用VB编应用客户端程序的书,希望让一般工控技术员认识OPC其实不复杂, 最起码编用户程序(客户端)不难。 在这之前,我对COM和DCOM技术有所了解,也是很模糊的,OPC以COM和DCOM技术为基础,主要是在服务器端(server),而在用户端并不要很在意它们。 书上对OPC体系有描述,我画了个图。 OPCserver是COM组件,如果安装(注册了)一个OPCserver后,利用WINDOWS的组件工具可以看到,如果这个server安装在别的计算机上,不是本地机,那它就是个DCOM组件(分布式)。 OPC基金会公布了通用接口(用户接口),用C++访问OPCserver只要通过这个接口就可以, 并没有必要了解OPCserver是怎么工作的。 对于VB、VBA、EXCEL、DELPHI等编程软件或工具,不能直接访问通用接口,而要通过所谓的自动化接口(automation interface),OPC组织发布了DATA ACESS 2.0,实际上已经有了3.0版。

OPC客户端开发工具包

OPC客户端开发工具包 使用手册 北京安捷尔软件技术有限公司 版本:2.1

前言 OPC(OLE for Processing Control)是工控行业的软件接口标准,主要用来解决控制系之间或控系统与设备之间数据交换的标准化问题。OPC规范包括数据访问服务器(DA)、历史数据访问服务器(HDA)、事件与报警服务器(A/E)、XML数据访问服务器(XML DA)、等一系列标准规范。OPC规范由OPC基金会负责制定并对OPC产品进行认证。 OPC规范具有如下的优点: (1) 统一的接口标准简化了软件的开发和减低了系统维护的费用 (2) 充分的开放性和标准化特性,保证高度柔韧性系统的实现 (3) 持续的版本升级,保证了规范的先进性 (4) 支持DCOM、.Net架构 本文档介绍OPC数据访问客户端开发工具包(以下简称客户端工具包)的特点和如何利用开发工具包进行OPC 数据访问客户端的开发。 本文共分为四个部分: 一、介绍了OPC的基本概念; 二、DA客户端的开发流程; 三、详细描述了工具包的接口描述; 四、附录部分介绍了一些与DA开发相关的OPC规范和其他内容。

1.工具包简介 1.1. OPC工具包简介 OPC工具包产品以标准动态连接库(DLL)形式提供二次开发接口,与Win98、WinNT、WIN2000、WIN2003系统完全兼容。OPC开发工具包由服务器工具包、客户端开发工具包组成,完全封装了OPC技术实现细节,使二次开发的程序员无需OPC规范底层细节,降低服务器和客户端程序开发的复杂程度和减少了熟悉OPC技术的时间。 1.2. 工具包的特点 数据访问服务器工具包于2004年3月开始研发,经过两次大规模升级,实现了对OPC 数据访问服务器规范(以下简称 DA规范)的全面支持(支持规范版本1.0、2.0、3.0)。工具包具有以下特点: z完全符合DA标准,通过OPC基金会兼容性产品测试 z完全的封装使二次开发人员不需要了解COM技术和OPC规范接口细节 z工具包支持多种开发语言,如VC、BC、VB、Delphi等 z逻辑清晰、功能明确的二次开发函数保证用户进行二次开发简单容易 z支持同步、异步数据通讯方式 z支持自定义属性读写 z支持树型地址空间 z支持分布式体系结构 z完备的产品升级和完善的技术支持,提供现场技术服务和远程技术指导 1.3. 工具包的产品分类 z单一授权(加密锁),用此类工具包开发完成的客户端产品安装的目标计算机需要安装加密锁,没有加密锁服务器无法持续运行。这类产品适合于产品开发次数比较 少的用户,如小型MIS用户、系统集成用户等。 z无限授权(序列号激活),用此类工具包开发完成的客户端产品运行时无需判断加密锁,工具包可以重复进行使用。这类产品适合于硬件厂商开发OPC驱动程序、软 件厂商为软件提供OPC标准服务器接口。 1.无限授权(源码),提供开发工具源码。

OPC客户端的研究与开发

OPC客户端的研究与开发 随着计算机技术的发展,计算机在工业控制领域发挥着越来越重要的作用。各种仪器仪表都提供了与计算机通信的协议相通的功能。但是,不同厂家产品的协议互不相同,即使上一同一家公司的不同产品与计算机之间的通信协议也不尽相同。因为不同的语言和运行环境对驱动程序的接口有不同的要求,所以不仅软件厂商需要编写大量设备驱动,硬件厂家也需要为应用程序开发不同的驱动,这样软硬件厂商无疑都加大了开发成本,同时此方案也不符合软件工程的发展趋势,在这样的背景下,OPC技术应运而生。 OPC(OLE for Process Control)技术为工业控制领域提供了一种标准的数据访问机制,将硬件与应用软件有效的分离开来。不同的硬件厂商只需为各自的设备提供带有OPC接口的服务器,软件厂商可以采用支持OPC接口的客户端程序对它们进行统一方式的访问。 1OPC技术的特点 OPC(OLE for Process Control)是工控行业的软件接口标准,它试图按照标准的方法完成不同设备之间数据的交换。OPC基金会是OPC规范的制定者,制定了数据访问、历史数据访问、事件与报警、批处理、OPC DA XML等一系列标准。 OPC基于微软的COM技术,它具有如下的优点: (1)高速的数据传输; (2)基于分布式COM的安全性管理机制; (3)降低开发成本; (4)可以实现具有高度柔韧性功能的系统; (5)可以实现具有高可靠性的系统。 1.1 OPC服务器 OPC数据访问提供数据源读取和写入特定数据的手段。OPC数据访问对象是如图1所示的分层结构构成。 一个OPC服务器对象(OPC SERVER)具有一个作为子对象的OPC组集合对象(OPC GROUPS);在这个OPC组集合对象里可以添加多个OPC组对象(OPC GROUP);各个OPC 组对象都具有一个作为子对象的OPC标签集合对象(OPC ITEMS);在这个OPC标签集合对象里面可以添加多个OPC标签对象(OPC ITEM)。此外,作为选用功能,OPC服务器对象还可以包含一个OPC浏览器对象(OPC BROWER)。一般OPC服务器包含下述的3类对象,即服务器、组、数据项。 (1)服务器对象。对象包含服务器的所有信息,同时也是组对象的容器。一个OPC服务器对应于一个OPC SERVER,即一种设备的驱动程序。在一个SERVER中,可以有若干个组;(2)组对象。组对象包含本组的所有信息,同时包含并管理OPC数据项。客户可以对其进行读写,还可以设置客户端的数据更新速率。OPC规范定义了2种组对象:公共组(全局组,PUBLIC)和局部组(局域组,LOCAL)。公共组可以被多个客户访问,而局域组只能由建立它的客户端访问;

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

基于Visual C#的OPC客户端实现 时间:2009-04-28 16:08:22 来源:现代电子技术作者:朱立军,安娜,陈未如沈阳化工学 院 摘要:OPC是连接数据源(OPC服务器)和数据的使用者(OPC应用程序)之间的软件接口标准。这里以C#为开发工具,按照OPC技术的规范标准,将OPC技术应用到虚拟仪器显示组件中。具体实现了OPC客户端数据访问服务器的过程,接口步骤及其读写数据的方法,并根据OPC服务器提供的数据,最终在虚拟仪器显示组件中生成了虚拟的正弦波、方波、锯齿波、三角波等。 关键词:OPC;OPC接口;OPC服务器;C# 0 引言 随着计算机技术和数字信号处理技术的发展,人们可以用计算机软件替代传统的硬件实现的一些功能,将计算机硬件和软件有机的融合为一体,这就是所谓的虚拟仪器。近年来,世界各国的虚拟仪器公司开发了不少基于LabVIEW,Matlab,VC++,VB等虚拟仪器开发平台软件,当硬件操作的设备驱动改变时,软件开发人员需要修改大量的驱动程序来连接此设备,因此使得虚拟仪器开发平台开发难度大、通用性差。为此,提出了基于OPC技术的虚拟仪器,它是由硬件供应商和软件开发商之间建立一套完整的“规则”,只要遵循这套规则,数据交互对两者来说都是透明的,硬件供应商无需考虑应用程序的多种需求和传输协议,软件开发商也无需了解硬件的实质和操作过程。 l OPC技术 OPC(OLE Process Contro1)是OPC基金会组织倡导的工业控制和生产自动化领域中使用的硬件和软件的接口标准,以便有效地在应用和过程控制设备之间读写数据,具体的功能实现要由开发商根据需要自主的进行研究与开发。换句话说OPC规范是一套公共的软件标准,任何OPC开发人员所开发的OPC软件都要符合这个标准。 OPC技术的特点可概括为如下3个方面:开放性(Openness)、产业性(Productivity)和“即插即用”的互联性(Connectivity),因此可以说, “OPC=Openness+Productivity+Connectivity”,这也是对OPC优点最概括的描述。因此OPC在短时间内取得了飞速的发展。 1.1 OPC服务器的组成 OPC标准采用C/S模式,OPC服务器负责向OPC客户端不断的提供数据。OPC 服务器包括3类对象(Object):服务器对象(Server)、组对象(roup)和项对象(Item)。3类对象都包括一系列接口,关系如图1所示。

用VB开发OPC客户端程序的步骤与实现

(1)建立新工程或项目,在“工程”菜单下选择“引用”,如图5-3所示。只有引用OPCDAAuoto.DLL后,在程序中才能创建服务器对象,然后进行一系列的操作。 (2)在弹出的引用窗口里单击“浏览(B)…”按钮,弹出添加引用窗口,选择OPCDAAuoto.DLL 文件。 (3)在引用窗口里的OPC Automation 2.0前面打钩,按“确定”按钮。 (4)定义全局变量,这样可以在窗体的任何方法的代码内应用。变量类型应该指定为对象型。这些对象最好在窗体的通用部分声明加上“Option Explicit”语句,表示模块里的所有变量都需要显式声明。由于OPC自动化接口的数组的索引要求必须从1开始,而系统默认是从0开始,为了避免错误最好在代码的最初加上“Option Base 1”语句。为了使对象可以处理事件,必须将objTestGrp和objServer的声明中加上“WithEvents”语句,表示声明的对象可以响应事件。 Option Explicit Option Base 1 Dim WithEvents objServer As OPCServer Dim objGroups As OPCGroups Dim WithEvents objTestGrp As OPCGroup Dim objItems As OPCItems (5)连接OPC服务器和建立OPC组 考虑到代码的可反复使用性,采用子程序进行编程。 Sub Connect(strProgID As String, Optional strNode As String) If objServer Is Nothing Then ' 建立一个OPC服务器对象 Set objServer = New OPCServer End If 服务器状态ServerState属性一共有OPCRunning、OPCFailed、OPCNoconfig、OPCSuspended、OPCTest和OPCDisconnected六个值,分别表示正在运行、失败、没有配置、暂停、测试和

最简单的访问OPC服务器方法

最简单的访问OPC服务器 在网上搜了很多关于https://www.doczj.com/doc/7c11279517.html,编写客户端访问OPC服务器的资料,同时也根据KEPWARE提供的案例源代码,同时进行研究,最后花了一个星期的时间进行研究,才粗略有了一点头绪,现共享出来,希望后来的初学者有所帮助。 一.要建一个OPC服务器 1)安装OPC服务器软件,KEPware是大家比较常用的,我使用的是Kepware OPC V4.54。如图,添加CHANNEL,添加TAG.把Plc的点位添加进去,我建了6个变量(item)。具体添加的方法需要自行去学习。我添加的三菱Q系列的PLC,PLC采用以太网通讯的方式,在局部网就可以访问了。 2)设置DCOM,这个步骤很重要,具体的设置方法,网上很多资料,按步骤设置就可以。我原来按照组态王提供的方法,总是不成功,后来上了微软网站,按微软提供的方法设置肯定可以成功。 完成了以上两步,你的电脑就变成OPC服务器了。 二.访问服务器 1.利用组态软件访问OPC服务器。 如果用组态王访问,那就太简单了,左边列表,选opc服务器,点击添加服务器,就会弹出一个窗口,把本机的OPC服务器列成清单。在清单里面就可以发现KEPSERVER的名称: KEPware.KEPserverEx.V4,选择,然后按确定,就完成了添加服务器。

在组态王的数据词典,新建变量,I/O变量,连接设备选择OPC服务器,寄存器可以看到KEPserver的变量(item),建立之后,就可以利用组网王,开发监控应用,组态软件的使用在此就不赘述了,总之,利用组态软件访问OPC是最简单的。 2.用https://www.doczj.com/doc/7c11279517.html,开发客户端访问 访问opc服务器,必须使用OPC基金会提供的OPCdaauto.dll。学习过程,最好下载说明书,

相关主题
文本预览
相关文档 最新文档