OPC服务器开发的几种方法
- 格式:pdf
- 大小:146.55 KB
- 文档页数:4
如何开发OPC Server首先我们先来看一下什么是OPCOPC (OLE for Process Control——用于过程控制的OLE)是基于Microsoft公司的DNA (Distributed Internet Application)构架和COM(Component Object Model)技术的一个工业标准接口,是根据易于扩展性而设计的。
再来了解一下OPC的用途OPC主要适用于过程控制和制造自动化等应用领域。
OPC是以OLE/COM机制作为应用程序的通讯标准。
OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。
OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来然后我们再来看看OPC Server的组成一个设备的OPC Server主要有两部组成,一是OPC标准接口的实现;二是与硬件设备的通信模块。
实现OPC 标准接口[图1]在这些接口中,IOPCServer 是OPC Server的主接口,通过它实现OPC Server在操作系统中的安装和注册。
此接口是必须要实现的,其所有方法也必须实现。
其它的接口都是可选的我们就不做介绍了,下面主要来介绍如何实现IOPCServer接口。
在IOPCServer接口中共有六个法:1、 IOPCServer::AddGroupHRESULT AddGroup( [in, string] LPCWSTR szName,[in] BOOL bActive,[in] DWORD dwRequestedUpdateRate,[in] OPCHANDLE hClientGroup,[unique, in] LONG *pTimeBias,[in] FLOAT * pPercentDeadband,[in] DWORD dwLCID,[out] OPCHANDLE * phServerGroup,[out] DWORD *pRevisedUpdateRate,[in] REFIID riid,[out, iid_is(riid)] LPUNKNOWN * ppUnk );此方法是在OPC Server上建立一个组。
OPC服务器开发
一、OPC服务器开发的原理及流程
OPC服务器开发的原理是使用OPC接口,将工控设备的数据传输到PC
机端,以供操作系统进行进一步的处理。
它由客户端和服务器端组成,客
户端可以访问远程系统中的数据,可以实现远程操作控制;服务器端负责
将从工业设备中采集的原始数据封装成OPC服务发送出去,解决PC机访
问工控设备的问题。
(1)客户端利用OPC接口发出访问请求,即向服务器端发出一个连
接请求;
(2)服务端接收到连接请求,将请求中的数据参数及类型读取出来;
(3)根据数据参数及类型,服务器端读取对应的工控设备的信息;
(4)服务端将读取到的信息封装成OPC服务;
(5)服务端将封装好的OPC服务通过网络发送给客户端;
(6)客户端收到OPC服务后,进行进一步的处理。
二、OPC服务器的开发过程
(1)开发前的准备工作:首先,分析客户需求,特别是对协议的要求,以及工控设备的型号,参数等信息。
(2)选择合适的编程语言:根据客户的需求,以及提供的设备厂家
的资料,确定使用的编程语言,例如C、C++等。
(3)搭建开发环境:安装OPC Server Toolkit工具箱,安装开发环
境中的调试助手。
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技术的出现得到了众多软硬件制造商的支持,并且发展迅速。
通用OPC服务器研究与设计OPC(OLE for Process Control)服务器是一种用于实时过程控制的数据通信标准,由OLE(Object Linking and Embedding)技术发展而来。
随着工业自动化和信息化水平的不断提高,OPC服务器在各个领域得到了广泛应用。
然而,现有的OPC服务器通常针对特定领域或特定厂商的硬件设备进行开发,缺乏通用性和灵活性。
因此,本文旨在研究与设计一种通用的OPC服务器,以提高不同领域和不同设备之间的互操作性和兼容性。
通用OPC服务器应具备以下功能和性能需求:支持多种通信协议和数据格式,如Modbus、Profinet、OPC UA等;支持多元算术运算和逻辑运算,以及多种数学函数;支持实时数据采集和存储,以及历史数据查询;支持多种安全机制,如数据加密、访问控制等;高可靠性和稳定性,能够适应不同的工业环境。
目前,市面上已经存在一些通用OPC服务器产品,如西门子的OpenPCS、艾伦-布拉德利(Alen-Bradley)的PACSystems等。
这些产品具有一些共同特点,如支持多种通信协议、多元算术运算和逻辑运算等。
然而,它们也存在一些不足之处,如对新兴协议的支持不够完善、安全性设计存在漏洞等。
基于需求分析,通用OPC服务器的设计应遵循以下思路:整体架构设计:采用分层架构设计,将数据采集、数据处理、数据存储等功能独立成不同的层次,有利于模块化开发和维护。
功能模块设计:针对不同协议和数据格式,设计通用的数据采集模块和处理模块,提高代码复用率。
同时,设计统一的接口规范,方便不同模块之间的通信和交互。
安全性设计:在数据采集和传输过程中,采取多种安全措施,如数据加密、访问控制等。
对重要数据进行备份和恢复机制,确保数据的可靠性和完整性。
通用OPC服务器的实现过程包括以下几个步骤:选定开发语言和开发环境,如C++、Java等,以及对应的开发工具和平台;设计并实现通用OPC服务器的各个功能模块,包括数据采集、数据处理、数据存储等;按照需求分析中的功能和性能需求,进行模块测试和整体测试;对测试中遇到的问题进行调试和优化,确保通用OPC服务器的稳定性和可靠性。
OPC函数及方法OPC(OLE for Process Control,过程控制的OLE)是一种通信标准,用于自动化系统中的数据交换和远程监控。
OPC的设计目标是提供一种标准的接口,使得不同供应商提供的控制设备和监控系统能够互相通信,实现数据的共享和集成。
OPC的定义包括两个主要部分:OPC服务器和OPC客户端。
OPC服务器是一个中间件,它提供一组标准的API(应用程序编程接口),用于数据传输和通信。
OPC客户端是一个应用程序,它可以访问OPC服务器,并获取或发送数据。
在OPC中,有多种函数和方法可供使用,用于实现数据的读取、写入、订阅和通知等操作。
下面是一些常用的OPC函数和方法:1. OPCEnum函数:用于列举系统中可用的OPC服务器。
该函数返回一个OPC服务器列表,包含每个服务器的名称和描述信息。
2. CoCreateInstance函数:用于创建一个OPC服务器的实例。
该函数需要指定服务器的标识符(CLSID)和接口的标识符(IID),以及其他参数。
3. IOPCServer接口:用于与OPC服务器进行通信。
该接口提供了一组方法,包括连接和断开连接服务器、读取和写入数据、订阅和取消订阅数据等操作。
4. IOPCItemProperties接口:用于获取和设置OPC服务器中的数据项的属性。
该接口提供了方法,可用于获取数据项的名称、数据类型、访问权限等信息。
5. IOPCBrowseServerAddressSpace接口:用于浏览OPC服务器的地址空间。
该接口提供了方法,可用于获取地址空间的层次结构、浏览子节点、获取节点的属性等。
6. IOPCDataCallback接口:用于接收OPC服务器发送的数据更新通知。
该接口提供了方法,用于处理数据变化的事件,并更新相应的数据。
7. IOPCDAsyncIO2接口:用于异步读写数据。
该接口提供了方法,可用于发送异步读写请求、获取读写操作的状态、获取读写操作的结果等。
OPC简介与开发总结背景简介OPC(OLE for Process Control,用于过程控制的OLE)是为过程控制专门设计的OLE 技术,由一些世界上技术占领先地位的自动化系统和硬件、软件公司与微软公司(Microsoft)合作而建立的,并且成立了专门的OPC 基金会来管理,OPC 基金会负责OPC 规范的制定和发布。
OPC 提出了一套统一的标准,采用典型的C/S 模式。
厂商可以开发一个高度优化的、可重用的OPC Server 访问底层的硬件,并将数据以OPC 接口方式提供给任何支持OPC规范的客户端软件,客户就可以按照统一的数据访问标准访问不同厂商的硬件产品。
(IEC61850/MODBUS/DNP) 。
OPC 技术本质是采用了Microsoft 的COM/DCOM(组件对象模型/分布式组件对象模型)技术,COM 主要是为了实现软件复用和互操作,并且为基于WINDOWS的程序提供了统一的、可扩充的、面向对象的通讯协议,DCOM 是COM技术在分布式计算领域的扩展,使COM 可以支持在局域网、广域网甚至Internet 上不同计算机上的对象之间的通讯。
OPC规范简介OPC 规范作为一个工业标准,是开发OPC 服务器与OPC 客户软件之间数据传输的规范,并已形成一个体系。
根据开发软件功能的不同,OPC 制定了以下领域单独规范:数据访问规范:定义了OPC 服务器中一组COM 对象及其接口,并规定了客户对服务器程序进行数据存取时需要遵循的标准。
借助Microsoft 的DCOM 技术,OPC 实现了高性能的远程数据访问能力。
报警和事件处理规范:该规范提供了一种通知机制,在指定事件或报警条件发生时,OPC 服务器能够主动通知客户程序。
历史数据访问规范:该规范提供一种通用历史数据引擎,可以向感兴趣的用户和客户程序提供数据汇总和数据分析等额外的信息。
安全性规范:该规范提供了一种专门的机制来保护OPC 服务器中的现场数据,防止未授权的操作误修改这些参数。
第1章OPC概述关键字:COM DCOM OPC DA 通讯规范 CLIENT SERVER GROUP ITEM 自定义接口自动化接口同步异步回调随着计算机科学技术、工业控制等各方面新技术的迅速发展,计算机监控系统由早期的集中式监控向全分布式的方向发展,计算机监控系统软件随着面向对象技术、分布式对象计算、多层次Client/Server技术的成熟,也从早期面向功能的系统软件,发展为面向具体现场设备为特征的面向对象的监控系统软件。
同时,计算机监控系统规模越来越大,不同厂家生产的现场设备的种类在不断增加,由于不同厂家所提供的现场设备的通讯机制并不尽相同,计算机监控系统软件需要开发的硬件设备通信驱动程序也就越来越多,造成了硬件通讯驱动程序需要不断开发的现象,而基于COM/ DCOM技术的OPC技术,提供了一个统一的通讯标准,不同厂商只要遵循OPC技术标准就可以实现软硬件的互操作性。
OPC(OLE for Process Control,用于过程控制的OLE)是为过程控制专门设计的OLE技术,由一些世界上技术占领先地位的自动化系统和硬件、软件公司与微软公司(Microsoft)紧密合作而建立的,并且成立了专门的OPC基金会来管理,OPC基金会负责OPC规范的制定和发布.OPC提出了一套统一的标准,采用典型的CLIENT/SERVER模式,针对硬件设备的驱动程序由硬件厂商或专门的公司完成,提供具有统一OPC接口标准的SERVER程序,软件厂商只需按照OPC标准编写CLIENT程序访问(读/写)SERVER程序,即可实现与硬件设备的通信。
如图1.1所示,与传统的通讯开发方式相比,OPC技术具有以下优势:·硬件厂商熟悉自己的硬件设备,因而设备驱动程序性能更可靠、效率更高。
·软件厂商可以减少复杂的设备驱动程序的开发周期,只需开发一套遵循OPC标准的程序就可以实现与硬件设备的通信,因此可以把人力、物力资源投入到系统功能的完善中.·可以实现软硬件的互操作性.·OPC把软硬件厂商区分开来,使得双方的工作效率有了很大的提高.图1.1 OPC技术应用前后比较因此OPC技术的出现得到了广大软硬件厂商的支持,并迅速发展。
开发OPC客户端程序时,首先应该生成OPC服务器支持的OPC对象,然后就可以使用OPC对象支持的属性和方法,对其进行各种操作。
这样使得客户程序可以像使用自己支持的数据和功能一样,去使用服务器对象支持的数据和功能。
在VisualBasic6.0里,是以对象为单位对OPC服务器进行访问的。
通过OPC自动化服务器的对象模型,可以得知OPC自动化接口由以下四种对象所定义。
1OPCServer服务器对象OPCServer的一个实例,OPC服务器自动含有一个OPC 组集合对象,并可在其基础上生成一个OPC浏览器对象。
OPCServer服务器对象在使用其它OPC对象前必须生成,也就是说在引用其他对象之前必须先创建OPCServer。
OPCServer对象提供了对数据源访问和通信的方法,其提供了“Connect”方法来连接OPC自动化服务器。
主要的属性有:StartTime(只读属性,服务器启动运行的时间)、CurrentTime(只读属性,返回服务器显示的当前时间)、LastUpdateTime(对于本OPC应用程序的最后数据更新时间)、MajorVersion(只读属性,OPC服务器的主版本号)、MinorVersion(只读属性,OPC服务器的次版本号)、Bandwith(只读属性,返回OPC服务器的不敏感区的百分比)、ServerState(只读属性,返回服务器的运行状态,这个属性是比较重要的,方便客户端程序查询服务器的状态,从而达到排除故障的目的)、ServerName(只读属性,返回客户程序所要连接的服务器名,也就是OPC服务器的ProgID)、ServerNode(服务器所在计算机名或者计算机的IP,用于连接远程的计算机)等。
主要方法有:GetOPCservers(获得己经注册的OPC服务器的程序标识符,即ProgID)、Connect(用来建立与OPC数据存取服务器的连接)、Disconnect(断开与服务器的连接)、CreatBrowser(创建OPC浏览器的对象)等。
AB 5000型PLC之OPC服务建立方法李永红2012-4-24建立AB 5000型PLC之OPC访问服务必须具备以下两个条件:1.能通过网络与AB PLC建立访问连接2.必须安装有RSLinx软件注:1.RSLinx与科尔摩根运动控制器OPC软件GL_OPCServer.exe有冲突,必须先安装后者。
2.此文档中示例OPC服务器的名字为随意设置的,但在实际应用中,请务必设为“ABOPC”!一、建立RSLinx与PLC的连接1.启动软件。
双击任务栏RSLinx图标,打开RSLinx窗口。
如果任务栏里没有此图标,也可从“开始菜单”-“程序”-“Rockwell Software”-“RSLinx”-“RSLinx Classic”中启动引程序。
2.添加驱动。
从软件工具栏上点击图标(或者从菜单“Communications”-“Configure Drivers…”中进入),出现如下画面,在此添加以太网驱动,以连接至PLC。
在“Available Driver Types”下拉列表中选择“EtherNet/IP Driver”,如图所示。
选择好后点击“Add New…”,出现命名画面。
保留默认名称,或者输入不超过15个字符的新名字,点击“OK”。
如果电脑上有多块网卡,在此选择将要使用的网卡,然后点击“确定”。
返回到主“Configure Driver”画面,这时列表中应该已经显示刚才已经建立好的网络驱动,且Status应该为Running(如果不是,点击右边“Start”按钮来启动)。
点击“Close”,退出驱动配置。
3.建立连接。
从软件工具栏上点击图标(或者从菜单“Communications”-“RSWho”中进入),出现如下图画面,在此建立至PLC的连接。
当钩选了“Autobrowse”选项时(默认钩选),程序会自动扫描网络的AB PLC。
如果在列表中显示出来,表示连接已经正确建立。
二、创建OPC Server1.在RSLinx软件工具栏上点击图标(或者从菜单“DDE/OPC”-“TopicConfiguration”中进入),打开OPC Server配置画面,如图所示。
OPC服务器设置1:概述在本章节中,我们将介绍OPC服务器设置的目的和范围,以及本文档的组织结构和使用方法。
2:前提条件在本章节中,我们将列出执行本文档所需的前提条件,例如操作系统要求、硬件要求和软件依赖项。
3:安装OPC服务器在本章节中,我们将提供安装OPC服务器的详细步骤。
包括和安装OPC服务器软件,配置安装选项,并完成安装向导。
4:配置OPC服务器在本章节中,我们将介绍如何配置OPC服务器。
包括打开服务器配置工具,设置通信协议、端口和服务选项,以及配置安全性和权限。
5:添加OPC服务器项在本章节中,我们将演示如何添加OPC服务器项。
包括选择服务器项,定义标签和属性,以及设置数据访问权限。
6:测试和验证在本章节中,我们将讨论测试和验证OPC服务器设置的方法。
包括使用OPC客户端工具进行连接和访问测试,以及检查服务器日志和报告错误。
7:故障排除在本章节中,我们将提供一些常见问题和故障排除方法。
包括解决连接问题、数据访问错误和性能问题的建议。
8:维护和更新在本章节中,我们将介绍维护和更新OPC服务器设置的方法。
包括备份和恢复配置、升级软件版本和更改设置的步骤。
9:附件本文档附带以下附件,供参考和进一步了解:- OPC服务器安装程序- OPC服务器配置示例文件- OPC服务器项配置示例文件附件1: OPC服务器安装程序附件2: OPC服务器配置示例文件附件3: OPC服务器项配置示例文件法律名词及注释:在本文档中使用的法律名词及其相应注释如下:- OPC: OLE for Process Control,一种工业自动化控制系统的标准协议。
opc标准驱动程序实现方法OPC,即开放联机处理,是由美国管理自动化协会(OAA)提出的一种通用标准,它利用网络技术构建了传感器、分析仪和控制器之间的接口,以实现系统之间的数据通讯。
这种标准可以改善传统控制系统中的缺陷,提高系统的运行效率,缩短系统开发周期。
实现OPC标准驱动程序的主要步骤有:在项目中选择合适的OPC服务器,然后安装OPC客户端,此外还要安装OPC服务器提供的API。
最后,需要通过编程实现通讯,以实现协议的读取和写入操作。
首先,选择合适的OPC服务器是实现OPC标准驱动程序的第一步。
一般来说,实现OPC标准驱动程序的服务器有两种:一种是基于标准的服务器,另一种是基于非标准的服务器。
基于标准的服务器具有功能全面、安装方便等特点,而基于非标准的服务器则具有低成本、易用性强等特点。
其次,安装OPC客户端。
在安装OPC服务器之后,还需要安装OPC客户端,以实现系统和传感器之间的数据通讯。
一般来说,OPC客户端可以在线上或者网上免费下载,安装过程中,只需要按照图形化界面的提示即可完成安装。
然后,安装OPC服务器提供的API。
OPC服务器提供的API是实现OPC标准驱动程序的基础,一般来说,API可以在网上免费下载,也可以通过联系厂商购买,安装过程中,需要严格按照步骤进行操作。
最后,使用编程语言实现OPC标准驱动程序的通讯操作。
OPC标准驱动程序可以使用多种编程语言实现,如C#、和C++等,编程过程中,需要熟悉API的操作方法,以实现系统之间的数据读取和写入。
综上所述,实现OPC标准驱动程序的主要步骤是:选择合适的OPC服务器,安装OPC客户端,安装OPC服务器提供的API,以及使用编程语言实现通讯操作。
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 Server集成方案一、OPC技术简介OPC全称是OLE for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。
在过去,为了存取现场设备的数据信息,每一个应用软件开发商都需要编写专用的接口函数。
由于现场设备的种类繁多,且产品的不断升级,往往给用户和软件开发商带来了巨大的工作负担。
通常这样也不能满足工作的实际需要,系统集成商和开发商急切需要一种具有高效性、可靠性、开放性、可互操作性的即插即用的设备驱动程序。
在这种情况下,OPC标准应运而生。
OPC标准以微软公司的OLE技术为基础,它的制定是通过提供一套标准的OLE/COM接口完成的,在OPC技术中使用的是OLE 2技术,OLE标准允许多台微机之间交换文档、图形等对象。
OPC技术可以应用在许多应用程序中,如它们可以应用于从SCADA 或者DCS系统的物理设备中获取原始数据的最低层,它们同样可以应用于从SCADA 或者DCS系统中获取数据到应用程序中。
实际上,OPC设计的目的就是从网络上某节点获取数据。
通过OPC标准,完全可以创建一个开放的、可互操作的控制系统软件。
OPC采用客户/服务器模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,完成了系统的集成,提高了系统的开放性和可互操作性。
OPC现已成为工业界系统互联的缺省方案,为工业监控编程带来了极大的便利。
二、众山OPC Server集成方案介绍近年来, GPRS/CDMA等无线网络通讯方式开始引入工控领域,各种基于GPRS和CDMA网络的测控方案也在实际项目中逐步应用, 但对于工控行业来讲, GPRS/CDMA是一项较新的应用技术,无线网络的组网方式及通信过程比有线网络更复杂,因此对于用户来说, 组态软件现有集成方案并不理想, 主要体现在以下几种情况:1)部分工控行业组态软件(主要是国外公司提供的组态软件),没有提供对GPRS/CDMA网络通信方式的支持,所以只能在其有的通信接口方式上进行变通,比如采用透明socket方式,或Socket转虚拟串口方式,这种方式存在的问题是没有考虑到无线网络通信的特点, 集成度低、可靠性也较差。
OPC server的开发相对OPC client 更加困难,OPC server 的开发主要应用COM技术,主要应用书籍为潘爱民写的《COM入门和应用》,大量的技术有很大的可重用性,在开发完一个程序后,基本上所有的东东都可以被重用,并且重新发布。
开发方式有三种:1。
简单的:就是应用已经有的如DDE to OPC 或串口 to OPC,modbus to OPC等软件把您的设备变成相关的OPC服务器。
方法简单实用,费用合理快速,让你马上搭上OPC的快车。
主要缺陷:你的设备必需是标准设备或更标准设备相容。
这种方式比较适合产品多的厂家快速的转型,或提供OPC相关产品。
2.。
一般的:应用第三方的开发包开发,这种方式相对来说减少了开发的难度,而且第三方有相应的技术支持,开发商专业做这种产品,产品有一定的稳定性。
这种方式对开发包有依赖性,并且OPC服务器的稳定性依赖第三方的开发水平。
本方法适于老板要求你马上开发出OPC产品是^_^,或者入门者使用。
国内相关的开发包有华富慧通的和拓林的开发包。
国外的可参考:/source.php上面的还可以,不过现在发现也有死链接,不过他的提示确实不错。
3。
有难度的:应用COM开发。
这种开发方式是最可以学习到东西的。
但需要有一定的基础,而且需要对英文有一定的认识度。
主要涉及的知识有一下几点。
有一定的C/C++编程经验----代码是一定要写的能应用VC开发环境------没有屠龙刀怎么能行了掌握一定的COM知识-----进阶的东东阅读相关OPC开发文档-----葵花宝典开发-------------自己杀的猪肉才好吃Hash表相关内容,主要用于大量节点时查询-----杀人于无形基本就按照这个学习思路,对于前两项有太多的介绍了,在此不说了。
COM技术学习可参考VChelp /的COM内容,其他网站都是随便说说而已。
书籍可以看潘爱民的《COM原理和应用》,《COM本质论》等书籍。
VC和VB开发OPC客户端程序开发步骤VC++和VB开发OPC客户端程序开发步骤双击自动滚屏发布者:admin发布时间:2009-11-18阅读:168次OPC客户端程序就是一种COM客户端程序,实现COM客户端程序编程模型需要六个基本步骤。
根据所在的程序设计环境或应用框架,有些步骤也许可以由编译程序自动实现。
在C++中,接口是通过指针引用的,而在Visual Basic中使用的默认接口。
(1)初始化COM库。
在C++中完成此功能的是调用COM库API(应用程序编程接口)函数CoInitialize或CoInitialzeEx。
Visual Basic中可以自动进行初始化。
(2)获得初始接口的指针。
在C++中,可以通过调用CoCreateInstance(用于本地)或CoCreateInstanceEx(用于远程)来获得接口指针。
在Visual Basic中,可以使用操作符New或CreateObject来获得接口引用。
(3)通过接口指针可以调用该接口的方法。
(4)如果要调用其它接口的方法,可以执行QueryInterface。
在C++中,通过接口指针调用QueryInterface。
在Visual Basic 6.0中,可以通过执行一个Set操作实现。
(5)在C++中,当不再使用接口指针时,要调用Release将其释放。
在Visual Basic 中,引用在其作用域外会自动释放,也可以显式地把它设置为“Nothing”。
(6)当用完COM时,你要调用CoUninitialize来取消COM初始化。
Visual Basic可以自动实现这一步。
通过这六个基本步骤的比较,就比较清楚地知道采用Visual Basic 开发环境是比较容易和方便的。
就开发语言本身而言,Visual Basic也比Visual C++语言容易掌握。
而且组态软件一般就有类似的Visual Basic脚本语言,对于本来就使用组态软件开发监控软件的用户来说,也是比较容易掌握Visual Basic开发OPC客户端程序。
OPC服务器开发的几种方法陈丹丹钱美夏立邵英(武汉海军工程大学 湖北 武汉 430033)摘要:简要介绍了OPC DA规范,描述了OPC DA(数据访问)服务器开发的三种方法:使用MFC的COM库函数开发OPC服务器、通过ATL开发OPC服务器和利用工具包快速开发OPC服务器,最后对三种方法的特点作出了比较。
关键词:OPC;ATL;服务器开发Abstract: Simply describe the OPC DA specification ,then three Methods of server model design based on OPC DA(Data Access) specification are introduced. The three methods are using MFC ATL and the fast developmentToolkit to develop OPC server.At last, compare the characteristics of three methods .Key words: OPC;ATL;Server development1.引言:OPC DA (OPC 数据访问规范)是OPC基金会最早发布的一个工业标准,主要是对现场设备的在线数据进行存取,目前已经发展到OPC DA 3.0版本。
OPC基于微软的OLE/COM原理,采用客户/服务器模式。
OPC 数据访问服务器主要由服务器对象、组对象和项对象组成。
OPC 服务器对象维护服务器的有关信息并包容OPC组对象,可以动态的创建或释放组对象;而OPC 组对象维护有关其自身的信息并包容OPC项,逻辑上管理OPC项;OPC项则标识了与OPC服务器中数据的连接。
OPC项不可以由OPC客户直接操作,所有对OPC项的操作都是通过包容该项的OPC组对象进行的。
而OPC服务器对象和组对象是聚合关系,即OPC服务器对象产生OPC组对象后,将组对象的指针传递给客户,由客户之间操作对象。
《OPCDA服务器与客户程序开发指南》OPCDA(OLE for Process Control Data Access)是一种通信协议,用于实现工业自动化系统中的数据访问功能。
OPCDA服务器与客户程序开发指南是为了帮助开发人员理解和掌握OPCDA服务器与客户程序的开发过程而撰写的一本指南。
首先,本指南将介绍OPCDA的基本原理和概念,包括OPCDA的架构、工作原理、数据通信方式等。
然后,指南将详细讲解如何开发OPCDA服务器。
开发OPCDA服务器需要了解如何定义OPCDA的数据模型、编写OPCDA 服务器程序、实现数据通信功能等。
指南将从这些方面逐步介绍各种开发技术和方法。
接下来,指南将介绍如何开发OPCDA客户程序。
开发OPCDA客户程序需要了解如何访问OPCDA服务器、获取数据、实时监控等。
指南将从这些方面逐步介绍开发技术和方法。
在指南的后部分,将介绍一些实际开发中常见的问题和解决方法。
例如,如何处理连接错误、如何处理数据变化等。
指南将提供一些实用的开发经验和建议,帮助开发人员克服可能遇到的困难和障碍。
本指南还将附带一些实例代码和开发工具的使用方法。
这些示例代码和开发工具将帮助开发人员更好地理解和应用OPCDA的开发技术。
指南还将提供一些参考资料,包括相关的文档、书籍、网站等。
通过阅读《OPCDA服务器与客户程序开发指南》,开发人员可以获得关于OPCDA服务器与客户程序开发的全面和详细的指导。
本指南旨在帮助开发人员提高开发效率,减少开发成本,提高软件质量,从而更好地满足工业自动化系统的需求。
OPC及OPC服务器的设计与实现上海自动化仪表股份有限公司技术中心张庆军摘要:简要介绍了OPC原理,OPC规范以及小型DCS控制系统OPC服务器的设计与实现。
关键词:OPC COM DCOM DCS一引言OPC(OLE for process control)是一个工业标准。
它是由一些世界上占领先地位的自动化系统和硬件、软件公司与微软合作而建立的、满足开放性的和互操作性的接口标准。
OPC标准的建立基于微软的COM技术规范,并由OPC基金会这个国际组织管理.OPC为不同厂商的硬件设备、软件和系统定义了公共的接口,使得过程控制和工厂自动化中的不同系统、设备和软件之间能够相互连接、通信、操作。
一般在控制系统中,包含过程画面的软件(如SCADA软件)在与现场设备通信的时候,常采用如下的方法:1,采用标准的通信协议,如profibus、modbus、HART、CAN总线等,因为监控管理软件与现场设备采用同样通信协议,所以监控管理软件不需要对现场设备的驱动程序.2,对于没有采用标准的通信协议的设备,监控管理软件需要在设备制造商的配合下为这些设备开发驱动程序.这种方式虽然执行效率比较高,但兼容性差,软件供应者必须对每一种接入的设备开发驱动程序,设备制造商也必须提供设备的通信协议.3,通过OPC 这个开放协议与过程控制或其他系统软件进行通信,这种方式的优点在于:不管硬件设备是否使用标准的通讯协议,制造商只需提供一套OPC 服务器,即可支持大部分的监控等软件,也不需要将自己的通信协议等控制系统中往往混合有多种协议,有符合不同的现场总线标准的设备,也有厂商使用自定义通信协议的设备,因而开放性很差。
提供过程画面的软件在配置这样的系统的时候会非常困难,用户往往只能选择单一设备制造商提供的产品,但如果每个设备的通信协议都配置了OPC服务器,由OPC服务器封装这些协议,并通过标准的接口给提供过程画面的软件,这样提供过程画面的软件就可以通过标准的OPC接口实现与设备的互连,对于软件来说就不需要实现诸多的通信协议,对于用户来说就可以提高选择产品的自由度。
OPC服务器开发的几种方法陈丹丹钱美夏立邵英(武汉海军工程大学 湖北 武汉 430033)摘要:简要介绍了OPC DA规范,描述了OPC DA(数据访问)服务器开发的三种方法:使用MFC的COM库函数开发OPC服务器、通过ATL开发OPC服务器和利用工具包快速开发OPC服务器,最后对三种方法的特点作出了比较。
关键词:OPC;ATL;服务器开发Abstract: Simply describe the OPC DA specification ,then three Methods of server model design based on OPC DA(Data Access) specification are introduced. The three methods are using MFC ATL and the fast developmentToolkit to develop OPC server.At last, compare the characteristics of three methods .Key words: OPC;ATL;Server development1.引言:OPC DA (OPC 数据访问规范)是OPC基金会最早发布的一个工业标准,主要是对现场设备的在线数据进行存取,目前已经发展到OPC DA 3.0版本。
OPC基于微软的OLE/COM原理,采用客户/服务器模式。
OPC 数据访问服务器主要由服务器对象、组对象和项对象组成。
OPC 服务器对象维护服务器的有关信息并包容OPC组对象,可以动态的创建或释放组对象;而OPC 组对象维护有关其自身的信息并包容OPC项,逻辑上管理OPC项;OPC项则标识了与OPC服务器中数据的连接。
OPC项不可以由OPC客户直接操作,所有对OPC项的操作都是通过包容该项的OPC组对象进行的。
而OPC服务器对象和组对象是聚合关系,即OPC服务器对象产生OPC组对象后,将组对象的指针传递给客户,由客户之间操作对象。
这样既提高了数据存取的速度也易于功能扩展,体现了组件软件的重用性。
它支持COM技术的双向通信机制,具有事件驱动功能,当OPC服务器的数据发生变化时它能自动通知OPC客户。
在OPC1.0规范中事件驱动使用的是COM的通报连接机制,在OPC2.0规范中又增加了对连接点的支持。
而一般的数据采集应用程序,从数据源读数据是主动的,相当于客户主动访问服务器的数据。
这就要求客户不断地查询服务器的数据,不管服务器的数据是否发生了变化,增加了系统的开销。
因此OPC DA的效率大大高于一般的数据采集应用程序。
2.OPC 服务器开发概述OPC 服务器的设计与实现是一个较为复杂与繁重的任务,设计者需要有很高的编程水平,熟悉OPC规范,同时也必须掌握相应的硬件产品特性。
OPC 数据服务器大致可以分解为不同的功能模块:OPC 对象接口管理,Item 数据项管理以及服务器界面和设置等[1]如图1。
图1.OPC服务器结构图一个设备的OPC服务器主要由两部分组成,OPC标准接口的实现和与硬件设备的通信。
OPC服务器的开发必须以OPC规范为基础,实现各个对象及其接口。
下面将就OPC标准接口的实现方法进行重点讨论。
3.OPC DA 服务器开发方法3.1 通过MFC提供的COM支持开发OPC服务器开发一个OPC 服务器主要有以下几个步骤[2][3](1) 定义OPC 数据服务器的名称(Prog ID) 和类标识(CLSID),然后根据规范对各个接口ID 进行定义。
(2) 实现OPC 数据服务器类厂对象。
从IClassFactory 基类派生出TestOPCClassFactory 类, 然后重载CreateInstance () 成员函数, 通过该函数创建CTestServer服务器对象。
(3) 设计OPC 对象。
首先通过继承IUnknown 类派生出OPCServer,OPCGroup 和OPCItem 三个类,分别对应OPC服务器对象,组对象和项对象,并重载IUnknown 类中的接口查询和引用计数函数。
然后将OPC 基金会网站上提供的相应的头文件添加到工程中,通过继承这些接口派生出新的接口类,实现每个接口的成员函数。
在OPCServer 和OPCGroup 类中增加指向相应接口类的指针成员变量,接着修改接口查询函数。
当客户程序查询某一接口时,实例化接口类,并返回接口指针变量。
客户程序再通过该接口指针进一步调用接口成员函数。
(4)数据存储区的设计。
可利用C++标准模板库(STL)中的包容器,通过包容器管理OPC服务器中的数据项。
由于OPC 服务器既要对底层硬件进行读写操作,又要通过OPC接口与客户程序进行交互,所以对数据存储区的操作需要采用多线程模型,以保证数据存取的效率。
为避免不同线程同时对数据区中的数据进行操作,还须考虑对临界区的互斥控制。
(5)界面设计。
可以设计类似Windows 中资源管理器的用户界面,将各数据项用树型结构表示,然后设计数据项和硬件的设置界面,并与数据存储区和硬件接口联系起来,实现相应的组态功能。
在OPC服务器程序关闭时,需要将数据项的属性以及硬件设置参数作为组态文件保存起来,而在程序运行时能自动调入组态文件完成初始设置。
(6)根据硬件的种类和特性,自行开发驱动程序,或者调用硬件厂商提供的I/ODLL 实现对现场设备进行设置以及数据存取的功能。
(7)从OPC 基金会网站上获取OPC 标准组件并在服务器上注册,然后利用OPC 客户端程序进行测试。
3.2 通过ATL开发OPC服务器ATL是VC++提供的活动模板库,是专门针对COM应用开发的。
它内部的模板类实现了COM的一些基本特征,比如一些基本的COM接口,也支持COM的高级特征,如双接口,连接点等。
利用ATL开发OPC服务器的主要步骤如下:[4](1)用ATL 创建一个Exe 进程外服务器。
将OPC DA规范中的IDL 文件, 加入项目中。
进行编译,ClassView中出现很多接口,双击接口可以看到每一接口下的方法。
(2)Server对象的添加。
创建一个简单的ATL 对象,命名为TestServer,支持连接点。
在ATL 生成的对象的IDL 描述中加入OPCServer 对象接口。
在ClassView中右键单击TestServer 类, 选择Implement Interface 和Implemert Connection Point , 并选择要完成添加的接口,可完成OPC接口和连接点接口框架的添加。
然后按OPC DA规范实现其它细节。
另外还要在stdafx.h 中加入# include “OPCDA.h”,# include “opccomn.h”这样就可使用规范定义的COM 接口。
还要在OPCDA.cpp 文件中加入:# include “OPCDA_i.c”,# include “opccomn_i.c”只有这样才可使组件对象的接口暴露给客户程序。
(3)Group对象的添加与Server对象的添加相似, 设组对象为TestGroup, 但由于它不需要在系统中注册, 也不需要类ID 和类厂, 要在工程的OPCDA.cpp文件的对象映射中将其删除掉, 把CTestGroup定义处的public CComCoClass <CTestGroup , &CLSID_TestGroup > 代码删除。
BEGIN_OBJ ECT_MAP (ObjectMap)/ / OBJ ECT_ ENTRY (CLSID_TestGroup ,CTestGroup) / / 删除END_OBJ ECT_MAP ()(4)Item可以通过定义一个一般的类或一个结构来完成, 并根据实际情况定义并实现一些特殊属性和方法, 如增加读取存储区或硬件设备数据的函数等。
(5)数据存储区的设计,硬件驱动程序,OPC服务器的注册与前面相似。
3.3 通过开发工具开发OPC服务器OPC服务器开发工具的目的是将MicroSoft 公司的OLE/COM/DCOM技术和OPC 的技术细节隐藏起来,使用户开发OPC 服务器的工作集中在自己特定的数据采集任务上来。
目前OPC 数据服务器开发工具在国际工业控制领域中使用已经相当广泛,比较著名的供应厂商有FactorySoft, Softing 等公司。
快速开发工具一般是以动态连接库DLL 形式提供给用户,用户只要按照动态连接库中提供的应用编程接口API,即可完成OPC 服务器的开发。
以北京华富惠通技术有限公司推出的OPC 数据访问服务器快速开发工具包HuafuOPC ToolKit 为例,在建立OPC 服务器的过程中,用户必须完成的工作包括:[5] (1)建立应用程序,加载OPC 运行库;(2)按照OPC Toolkit 提供的接口进行正确的函数调用;(3)与设备进行通信。
其中调用OPC Toolkit 的接口流程如下:①用户首先调用InitOPCSvr 进行初始化;②初始化成功之后,注册回调函数;③用户通过CreateTag 向OPC 运行库可添加多个标签;④通过Set TagProperties 函数设置标签属性;⑤调用RunSvr 函数,运行服务器,这时,服务器可以向客户端提供服务;⑥用户和驱动通信,得到标签数据后,刷新OPC 运行库中标签的数据;⑦在服务器退出时,调用UninitOPCSvr。
4.几种方法的分析比较MFC通过多重继承的方式来实现COM对象,具有简单,易于管理、能够深入的掌握COM内部技术细节等特点。
但是因为要从底层开始编写代码,工作相对烦琐,工程也相对复杂。
ATL是通过多继承方式来实现COM对象的(就是COM类是从多个ATL模板类继承过来),然后在COM类中实现COM接口。
ATL是专门用来开发小型的、快速的COM组件,其代码也是经过优化的。
而ATL一个最大的不足就是因为要简化和优化代码,程序中使用非常多的模板类,开发者在开发的过程中,不仅仅要非常熟悉COM技术,还要另外花功夫来研究ATL中各个模板类间的关系,否则无法深入的编程。
另外使用ATL需要对COM 机制有非常深入的理解,并掌握许多原始的Windows API.对于第三种方法,开发人员不需要了解COM 机制及OPC 数据访问服务器接口细节。
开发简单容易,缩短开发周期,节省投资成本,能够满足一些用户的需要,但是由于以动态连接库DLL 形式提供,缺少一些灵活性。
总之,三种方法各有利弊,可根据实际情况确定采用何种方法。
参考文献:[1]马欣、李京、程峥嵘,OPC服务器与客户程序的设计,自动化仪表,2002年7月第23卷第7期[2]曹建、杨邦荣,基于模板库技术的OPC 服务器,电力系统自动化,2001.12[3]李勤、党选举、向荣,基于COM的OPC技术的研究和实现,微计算机信息,2002年第18卷第8 期[4]司纪刚,OPCDA服务器与客户程序开发指南[5]CONTROX-工具包用户手册作者简介:陈丹丹(1981-)女(汉),黑龙江鹤岗人,硕士研究生,研究方向为现场总线。