OPC基础应用知识.ppt
- 文档编号:12990775
- 上传时间:2023-06-10
- 格式:PPT
- 页数:51
- 大小:823KB
OPC基础应用知识.ppt
《OPC基础应用知识.ppt》由会员分享,可在线阅读,更多相关《OPC基础应用知识.ppt(51页珍藏版)》请在冰点文库上搜索。
2023/6/10,1,OPC基础应用知识,员工内部培训系列之三,工业自动化事业部SmartPro技术支持组,主讲人:
熊辉,2023/6/10,2,概述,OPC的基本定义OPC的概要OPC的数据访问对象模型自动化接口开发OPC应用程序的基本步骤RDK开发OPC服务器的基本步骤OPC的配置OPC在SmartPro系统中的应用组态,2023/6/10,3,词汇,OPC:
OLEForProcessControlFA:
FactoryAutomationPA:
ProcessAutomationCOM:
ComponentObjectModelDCOM:
DistributeedComponentObjectModelDDE:
DynamicDataExchangeDLL:
DynamicLinkLibrary,2023/6/10,4,OPC的基本定义,2023/6/10,5,OPC的基本定义,监视应用程序,趋势应用程序,报表应用程序,设备A,驱动器A,设备B,驱动器B,设备C,驱动器C,设备D,驱动器D,1、各设备厂商接口不统一,则应用开发花费多2、系统共存驱动太多,导致系统维护困难。
2023/6/10,6,OPC的基本定义,监视应用程序,趋势应用程序,报表应用程序,设备A,OPC,设备B,OPC,设备C,OPC,设备D,OPC,OPC,OPC,OPC,1、OPC是为了不同供应厂商的设备和应用程序之间的软件接口标准化,使其数据交换更加简单化的目的而提出的;从而可以向用户提供不依靠于特定开发语言和开发环境的可以任意组合使用的过程控制软件组件产品。
2、OPC系统是由提供数据采集服务的OPC服务器、OPC接口,以及OPC应用程序所构成。
3、OPC服务器按照硬件厂商提供的硬件所开发,使之不依赖于硬件产品;同时利用VARIANT数据类型,可以不依存于硬件要求的数据类型,2023/6/10,7,OPC的基本定义,基于COM技术的OPCCOM是一种软件组件之间相互数据交换的有效方法。
它不是一种计算机语言,而是于运行计算机、操作系统以及软件开发语言无关的,任意软件组件之间可以相互通信的二进制和网络通信标准DCOM:
可以使COM组件分布在不同计算机上,并通过网络互相连接并互相交换数据。
作为工业标准定义的COM接口,优点:
1、设备开发者:
使设备驱动器开发唯一2、应用程序开发:
使用通用工具,不必开发特定的接口。
3、用户:
可以自由选择各种商业软件包,使系统成本大大降低,2023/6/10,8,OPC标准,2023/6/10,9,OPC使用范围,HMI/SCADAOPC应用程序,历史数据库,批处理OPC应用程序,OPC服务器,OPC服务器,OPC服务器,OPC服务器,设备A,设备B,PLC,设备C,设备D,1、与现场I/O数据的连接;2、与应用程序之间的连接,2023/6/10,10,OPC的概要-组成,OPC服务器:
由硬件提供商或独立软件供应商提供,主要是提供过程数据。
OPC代理-占位DLL:
利用操作系统提供的通信功能进行数据交换,以实现应用程序和服务器之间的格式变换。
OPC自动化包装DLL:
将OPC定制接口变换成OPC自动化接口,从而更方便地实现对OPC服务器的访问。
OPC应用程序:
对OPC服务器提供的数据源进行访问,实现用户特定目的而开发的应用程序。
2023/6/10,11,OPC的概要-组成,OPC应用程序,包装DLL,代理-占位DLL,代理-占位DLL,OPC服务器,OPC自动化接口,OPC定制接口,计算机过程边界,OPC定制接口,OPC应用程序,包装DLL,代理-占位DLL,代理-占位DLL,OPC服务器,OPC自动化接口,OPC定制接口,计算机过程边界,OPC定制接口,本地访问,远程访问,2023/6/10,12,OPC的体系结构,2023/6/10,13,OPCServer对象接口,1、开发者必须完成非选项的接口实现!
2、OPC标准仅仅提供接口的定义!
3、客户端调用这些接口完成与OPCServer的连接!
2023/6/10,14,OPCGroup对象接口,2023/6/10,15,OPC的访问方式-同步访问,OPC应用程序,OPC服务器,调用开始,等待状态,调用同步访问方法,调用结束,时间,时间,1、读取指定OPC标签,应用程序一直等待到读取完成为止!
2、写入指定OPC标签,应用程序一直等待到写入完成为止!
3、开发简单,但是大批量数据处理则访问性能影响大!
2023/6/10,16,OPC的访问方式-异步访问,OPC应用程序,OPC服务器,调用开始,其他处理,调用异步访问方法,调用结束,时间,时间,异步访问完成事件,通信,事件结束,事件发生,1、读取/写入指定OPC标签,应用程序发出更新请求后立即返回,更新数据完成后发生数据变化事件!
2、发出请求与访问完成事件处理是独立完成,因此需要使用事务管理,开发较难!
2023/6/10,17,OPC的访问方式-订阅方式,OPC应用程序,OPC服务器,事件发生,其他处理,数据变化事件,事件处理结束,时间,时间,数据变化事件,通知,事件结束,事件发生,通知,1、服务器定时更新OPC服务器的数据缓冲区。
如果数据超出敏感区DeadBand则发生数据变化事件!
2、降低数据精度!
2023/6/10,18,OPC数据访问对象模型,服务器(OPCServer),组集合(OPCGroups),浏览器(OPCBrowser),OPCGroup,项集合(OPCItems),OPCItem,OPCGroup,组(OPCGroup),OPCItem,项(OPCItem),1、组织管理项2、客户据此决定刷新时间3、激活/禁止OPC4、分为PUBLIC和LOCAL。
1、代表和数据源的连接关系/DCS点在OPCSERVER中的地址。
2、必须通过OPCGroup进行访问3、其数据类型为VARIANT4、一般包括Value、TimeStamp、Quality,2023/6/10,19,OPC数据访问对象模型,2023/6/10,20,开发OPC应用程序的几种模式,第三方HMI软件自动化接口(VB、Delphi、Pb、Bc)第三方提供的RDK定制接口(VC)FacView支持OPC.H文件OPC_I.C文件,1、对于OPC服务器而言,其应该提供定制接口,自动化接口则可选2、FacView中的OPCServer只支持定制接口,2023/6/10,21,VB开发OPC应用程序的基本步骤,连接OPC服务器和建立OPC组添加OPC标签同步读写数据断开OPC服务器连接,2023/6/10,22,连接OPC服务器和建立OPC组,变量声明OptionExplicitOptionBase1opc对象的申明DimWithEventsMyOPCServerAsOPCServerDimMyOPCGroupsAsOPCGroupsDimMyOPCTestgrpAsOPCGroupDimMyOPCItemsAsOPCItemsDimMyOPCItemAsOPCItemDimiServerhandles()AsLongDimMyOPCBrowseAsOPCBrowserConststrProgID=OPCJ.SAMPLESERVER.1ConststrNode=“xionghui”,2023/6/10,23,连接OPC服务器和建立OPC组,PrivateSubCommand1_Click()IfMyOPCServerIsNothingThenSetMyOPCServer=NewOPCServerEndIfIfMyOPCServer.ServerState=OPCDisconnectedThenMyOPCServer.ConnectstrProgID,strNodeEndIfIfMyOPCGroupsIsNothingThenSetMyOPCGroups=MyOPCServer.OPCGroupsEndIfIfMyOPCTestgrpIsNothingThenSetMyOPCTestgrp=MyOPCGroups.Add(TESTGRP)EndIfEndSub,2023/6/10,24,添加OPC标签,PrivateSubCommand2_Click()Dimstritemids(8)AsStringDimiclienthandles(8)AsLongDimierror()AsLongDimiAsIntegerIfMyOPCTestgrpIsNothingThenExitSubEndIfIfNotMyOPCItemsIsNothingThenIfMyOPCItems.Count0ThenExitSubEndIfEndIfMyOPCTestgrp.IsSubscribed=FalseMyOPCTestgrp.IsActive=TrueSetMyOPCItems=MyOPCTestgrp.OPCItemsFori=1To8strItemids(i)=MyTAG&iiClienthandles(i)=iNextCallMyOPCItems.AddItems(8,strItemids,iClienthandles,iServerhandles,ierror)EndSub,2023/6/10,25,同步读写数据,/同步读取PrivateSubTimer1_Timer()Dimierrors()AsLongDimVtItemValues()AsVariantobjTestgrp.SyncReadOPCCache,8,iServerhandles,VtItemValues,ierrorsText2.Text=Format(VtItemValues
(1),#.000)EndSub,/同步写入Dimierrors()AsLongDimivalue()AsVariantDimiAsIntegerReDimivalue(8)Fori=1To8ivalue(i)=iNextobjtestgrp.SyncWrite1,iserverhandles(),ivalue(),ierrors()Text2.Text=ivalue(5),2023/6/10,26,断开与OPC服务器的连接,PrivateSubCommand3_Click()Dimierror()AsLongIfNotMyOPCItemsIsNothingThenMyOPCItems.Remove8,iServerhandles,ierrorEndIfSetMyOPCItems=NothingIfNotMyOPCTestgrpIsNothingThenMyOPCGroups.RemoveAllSetobjTestgrp=NothingEndIfIfNotMyOPCGroupsIsNothingThenSetMyOPCGroups=NothingEndIfIfNotMyOPCServerIsNothingThenIfMyOPCServer.ServerStateOPCDisconnectedThenMyOPCServer.DisconnectEndIfSetMyOPCServer=NothingEndIfEndSub,2023/6/10,27,VB开发OPCClient示例,2023/6/10,28,RDK开发OPC服务器的一般流程,开发包OPCServer封装的核心,VB/VC/DELPHI/CB开发环境通过RDK动态库进行API调用,智能仪表的通讯程序+OPC点的刷新函数,OPC其它客户程序通过OPC接口进行访问数据点,2023/6/10,29,RDK开发OPC服务器函数调用流程,InitOpcServer,设定服务器信息的函数SetServerStateSetMatchCaseSetMajorVersionSetMinorVersion,注册回调函数EnableWriteNotificationEnableDisconnectNotificationEnableDeviceRead,创建建点:
CreateTag设定点属性:
SetTagProperties,更新点的数据UpdateTag,删除点RemoveTag,结束时调用UnInitOpcServer,2023/6/10,30,VB开发OPCServer示例,2023/6/10,31,OPC的配置-预备,1、远程连接所需的软件(当作为远程OPC服务器使用时),2、OPC专用用户服务器和客户同属一个计算机域:
不需要添加。
服务器和客户不属于一个计算机域,但是控制系统要求安全性,则需要添加用户服务器和客户同属一个工作组,且控制系统不需要安全性,则不需要添加要求作为OPC服务器的身份标识的指定用户,则需要添加。
注意:
如果两台计算机上存在用户名和密码相同的用户,则两台计算机可以相互认证!
2023/6/10,32,没有分布式COM安全机制的设置,2023/6/10,33,具有分布式COM安全机制的设置,2023/6/10,34,COM配置实用程序,具有计算机管理员权限的用户登录从菜单“开始”运行“,输入DCOMCNFG.EXE,确定后启动即可!
2023/6/10,35,DCOM设置图-1,2023/6/10,36,DCOM设置图-2,2023/6/10,37,DCOM设置图-3,2023/6/10,38,DCOM设置图-4,2023/6/10,39,DCOM设置图-5,2023/6/10,40,DCOM设置图-6,2023/6/10,41,DCOM设置图-7,2023/6/10,42,DCOM设置图-8,2023/6/10,43,远程OPC在SmartPro系统中的应用,FacView(v3.1PreviousVersion)作为OPCServer特点:
DA1.0ProgID:
CITECT.OPC或CITECT.OPC.1安装随同FacView一同安装或执行FacViewBinCtOpc32.reg和regsvr32.exeopcproxy.dll设置DCOMCNFG.EXE按照前述内容,根据具体情况设置项名:
提供给OPCClient的是本工程中的标签点名,2023/6/10,44,本地OPC在SmartPro系统中的应用,FacView(v3.1PreviousVersion)作为OPCServer特点:
DA1.0ProgID:
CITECT.OPC或CITECT.OPC.1安装随同FacView一同安装或执行FacViewBinCtOpc32.reg和regsvr32.exeopcproxy.dll项名:
提供给OPCClient的是本工程中的标签点名,2023/6/10,45,OPC在SmartPro系统中的应用,FacView作为OPC客户通信设置新建IO服务或挂在某个已存的IO服务下。
设置主板主板名称:
自定义主板类型:
OPC地址:
0或500选项:
OPCSERVER所在计算机名/本地不填!
Thein-process(DLL)server.Thelocal(EXE)serverTheremotecomputerserver.设置端口主板名:
见前定义端口名:
自定义其他:
空设置IO设备设备名:
自定义地址:
OPCSERVER的ProgID协议:
OPC设备号:
唯一数字标签数据库地址:
直接填写OPCSERVER提供的项格式,2023/6/10,46,如何获取OPCServer的ProgID?
使用标准客户端工具,如OPCCLIENT.EXE,2023/6/10,47,如何获取OPCServer的项格式?
使用标准客户端工具,如OPCCLIENT.EXE,1、如果采用分层结构,则注意格式:
根名.点名.项名,2023/6/10,48,FacView中OPCServer的特点,PROGID:
Citect.OPCClassID(CLSID):
BA198B61-32E3-11d1-A1B5-00805F35623CIn-ProcessServer:
CtOpc32.dll本地/远程:
CtOpc32.exeProxy/StubDLL:
OpcProxy.dll接口:
定制接口:
IOPCServer、IOPCBrowseServerAddressSpace、IOPCItemMgt、IOPCGroupStateMgt、IOPCSynchIO、IOPCASynch、IOIDataObject自动化接口:
系统要求:
WindowsNT4.0orlaterWindows95withDCOMforWindows95ServerOrganisationFlat(OPC_NS_FLAT),2023/6/10,49,运行微软自带的工具GUIDGEN.EXE,选取GuidFormat第三种格式,再选COPY!
或第四种格式CLSID这是用来标识一个COM对象,是一个128字节的数组用CLSID来唯一标识OPCServer。
如何获取OPCServer的ClassID?
2023/6/10,50,常见的错误,OPCServer没有在客户端注册!
客户端定义的点名在Server端不一致!
点名命名不规范点名大小写客户端定义点名在服务器中不存在DCOMCNFG.EXE设置错误权限不足用户不存在OPCServer不支持DCOM分布!
不支持OPCServer功能!
2023/6/10,51,我们一直在努力!
工业自动化事业部SmartPro技术支持组,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPC 基础 应用 知识