如何开发OPCServer
- 格式:doc
- 大小:19.50 KB
- 文档页数:4
OPCSERVERDCOM配置方法OPCSERVERDCOM是一种用于实现互操作性数据访问的技术,通过使用DCOM(分布式组件对象模型)允许不同平台和应用程序之间的通信。
在配置OPCSERVERDCOM之前,我们需要确保已经安装了OPC Server和DCOM组件。
本文将详细介绍OPCSERVERDCOM的配置方法,并提供一些最佳实践。
第一步:检查OPC Server的安装和配置状态在配置OPCSERVERDCOM之前,首先确保OPC Server已经安装并正确配置。
检查OPC Server的运行状态、配置文件和日志文件,以确保其正常工作。
确定OPC Server是否支持DCOM,并确认当前的OPC Server是否已经允许远程访问。
第二步:配置DCOM组件配置DCOM组件是使OPCSERVERDCOM正常工作的关键步骤。
按照以下步骤进行配置:2.导航到“计算机”>“我的电脑”>“DCOM配置”:在组件服务控制台中,依次展开“计算机”>“我的电脑”>“DCOM配置”。
4. 配置OPC Server应用程序的属性:右键点击OPC Server应用程序,选择“属性”。
在属性窗口中,选择“安全”选项卡。
5. 配置访问权限:在安全选项卡下,配置访问权限。
可以设置哪些用户或组可以访问OPC Server,并确定用户的访问级别。
推荐配置只有必要的用户和组可以访问OPC Server。
6.配置启动和激活权限:在安全选项卡下,配置“启动和激活权限”。
同样,只允许必要的用户和组拥有启动和激活权限。
7. 配置默认属性:在“属性”窗口中,选择“默认属性”选项卡。
在这里,可以配置OPC Server的身份验证方式和默认权限。
根据需求进行配置。
第三步:配置防火墙和安全策略为了确保OPCSERVERDCOM的安全性和可靠性,还需要配置防火墙和安全策略。
以下是一些建议的配置方法:1. 配置防火墙规则:如果操作系统上启用了防火墙,需要允许OPC Server和DCOM的通信。
OPCSERVERDCOM配置方法以下是OPC Server DCOM配置的步骤:步骤1:选择适当的用户账户选择一个适当的用户账户来运行OPC Server。
这个账户必须在本地和远程计算机上都可用,并且需要具有足够的权限来启动OPC Server和访问相关资源。
通常建议创建一个专用的用户账户来运行OPC Server。
步骤2:配置OPC Server在OPC Server的设置中,确保配置正确的IP地址和端口号,这将用于后续DCOM配置中。
步骤3:打开DCOM配置工具步骤4:选择默认的访问权限在DCOM配置工具中,选择"我的电脑"(或"计算机")并右键点击,选择"属性"。
在弹出的对话框中,选择"默认COM安全设置"选项卡。
步骤5:设置默认的访问权限在"默认COM安全设置"选项卡中,选择"访问权限"部分,并点击"自定义级别"按钮。
在弹出的对话框中,选择"自定义"选项。
步骤6:配置访问权限在"自定义访问权限"对话框中,确保"启用"选项被选中。
然后,为各个用户组或用户指定相应的访问权限,如"启用"、"本地启动"、"远程启动"和"本地激活"等。
步骤7:配置安全权限在"默认COM安全设置"选项卡中,选择"安全"部分,并点击"自定义级别"按钮。
在弹出的对话框中,选择"自定义"选项。
步骤8:配置安全权限在"自定义安全权限"对话框中,确保"启用"选项被选中。
然后,为各个用户组或用户指定相应的安全权限,如"启用"、"本地启动"、"远程启动"和"本地激活"等。
OPC Server综合版(V3.4)软件安装规范浙江中控技术有限公司OPC Server综合版(V3.4)软件安装规范安装环境在安装OPC Server综合版(V3.4)软件前,必须确认所用的操作系统是Windows 2000且已经安装了补丁软件Service Pack4.0,以及Internet Explorer5.5以上版本的浏览器。
在此安装规范中不再针对此方面的安装做描述。
OPC Server综合版(V3.4)软件安装安装过程中,只需将软件的安装光盘插入光驱,运行安装程序,出现以下安装界面。
按照安装向导的提示,一步一步进行安装。
1、将目标文件夹设置为缺省的C:\JXServer;2、选择合适的模入类型,通讯协议和主控卡版本。
3、选择程序文件夹;4、点击“下一步(N)”后,开始软件的安装过程;5、开始软件狗驱动程序的安装;6、在语言选择框中选择“U.S.English”。
7、进入软件狗安装的“Welcome(欢迎)”界面之后,点击“Next”,以继续安装软件狗的驱动程序。
8、程序复制结束,出现“Installation status(安装报告)”后点击“Next”,进入“Finished”界面。
9、点击“Finished”完成软件狗驱动程序的安装;10、软件狗驱动程序安装完成后,结束OPC Server综合版(V3.4)软件的安装。
OPC Server综合版(V3.4)软件卸载1、选择“开始 \ 设置 \ 控制面板”。
2、选中“添加/删除程序”,再选择“SUPCON OPC Server综合版(V3.4)”,删除。
3、弹出如下对话框,请确认:4、选择“确定”后,卸载程序自动完成卸载功能。
OPC Server综合版(V3.4)用户使用说明书浙江中控技术有限公司声明:严禁转载本书的部分或全部内容。
在不经预告和联系的情况下,本说明书的内容有可能发生变更,请谅解。
本说明书所记载的内容,不排除有误记或遗漏的可能性。
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技术的出现得到了众多软硬件制造商的支持,并且发展迅速。
利用visual basic所开发的opc客户端应用程序主要采用自动化通信接口和opc服务器程序实施通信。
而opc基金会提供的opc 自动化接口 opcdaauto.dll动态链接库集成了所有用于对opc服务器进行访问的对象、属性和方法,为利用visual basic开发opc 客户端应用程序提供了极大方便。
程序设计时,opc客户程序应当首先生成opc服务器支持的opc对象,然后再使用opc对象支持的属性和方法,实现对opc服务器的操作和访问。
opc数据访问对象主要包括opc服务器(opcserver)、opc组集合(opcgroups)、opc组(opcgroup)、opc标签集合(opcitems)、opc标签(opcitem)、opc浏览器(opcbrowser)等几个部分。
程序设计时,要首先在visual basic环境下选择对opc automation 2.0接口的引用,此时,opc对象会被自动添加到正在开发的工程项目中,然后,再根据需要建立这些对象的实例并利用其属性和方法来实现对opc服务器的访问。
对opc服务器的访问主要包括声明opc对象实例、连接opc server、添加标签变量、读写opc服务器(同步/异步)、断开连接等几个步骤。
opc对象实例的声明主要包括对opc服务器、opc组集合、opc 组、opc标签集合、opc服务器句柄的声明及程序所需要的其它实例的声明。
opc客户端和opc server的连接主要靠调用opc服务器对象实例的connect方法函数来完成,例如,连接本地计算机dassidirect和rslinx opc server 的代码分别为connect ("archestra.dassidirect.1")和connect("rslinx opc server")连接网络远程计算机(ip地址为10.144.45.45)上dassidirect 和rslinx opc server 的代码分别为connect ("archestra.dassidirect.1", "\10.144.45.45")和connect ("rslinx opc server", "\10.144.45.45")需要说明的是当进行远程opc连接时,必须在远程计算机上运行dcomcnfg程序,并启动该计算机opc服务器的dcom服务。
OPCServer 使用说明上海迅饶自动化科技有限公司2011年12月目录1、OPCSRV简介 (1)2、OPC技术介绍 (1)3、OPCSRV说明 (2)3.1运行环境 (2)3.2程序标识 (2)3.3程序特性 (2)4、快速入门 (3)4.1关于驱动 (3)4.2关于设备 (3)4.3关于组 (3)4.4关于标签 (3)5操作步骤 (3)5.1、增加新驱动 (3)5.2增加设备 (4)5.3增加组或者标签 (5)6、DCOM配置说明 (5)6.1.服务器的配置 (5)6.2.客户端的配置 (17)6.3.OPC客户端连接OPCS RV过程 (17)1、OPCSrv简介OPCSrv服务器是国内最好的OPC服务器之一。
从2005年诞生,经过几年的不断完善,OPCSrv服务器通过了OPC基金会的CTT测试,性能卓越,运行稳定可靠,并不断应用到工业现场中。
OPCSrv.exe支持OPC DA1.0和2.0规范,同时集成了串口、网口等多种协议。
并提供一个简易的人机界面给用户,用来编辑和配置TAG;保存或者打开scd工程文件;导入或者导出CSV档;克隆设备、组和TAG对象;多重复制TAG;管理所有的驱动插件;还提供启动OPC客户端程序进程、Ping远程计算机、注册和注销OPC服务器等辅助功能。
2、OPC技术介绍OPC(OLE for Process Control,用于过程控制的对象链接和嵌入)是基于Microsoft的OLE(Object Linking and Embedding,对象链接和嵌入)/COM(Component Object Model,组件对象模型)技术,为解决工业客户机与各种设备驱动程序间通讯而产生的一项工业技术规范和标准。
OPC技术规范是OPC基金会制定的,它提供了统一的数据访问软硬件接口。
由于OPC技术比传统数据存取方式(驱动程序法和动态数据交换法)更具开放性和先进性,已经得到越来越多的工控领域硬件和软件制造商的承认和支持,实际上已成为工业控制软件公认的软件标准。
ModbusOPCServer操作说明及组态王连接OPC服务器步骤Modbus是一种通信协议,广泛应用在工业自动化领域。
OPC(OLEfor Process Control)是一种标准的工业自动化通信协议,用于实现不同设备和软件之间的数据交换。
Modbus OPC Server则是将Modbus协议转化为OPC协议,使得Modbus设备可以与OPC客户端进行通信。
下面是Modbus OPC Server的操作说明及组态王连接OPC服务器步骤。
步骤1:安装Modbus OPC Server软件步骤2:配置Modbus设备打开Modbus OPC Server软件,点击“配置”按钮进入配置界面。
在此界面上可以添加和配置Modbus设备。
点击“添加设备”按钮,根据设备的类型和通信参数进行配置。
配置完成后,点击“保存”按钮保存配置。
步骤3:配置OPC服务在Modbus OPC Server软件中,点击“OPC服务”按钮进入OPC服务配置界面。
在此界面上可以配置OPC服务的名称、端口号等信息。
点击“保存”按钮保存配置。
步骤4:启动OPC服务在OPC服务配置界面,点击“启动”按钮启动OPC服务。
启动成功后,软件会显示OPC服务的活动状态。
步骤5:连接组态王在组态王软件中,打开工程文件。
在“通信”模块中,找到OPC服务器的配置选项。
输入Modbus OPC Server的IP地址和端口号,并点击“连接”按钮。
如果连接成功,组态王将显示OPC服务器的活动状态。
步骤6:添加Modbus数据点在组态王的工程文件中,通过拖拽或手动输入的方式,添加Modbus 数据点。
根据Modbus设备的地址和功能码,设置数据点的属性和通信参数。
步骤7:实时监控和控制在组态王软件中,可以使用图形界面实时监控和控制Modbus数据。
通过设置不同的控件和动作,可以读取和写入Modbus设备的数据。
通过以上步骤,可以实现Modbus设备与组态王之间的数据交换。
第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客户端的研究与开发随着计算机技术的发展,计算机在工业控制领域发挥着越来越重要的作用。
各种仪器仪表都提供了与计算机通信的协议相通的功能。
但是,不同厂家产品的协议互不相同,即使上一同一家公司的不同产品与计算机之间的通信协议也不尽相同。
因为不同的语言和运行环境对驱动程序的接口有不同的要求,所以不仅软件厂商需要编写大量设备驱动,硬件厂家也需要为应用程序开发不同的驱动,这样软硬件厂商无疑都加大了开发成本,同时此方案也不符合软件工程的发展趋势,在这样的背景下,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)。
使⽤C#开发OPCServer服务器源码⽰例1、需要的DLL⾸选将需要dll放置您的开发⽬录下,本⽰例放在⼯程⽬录下的bin\x86\debug⽬录下需要的dll如下图:2、添加引⽤在VS的项⽬中添加对FKOPCSrvApi的引⽤然后在源码⽂件中添加 using FKOPCSrvApi;3、OPC Server 接⼝开发(1)注册OPC服务器OPCSvrHelper.RegisterOPCSrv(string path,string UUID,string OPCServerName)此函数为静态函数,只注册⼀次即可,不⽤每次启动软件都注册。
l path – 为本exe的路径l UUID – OPC服务器的唯⼀识别码,可⾃⾏设定l OPCServerName – OPC服务器的名称(2)启动OPC服务器InitOPCServer(string UUID)(3)创建OPC 组及OPC TagCreateTag(string groupName,string tagName,object defaultVal,bool isWriteable)l groupName – OPC组名l tagName – OPC Tag名l defaultVal – OPC Tag的默认值l isWriteable – 是否可写(4)更新OPC Tag的值UpDateTagVal(string groupName,string tagName,object val)本函数可以实现对指定组名和Tag的值进⾏更新l groupName – OPC组名l tagName – OPC Tag名l val – 更新的值注意:若指定的groupName和tagName不存在,则会触发异常(5)注销OPC服务器OPCSvrHelper.UnRegisterOPCSrv(UUID, string OPCServerName)静态函数l UUID – OPC服务器的唯⼀识别码,可⾃⾏设定l OPCServerName – OPC服务器的名称(6)读取OPC Tag值object ReadTag(string groupName,string tagName)l groupName – OPC组名l tagName – OPC Tag名返回:object类型的值注意:若指定的groupName和tagName不存在,则会触发异常(7)删除OPC TagRemvoeTag(string groupName,string tagName)l groupName – OPC组名l tagName – OPC Tag名事件名:TagWritedByClientEvt事件原型:delegate void TagWritedByClientDelegate(string TagName, Object Value, UInt32 ResultCode)TagName -- OPC组名.OPCTag名Value – 更新的值ResultCode – 信号质量4、注意事项(1)⽤VS新建的项⽬必须为x86,否则在64位计算机会出现异常(2)在测试时,若您的计算机没有安装组态软件,可能需要⾸先安装OPC国际组态提供的“OPC Core Components Redistributable”,本安装包在源码⽂件中附带。
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本质论》等书籍。
opc ua server开发实例OPC UA(Open Platform Communications Unified Architecture)是一种用于通信和数据交换的开放标准,它提供了一种可扩展的架构,使得不同设备和系统之间可以实现无缝的集成。
在工业自动化领域,OPC UA Server是一个重要的组件,它扮演着将数据从服务端提供给客户端的角色。
开发一个OPC UA Server需要按照一定的步骤进行,下面将介绍一个基本的开发实例。
我们需要选择一个合适的开发环境,常见的选择有C++、Java 和.NET等。
这里我们选择使用C++进行开发。
接下来,我们需要使用一个OPC UA库,比如开源的open62541库,它提供了一套完整的OPC UA功能。
我们可以在GitHub上找到这个库,并下载相应的源代码。
在开始编写代码之前,我们需要了解OPC UA的基本概念和术语。
OPC UA使用对象、变量和方法来描述设备和系统,它还定义了一些标准的数据类型和通信协议。
了解这些概念对于开发一个OPC UA Server至关重要。
接下来,我们可以开始编写代码了。
首先,我们需要创建一个OPC UA Server对象,并进行初始化。
然后,我们可以创建一些对象、变量和方法,并将它们添加到Server对象中。
这些对象、变量和方法可以表示不同的设备和系统,并提供相应的功能和数据。
例如,我们可以创建一个名为"TemperatureSensor"的对象,它包含一个名为"Temperature"的变量,表示温度值。
在创建对象、变量和方法之后,我们需要定义一些访问权限和安全策略。
OPC UA提供了一套灵活的权限管理和安全机制,可以确保数据的安全性和保密性。
接下来,我们需要实现一些回调函数,用于处理客户端的请求和事件。
在OPC UA中,客户端可以向Server发送请求,比如读取变量的值或调用方法。
如何开发OPC Server
首先我们先来看一下什么是OPC
OPC (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::AddGroup
HRESULT 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上建立一个组。
下在我们来实现这个方法:
….
….
首先要对组名(szName)进行检查,看是否有效或是否已经有这个组。
if (szName != NULL)
{
RequestedName = szName;
if (RequestedName == "")
RequestedName = pSvrObject->DefaultGroupName();
}
else
RequestedName = pSvrObject->DefaultGroupName();
for (i=0; i<pSvrObject->NumbrGroups(); i++)
{
pGroup = pSvrObject->GetGroup(i);
if (RequestedName == pGroup->Name)
return (OPC_E_DUPLICATENAME);
}
这需要在内存中维护OPC Group(组)的列表(还要有OPC 项的列表)。
如果szName(组名)正确并且没有建立过该组,就开始根据传过来的参数进行组的建立,建立好后将该组加到自己的组列表中以备后用。
最后将新建组的接口指针返回给客户端。
2、IOPCServer::GetErrorString
HRESULT GetErrorString( [in] HRESULT dwError,
[in] LCID dwLocale,
[out, string] LPWSTR *ppString );
为Server的错误代码返回相应的错误字符串。
代码略
3、 IOPCServer::GetGroupByName
HRESULT GetGroupByName( [in, string] LPCWSTR szName,
[in] REFIID riid,
[out, iid_is(riid)] LPUNKNOWN * ppUnk );
通过指定的组名(由同一客户端建立的)找到该组的接口指针。
此方法实现比较简单,只要根据提供的名子循环从组列表中找到该组的接口指针,并返回给客户端
4、 IOPCServer::GetStatus
HRESULT GetStatus( [out] OPCSERVERSTATUS ** ppServerStatus );
返回当前Server的状态信息。
此方法比较简单,但要注意的是在使用OPCSERVERSTAUS前要进行内存分配。
5、 IOPCServer::RemoveGroup
HRESULT RemoveGroup( [in] OPCHANDLE hServerGroup,
[in] BOOL bForce );
从服务器中删除指定组
在组列表中找到指定的组,并将其删除。
6、 IOPCServer::CreateGroupEnumerator
HRESULT CreateGroupEnumerator( [in] OPCENUMSCOPE dwScope,
[in] REFIID riid,
[out, iid_is(riid)] LPUNKNOWN* ppUnk );
为Server上所提供的组建立不同的列举器。
上面是直接使用COM技术进行开发的,这要求你必须熟悉COM技术。
如果你对COM不是很了解那也没关系,可以选择OPC Server的开发工具,你只需要简单的调用开发工具的函数就可以实现OPC Server中的所有接口。
我们虽然实现了IOPCServer接口中的所有方法,但它只是OPC Client与我们通信的一个桥梁,最主要的还是我们要自己维护好OPC Group和OPC Item列表。
这样我们才可以跟OPC Client进行真正的数据通信。
与硬件设备进行通信
接口已经实现好了,这回我们该从硬件设备中读取数据提供给OPC Client了。