opc技术介绍
- 格式:pdf
- 大小:1.49 MB
- 文档页数:43


OPC通讯协议介绍
一、引言
OPC(OLE for Process Control)通讯协议是一种用于工业自动化系统中的数据交换标准。本协议旨在提供一种统一的接口,使各种硬件设备和软件应用能够无缝地进行通信和数据交换。本文将详细介绍OPC通讯协议的基本原理、架构、消息格式和应用场景。
二、基本原理
1. OPC通讯协议基于微软的COM(Component Object Model)技术,利用COM的接口和对象模型来实现数据交换。
2. OPC通讯协议采用客户端-服务器模式,其中客户端是数据的消费者,服务器是数据的提供者。
3. OPC通讯协议使用标准的Windows操作系统API来实现通信和数据传输。
三、架构
1. OPC通讯协议的架构包括客户端、服务器和数据源三个层次。
a) 客户端:负责向服务器请求数据、接收数据并进行处理和显示。
b) 服务器:负责提供数据,接收客户端的请求并返回相应的数据。
c) 数据源:即实际的硬件设备或软件应用,负责采集、存储和处理数据。
2. OPC通讯协议的架构还包括以下组件:
a) OPC服务器:实现了OPC通讯协议,负责提供数据和接收客户端的请求。
b) OPC客户端:使用OPC通讯协议与OPC服务器进行通信,请求数据并进行处理和显示。 c) OPC浏览器:用于浏览和选择OPC服务器中可用的数据项。
d) OPC自动化接口:提供了一组标准的API,用于开发OPC客户端和服务器。
四、消息格式
1. OPC通讯协议使用二进制消息格式进行数据交换。
2. 消息格式包括消息头和消息体两部分。
a) 消息头:包含消息的标识符、长度和其他控制信息。
b) 消息体:包含具体的数据内容。
五、应用场景
1. OPC通讯协议广泛应用于工业自动化领域,包括工厂自动化、过程控制、设备监控等方面。
2. OPC通讯协议可以实现不同设备和软件的互联互通,提高系统的可靠性和灵活性。
1、 OPC的基本原理
定义:
OPC是用于过程控制的OLE(OLE for Process Control)的首字母缩写词,在今天已经理所然地被自动化组件的制造商逐步发展成一个事实上的新技术标准。而所谓OLE(Object linking
and embedding)含义是对象链接及嵌入,用于过程控制。
OPC 是以 OLE/COM 机制作为应用程序的通讯标准。OLE/COM 是一种客户/服务器模式,
具有语言无关性、代码重用性、易于集成性等优点。OPC 规范定义了一个工业标准接口,这个标准使得 COM 技术适用于过程控制和制造自动化等应用领域。
COM技术简述:
*所谓COM并不是一种计算机语言,与运行的机器、机器的操作系统(只要支持COM)以及软件开发语言均无关,是任意的两个软件组件之间都可以相互通信的二进制和网络的标准。
*COM服务器是根据COM客户的要求提供COM的服务的执行可能的程序,可以作为Win32服务器上可执行的文件发布。
*COM客户程序和COM服务器可以用完全不同的语言开发。这样使利用C++,Visual
Basic,以及Excel中作为宏使用的应用程序的Visual Basic等不同语言所开发的程序可以相互连接。
*COM组件可以以二进制的形式发布给用户。
*与过去DLL(动态链数据库)的版本管理非常困难的问题相比,COM技术可以提供不同版本的COM服务器和COM客户程序之间的最大的兼容性。
*作为COM技术扩展的分布式COM(Distributed Component Object Model,DCOM)技术,更可以使COM组件分布在不同的计算机上,并通过网络互相连接并互相交换数据。所以对于COM客户程序来说,同样像连接本地计算机上的COM服务器一样,去连接远程计算机上的COM服务器,当然通信的速度不太一样,但是重要的是不必对服务器程序进行修正就可以在网络上自由构成利用COM和DCOM(分布式COM)达成的组件的互相连接。
热点追踪
“变频调速技术”、“组态软件”、“PLC”、“现场总线”培训班,10月开班! 73 OPC技术介绍(八)
◆ 非同期数据读写 非同期方式与同期方式的区别在于,在调用数据访问方法时,OPC应用程序必须等待OPC服务器的动作完成。也就是说同期方式的数据访问在要求的动作没有完成前不能从调用的方法中返回到主处理程序中去。所以从调用方法到返回到主处理程序之间,不可能执行任何其他OPC应用程序侧的处理,导致对用户操作也不能作出及时反应。本章示范程序的OPC项数比较少可能不会发生上述问题,但是要求的数据比较多时或者直接对设备进行访问时,这样的问题就会变得更加明显了。 在这种情况下,非同期方式的数据访问就显得更为有效。非同期方式的访问对OPC服务器提出数据访问要求后,立即返回到OPC应用程序侧的主处理程序中去。OPC服务器完成数据访问时通知OPC应用程序,OPC应用程序从而得到数据访问的结果。 有关非同期方式的数据访问编程,我们只说明怎样变更前述的同期方式示范程序,使之成为非同期方式的示范程序。 Ÿ OPC对象声明的改变 首先为了使对象可以处理事件,必须将objTestGrp对象的声明中加上“WithEvents”语句,表示声明的对象可以响应事件(如图1所示)。
图1 非同期OPC对象变量的声明 非同期方式访问使用的新定义的变量及其说明见表1。 表1 用于非同期方式访问新定义的变量 变量名 说明 lTransID_** 非同期用的事务标识符。用于读取和写入。 LCancelID_** 非同期用的取消标识符。用于读取和写入。 Ÿ OPC组对象属性的改变 在进行非同期访问前,必须建立非同期用的通信通路。使用这个通信通路,OPC服务器可以反调OPC应用程序的事件处理程序,以通知数据访问的结果。通信通路的建立方法是改变OPC组的属性,把OPC组的“IsSubscribed”属性设置为True。 OPC项添加子程序 Sub AddItem() -省略- ' 启动组非同期通知 objTestGrp.IsSubscribed = True -省略- End Sub Ÿ 非同期读取代码的改变 对于前述的同期方式的数据访问示范程序,我们作出以下变更,使之可以进行非同期方式的数据访问。定时器事件处理内只进行非同期读取要求,而在非同期读取完成事件处理时接受数据访问的结果。 tmUpdate定时器的定时事件处理 Private Sub tmUpdate_Timer() ' 非同期读取 Call AsyncRead End Sub 定时器事件处理内调用的“AsyncRead”子程序如下。 非同期读取子程序 Sub AsyncRead() Dim lErrors() As Long If objTestGrp Is Nothing Then Exit Sub End If If objTestGrp.OPCItems.Count > 0 Then ' 非同期读取 lTransID_Rd = lTransID_Rd + 1 objTestGrp.AsyncRead 8, lServerHandles, _ lErrors, lTransID_Rd, lCancelID_Rd End If End Sub 在前述的同期方式读取示范程序,在定时器事件处理内进行更新棒图的显示,而对于非同期方式即使调用方法后并不
OPC技术概览
引言
控制系统之间,控制系统和标准网络之间的数据通讯是管控一体化的一个最基本要求,但问题的一个关键是接口的不标准限制了这些设备之间的互联。专用系统之间不能相互通信是相当普遍的,由于应用程序提供者仅提供了有限的连接性,因而大大缩小了过程和工业制造厂商对硬件和软件的选择范围。
在缺少任何标准的情况下,设备供应商不得不各自开发自己专用的硬件和软件解决方案。在今天的市场上,所有过程控制系统和信息系统有其专用的技术和接口以及API(应用程序接口),目的在于存取所包含的信息。实现不同系统之间的集成以及长期维护和支持集成环境等所需要的费用是昂贵的。尽管可以编写定制的驱动程序和接口程序,但因为上千个不同类型的控制设备和软件包需要互相通信,使得程序的种类迅速增长。驱动程序数量的激增加深了解决已存在问题的困难程度。如不同设备供应商的驱动程序之间的不一致、硬件性能不能得到广泛支持、驱动程序不能适应升级后的硬件以及发生存取冲突。在最后一种情况下,两个应用系统因为使用相互独立的驱动程序,因而通常不能同时访问同样的设备。更糟糕的情况可能是,驱动程序不适用于特定设备的应用程序或内部应用程序的组合,这就限制了最终用户的选择迫使他们不得不编写自己的驱动程序(以及调试)。
对于开发典型监控程序软件的技术人员来说,有20%-30%的时间是用于编写通讯驱动程序。每次,一个供应商需要将一个新的监控器投入市场销售时,所有的软件开发人员就不得不重新编写一个新的驱动程序。
应用软件的提供者花费太多的资金开发和维护专用接口,这不仅增加了用户的负担,而且在实际上并不能真正解决不同系统的互操作性。在某种意义上,用户被他们的软件的提供者所控制。
问题的解决方案是,给出一个标准,这个标准为过程控制和工厂自动化提供真正的即插即用软件技术,使得过程控制和工厂自动化的每一系统、每一设备、每一驱动器能够自由的连接和通信。有了这样一个标准,使得系统和设备之间,包括从车间级到MIS(管理信息系统)和更远距离,完全无缝地、真正的开放和方便的进行企业级通信成为可能。