OPC规约详细内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OPC规约详细内容
OPC是以OLE/COM机制作为应用程序的通讯标准。
OLE/COM 是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。
OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
应用程序与OPC服务器之间必须有OPC接口,OPC规范提供了两套标准接口:Custom 标准接口,OLE自动化标准接口。
通常在系统设计中采用OLE自动化标准接口。
OLE自动化标准接口,及采用OLE自动化技术进行调用,其技术为OLE自动化技术。
OLE 自动化标准接口定义了以下三层接口,依次呈包含关系。
OPC Server:OPC启动服务器,获得其他对象和服务的起始类,并用于返回OPC Group 类对象;
OPC Group:存储由若干OPC Item组成的Group信息,并用于返回OPC Item类对象。
OPC Item:存储具体Item 的定义、数据值、状态值等信息。
由于OPC规范基于OLE/COM技术,同时OLE/COM的扩展远程OLE自动化与DCOM技术支持TCP/IP等多种网络协议,因此可以将OPC客户、服务器在物理上分开,分布于网络不同节点上。
OPC规范可以应用在许多应用程序中,如它们可以应用于从SCADA 或者DCS系统的物理设备中获取原始数据的最低层,它们同样可以应用于从SCADA 或者DCS系统中获取数据到应用程序中。
实际上,OPC设计的目的就是从网络上某节点获取数据。
OPC的数据访问方法分别有同步访问、异步访问和订阅式数据采集方式三种。
1、同步数据访问方式
OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OP C应用程序,OPC应用程序在结果被返回之前
必须处于等待状态。
同步访问特点为:读取指定OPC标签对应的过程数据时,应用程序一直要等到读取完为止;写入指定OPC标签对应的过程数据时,应用程序一直等待写入完成为止。
当客户数据较少而且同服务器交互的数据量比较少的时候可以采用这种方式,然而当网络堵塞或大量客户访问时,会造成系统的性能效率下降。
2、异步数据访问方式
OPC服务器接到OPC应用程序的要求后,几乎立即将方法返回。
OPC应用程序随后可以进行其他处理。
当OPC服务器完成数据访问时,OPC服务器转换角色充当成客户程序,而原来的客户程序此时可以看成是服务器。
OPC服务器主动触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。
OPC应用程序在其事件处理程序中接收从OPC服务器传来的数据。
其特点为:读取指定OPC标签对应的过程数据,应用程序发出读取要求后立即返回,读取完成时发生读取完成事件,OPC应用程序被调用;写入指定OPC标签对应的过程数据,应用程序发出写入要求后立即返回,写入完成时发出写入完成事件,OPC应用程序被调用。
因此异步方式的效率更高,能够避免多客户大数据请求的阻塞,并可以最大限度地节省C PU和网络资源。
3、订阅式数据访问方式
并不需要OPC客户应用程序向OPC服务器提出要求,而是服务器周期性地扫描缓冲区的数据,如果发现数据变化超过一定的幅度时,则更新数据缓冲器,并自动通知OPC应用程序。
这样OPC客户应用程序就可以自动接到OPC服务器送来的变化通知的订阅方式数据采集(Subscription)。
订阅式数据采集方式实际上也属于异步读取方式的一种。
采用订阅式数据采集方式的服务器按一定的更新周期(UpdateRate)更新数据缓冲器的数值时,如果发现数据有变化时,就会以数据变化事件(DataChange)通知OPC应用程序。
OPC服务器支持不敏感带(DeadBand),而且OPC标签的数据类型是模拟量的情况,只有当前值与前次值的差的绝对值超过一定的限度时,才更新缓冲器
数据并通知OPC应用程序。
由此可以无视模拟值的微小变化,从而减轻OPC服务器和OPC应用程序的负荷。
其特点为:服务器用一定的周期检查过程数据,发现数字数据变化或者模拟数据的变化范围超过不敏感区后,立刻通知客户程序,传递相应信息。
订阅式技术基于“客户-服务器-硬件设备”模型,在服务器中的内部建立预定数据的动态缓存,并且当数据变化时对动态缓存给予刷新,并向订阅了这些数据的客户端发送。
这使得网络上的请求包数大大减少,并有效降低了对服务器的重复访问次数。
在数据点很多的情况下,这种通信方式的优势更能凸现出来。