发表于:2005-04-20 12:10:00
楼主
OPC技术及其在工业以太网
引言
以太网作为一项比较成熟的技术正向自动化领域逐步渗透,从企业决策层、生产管理调度层向现场控制层延伸。
以太网由于采取冲突竞争的传输方式,具有传输不确定性的特点。但随着带宽的增加、冗余措施的加强和自诊断程序的完善,以太网完全可以满足中小型控制系统实时性的要求。同时以太网具有相关网络产品价格低廉,开放性好、技术成熟等优点。目前,Profibus、Devicenet、Controlnet和Lonworks等都使用以太网传送它们的报文,制定现场装置与以太网通信的标准,使以太网进入工业自动化的现场级。当现场智能设备将现场信息通过工业以太网传至监控计算机后,存在着信息共享与交互的问题。一方面,监控计算机内部应用程序需要对现场信息进行处理,另一方面,企业生产管理层需要与监控计算机进行信息沟通和传递。OPC的出现则解决了控制系统突破“信息孤岛”的瓶颈问题。
1OPC(OLE for Process Control)技术规范与意义
OPC技术是以Microsoft的OLE/COM技术为基础建立的一项技术规范与标准,它采用客户/服务器(Client/Server)模型,定义了一组COM对象及其双接口(Dual Interface)。
OPC对象主要包括服务器(Server)、组(Group)和项(Item)。OPC服务器对象除了维护自身信息外,还作为组对象的容器,可动态地创建或释放组对象;而组对象相对于项而言也是一个包容器,它提供一套管理项的机制;OPC项则表示了与OPC服务器中数据的连接,包括值(Value)、品质(Quality)、时间戳(Time Stamp)3个基本属性。
OPC对象双接口由OPC自动化接口(Automation Interface)和定制接口(Custom Interface)组成。在C/S工作模式下,客户程序通过接口与OPC服务器连接,调用OPC对象的方法。一般来说自动化接口能为高级语言客户程序提供极大的便利,但数据传输效率较低,而定制接口则为用C/C++语言编写的客户程序带来灵活高效的调用手段。
OPC技术建立了一组符合工业控制要求的接口规范,将现场信号按照统一的标准与SCADA、HMI等软件无缝连接起来,同时将硬件和应用软件有效地分离开。只要硬件开发商提供带有OPC接口的服务器,任何支持OPC接口的客户程序均可采用统一的方式存取这些设备,无须重复开发驱动程序。这样大大提高了控制系统的互操作性和适应性。
2OPC数据存取服务器在以太网控制系统的层次结构
图1示意了以太网控制系统的总体层次结构。在现场控制层,以PC104嵌入式系统作为现场智能节点,其外接模拟量输入输出、开关信号输入输出等I/O卡,主要作用是执行各种控制功能及进行数据采集,进行状态监测和报警,并将采集的数据上传;监控计算机则采用PC机,装有两块网卡,利用其中一块与下位机PC104通信,而通过另一块网卡与生产管理调度层的其他计算机组成局域网。监控计算机中运行OPC数据存取服务器程序,将现场智能节点传上来的数据通过OPC接口送到监控软件进行监控,并利用组态软件进行复杂的组态工作,将组态信息下载到PC104上,调整其控制算法和参数。而其他管理调度层的计算机OPC客户程序则通过DCOM的方式访问OPC服务器程序,进行信息交互。
由此可见,OPC服务器在以太网控制系统中将企业现场控制层与生产管理调度层有机地连接起来,组成一个开放性好、可靠性高的分布式控制系统,发挥了重要的桥梁作用。
3OPC数据存取服务器的设计与实现
OPC数据存取服务器可按图2的系统结构设计。它主要由服务器对象、组对象、项对象、数据存储区和TCP/IP通信接口组成。
由于OPC数据存取服务器既要通过网卡与现场设备进行通信,又要通过OPC接口与客户程序进行交互,所以采用多线程模型以保证数据存取的效率。为避免不同线程同时对数据区中的数据进行操作,还需要考虑对临界区的互斥控制。
OPC技术是以微软的COM技术为基础,同时需要直接与底层硬件打交道,所以采用VC实现比较灵活方便。OPC数据存取服务器主要分为OPC通用接口、硬件接口以及数据存储区的实现,在本系统中硬件接口的实现主要是实现以太网通信接口。
3.1 OPC通用接口的实现
首先定义OPC数据存取服务器的名称(ProgID)和类标识(CLSID),实现OPC数据存取服务器类厂对象。然后由OPC规范中定义的OPCServer类、OPCGroup类和OPCItem类,分别派生出装置Device、板卡Board、通道Channel3个新类。
OPC规范中定义的接口可分为可选接口和必选接口,但对任何OPC服务器而言,应实现必选接口的成员函数。因此在派生类中重载其父类中必选接口成员函数,并根据实际情况重载可选接口成员函数,例如IOPCBrowseServerAddressSpace接口等。
为了满足实际要求,还需要定义各个派生类的特殊属性和方法并实现其方法。例如,在装置类中增加IP地址属性,用以标识现场PC104智能节点。另外增加搜索函数,自动列出已连入现场控制层的PC104智能节点的IP地址。
3.2 以太网通信接口的实现
通信接口的设计是OPC数据存取服务器应用于工业以太网控制系统的关键。由于控制系统不同于普通局域网,所以通信的可靠性和实时性是必须考虑的重要因素。
(1)可靠性考虑 由于以太网支持TCP/IP协议,因此可利用socket套接字开发通信程序,这将大大降低开发难度。在利用socket编程时,主要用到的有流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)两种,其对应的通信方式也有两种,一种是面向连接的,采用TCP协议;一种是非面向连接的,采用UDP协议。当采用UDP协议时,它提供不可靠的无连接数据报传输服务,不提供报文到达确认、排序以及流量控制等功能,因此报文可能会丢失、重复以及乱序等。TCP则是建立在连接的抽象概念上的,它标识的是一个虚电路连接,需要两个端点都同意连接才能通信;它将数据流看作字节的序列,为了便于传输又将这个序列划分为若干段,在传输过程中,具有确认重传功能;此外TCP使用专门的滑动窗口机制来解决传输效率和流量控制等问题。为保证可靠性在本系统中采用TCP通信协议。
(2)实时性考虑以太网采用的是一种随机访问协议——带冲突检测的载波侦听多路访问(CSMA/CD)介质访问控制协议,这种数据传输协议虽比较简单,但它由冲突引起的数据传输时间的随机性,成了阻碍以太网进入工业控制领域的根源。在目前应用于工业控制领域的以太网中,通过限制连接在以太网上的结点数目、控制网络流量、使总线保持轻载工作条件,可以满足控制的实时性要求。
TCP/IP通信方式采用的是客户端/服务器模式,服务器程序被动地等待通信,而客户程序则主动地启动通信。在本系统中,由于下位机PC104采用DOS系统,处于单线程方式,不但要负责通信,而且还要执行特定的控制功能,所以将PC104作为通信客户方;而监控计算机采用支持多线程方式Windows NT/2000系统,可作为通信服务器方。因此在OPC数据存取服务器中专门创建一个线程用于监听是否有客户程序请求连接。如果有请求,则另创建一个线程来处理此次通信,将收到的数据存放到专为OPC服务器开辟的数据存储区,通信结束后关闭此通信线程,监听线程则一直运行。这样可保证数据传输的实时性。
3.3 数据存储区的实现
数据存储区是OPC服务器程序中的重要组成部分,其中包含了由服务器程序方定义的数据项。OPC客户程序通过OPC通用接口来访问存储区数据,硬件驱动部分也不断地将最新的现场数据写入到数据区。如果服务器程序实现了IOPCBrowseServerAddressSpace可选接口,那么客户程序可通过该接口浏览到数据存储区中数据项的名称。
在实际的设计过程中模仿OPC规范中组织数据的方法来组织数据存储区,通过设计对应的CGlobalServer、CGlobalGroup、CGlobalItem 3个数据项类来管理数据存储区。其中CGlobalServer包容了CGlobalGroup类对象的实例并定义了一些成员函数对CGlobalGroup类对象的具体数据进行操作,而CGlobalGroup类包容了CGlobalItem类对象的实例并定义了一些成员函数来对CGlobalItem类对象的具体数据进行操作,CGlobalItem数据项类包括了数值(Value)、品质(Quality)、时间戳(Time Stamp)3个基本属性,另外还有数据项名称、工程量单位等属性。由于数据项总是和具体的硬件相关,因此需要添加与设备有关的属性以及相关函数来设置和获取这些属性。
4OPC 数据交换服务器在以太网控制系统中的应用
为了更好的解决信息交互问题,OPC基金会于2003年3月发布了OPC数据交换(Data eXchange)的1.0规范。它其实是一个OPC以太网数据交换标准,是对数据存取规范(DA)的扩展,与数据存取规范的最大不同在于数据存取规范解决的是现场信息在控制网络中纵向传输问题,而数据交换规范(DX)解决的是现场信息在控制网络中的横向传输问题。该规范提出一个标准的组态接口架构,使得任何控制网络上的OPC数据存取服务器之间只要支持该接口就能通信。同时它还支持远程的组态、诊断、监控、管理,目标是Plug & Play(即插即用)。图3显示了OPC数