激励式仿真机实时数据OPC异步通讯的研究--控制网



激励式仿真机实时数据OPC异步通讯的研究
企业:控制网 日期:2009-11-26
领域:电源 点击数:1311
   摘  要:OPC (OLE for Process Control) 技术是随着自动化生产和系统融合的需要而发展起来的,它继承和发展OLE/COM 技术,在过程工业控制中方便地实现了不同系统之间的通讯和数据交换。本文通过介绍OPC技术的工作原理,结合激励式仿真机的工作机制,给出OPC异步通讯的开发方法及使用Visual C++6.0的具体实现。根据仿真系统支撑平台的实时性要求,利用内存映射文件建立系统运行的实时数据库,即通过内存映射文件开辟共享内存区并对其进行数据操作。该方法既能实现多个进程数据的共享,又保证了实时的响应速度以便在Ovation DCS服务器数据库中读写数据。具有数据传输速率快,安全可靠性高的优点,在火电厂自动化中有很强的通用性和实用性。

    关键词:
激励式仿真机;OPC;组件对象模型;异步通信;内存映射文件

    Abstract:
With the development of automatic manufacture and unitized system, the OPC (OLE for Process Control) technology is growing and can satisfy the need of their development. The OPC technology inherit and develop the OLE/COM technology, and can easily realize the communication and datum exchange between the different systems in the process industry. This article provides the way of exploring OPC asynchronous communication and its fulfillment in Visual C++6.0 via the introduction of the working principles of OPC technology combined with the working mechanism of stimulative simulation system. According to the real time requirement of the supporting platform of simulation system, this paper establishes the real time database in the course of memory mapping file; sets up a sharing memory area by memory mapping file,and realizing the operations of the sharing memory area. This method not only has realized the sharing of a lot of process data,but also guaranteed the prompt response speed to read and write the Ovation DCS Server Database. The program have a lot of merits with fast data transfer rate and high security and authenticity, it has strong reliability and practicability in power plant automation.

    Key words
: Stimulative Simulation; OPC; Component object model; Asynchronous communication; Memory mapping file

    1 引言

    激励式仿真机是仿真技术与DCS技术发展到一定阶段相结合,将DCS与火电厂热力设备和机组模型直接对接构成的仿真系统,是从不同的角度思考并最终实现的崭新的仿真模式。

    全激励模式保留原有的分散控制系统软件和硬件,接入一个只限于实现热力设备和机组模型仿真的仿真计算机。由于此类仿真系统动态数据交换量庞大,为满足数据通讯的实时性要求和避免系统的高负荷运行,激励式系统DCS服务器数据库至仿真计算机之间的数据通讯则可以通过仿真系统局域网中的两台PC机基于OPC技术实现。



图1 激励式仿真机系统软件配置图
    2  OPC技术

    OPC技术是OLE技术在控制领域的应用,它通过微软的COM/DCOM组件实现一套标准的OLE接口,用这些接口,用户可以无缝访问火电机组生产现场中的数据。

    2.1 OPC技术基础COM/DCOM

    COM (Component Object Model,组件对象模型)是由Microsoft提出的组件标准,客户程序与COM组件程序进行交互的实体是COM对象。接口是包含了一组函数的数据结构,也是COM对象与外界进行交互的唯一途径。如果一个COM对象支持一个或多个出接口,即组件对象要主动与客户进行通信,则这样的对象为可连接对象(Connectable Object),或者源对象(Source)。客户与可连接对象之间的通信是双向的。

    DCOM(分布式组件对象模型)是COM的扩展,它可以支持不同计算机上组件对象与客户程序之间或者组件对象之间的相互通信,这些计算机可以在局域网内,也可以在广域网上,甚至通过Internet进行连接。DCOM己经处理了底层网络协议的所有细节,所以我们可把重点放在应用的业务逻辑上,而不必再为底层处理费时费力。

    2.2 OPC通讯方式比较

    OPCDA规范规定了两种通讯方式:同步通讯和异步通讯。同步通讯时,OPC 客户程序对OPC服务器进行相关操作时,客户程序必须等到服务器对应的操作全部完成以后才能返回,在此期间客户程序一直处于等待状态,如进行读操作,那么必须等待服务器完成读后才返回。因此在同步通讯时,如果有大量数据进行操作或者有很多OPC客户程序对OPC服务器进行读、写操作,必然造成客户端的阻塞现象。因此同步通讯适用于OPC客户程序较少,数据量较小时的场合。

    异步通讯时,OPC客户程序对服务器进行相关操作时,客户程序操作后立刻返回,不用等待服务器的操作,可以进行其他操作。当服务器完成操作后再通知客户程序,如进行读操作,客户程序通知服务器后离开返回,不等待服务器的读完成,而服务器完成读后,会自动的通知客户程序,把读结果传送给客户程序。因此相对于同步通讯,异步通讯的效率更高,适用于多客户访问同一OPC服务器和大量数据的场合。

    3   系统实现与测试

    3.1 异步通信实现

    Ovation DCS服务器数据库中包括AI,AO,DI,DO数据类型,在实际DCS中对应现场的测点与执行机构。对于全激励式仿真模式,只涉及实际系统部件的建模,不涉及控制模型,因此首先需要实现模型侧数据点与DCS数据点的匹配。

    其次,在全激励式仿真机系统中,动态交互数据量庞大,同步通讯是绝对不能满足要求,只能使用异步方式。异步通讯就是通过COM/DCOM机制中的连接点实现的。可连接点对象通过IConnectionPointContainer接口管理所有的出接口。

    对应于每一个出接口,可连接点对象又管理了一个连接点(connection point)对象,每一个连接点对象实现了IConnectionPoint接口,仿真机模型侧通过连接点对象建立接收器与可连接对象的连接。为了使用连接点(IConnectionPointContainer 和 IConnectionPoint 接口),仿真机模型侧必须创建一个对象支持IUnknown和IConnectionPoint接口,以便传递一个指针给IUnknown接口去激活DCS服务器的连接点。可连接对象的基本结构如图1。



图2 可连接对象基本结构
 
    最后,具体实现异步读取数据时,DCS服务器主动和仿真机模型通信。此时,服务器提供出接口(Outgoing Interface),这些出接口是由仿真机模型实现,并将接口指针告诉DCS服务器对象,然后服务器对象就利用此接口指针与仿真机模型进行通信。而仿真机模型侧则通过接收器sink(其接收器应该至少实现 IUnknown 和 IOPCDataCallBack 接口)来实现这些接口的对象。这样对仿真机模型侧来说,可以通过常规方式调用服务器的接口,也可以通过接收器接受DCS服务器发送的通知或事件,对DCS服务器来说,它的入接口和出接口分别承担了这两个通信过程,这样就实现了C/S的双向通信。异步通信的实现由定义接口开始,主要代码如下:

    IConnectionPointerContainer* pCPC;

    IOPCAsyncIO2* pASIO2;

    IOPCDataCallBack* pDCB;

    IConnectionPoint* pCP;

    Punk->QueryInterface(IID_IConnection, PointContainer, &pCPC);

    PCPC->FindConnectionPoint(IID_IOPC, DataCallBack, &pCP);

    通过查询,如果支持接收器对象,则在DCS服务器与仿真机模型之间建立连接,并返回连接点对象生成的唯一标志此连接的32位整数m_dwcookie:

    pCP->Advise(&pDCB,&m_dwcookie);

    设置刷新速率IOPCGroupStateMgt* pGSP;

    PGRP->SetState(&RequestedRate,&Rate, &Active, 0, 0,0,0);

    异步读数据, 传递事务ID给OnReadComplete函数。    

    pASIO2->Read(1000,&m_phserver, m_dwtranscationID, &m_pdwcancelID, &hr);

    异步写数据,传递事务ID给OnWriteComplete函数。

    pASIO2->Write(1000, &m_phserver, &m_pitemvalues,m_dwtransactionID, m_pdwcancelID, &hr);

    在仿真机模型侧调用异步读写操作或者组对象项成员的数据发生变化时,组对象对仿真机模型侧发出如下事件OnDataChange函数,只需在该函数中添加一些读写共享内存的语句。

    STDMETHODIMP OnDataChange(DWORD dwTransid,OPCHANDLE hGroup, HRESULT hrMasterquality, HRESULT

    hrMastererror, DWORD dwCount, OPCHANDLE __RPC_FAR *phClientItems, VARIANT __RPC_FAR *pvValues, WORD __RPC_FAR *pwQualities, FILETIME __RPC_FAR *pftTimeStamps, HRESULT __RPC_FAR *pErrors);

    dwTransid:由仿真机模型侧发送的事务标识符。

    dwCount:要读取的数据或品质发生变化的Item数目。

    phClientItems:OPC ITEM的客户句柄数组。

    pvValues:返回的数值数组。

    pwQualities:返回的质量戳数组。

    pftTimeStamps:返回的时间戳数组。

    当仿真机模型侧需要取消与DCS服务器的连接时,调用带有同样连接标识的Unadvise来取消连接。并且删除Item,释放异步接口,释放Item管理接口,删除Group对象,释放OPC服务器,关闭COM库等,以释放占有资源。异步通信结构如图2所示。



图3  OPC异步通信结构示意图
 
    3.2 内存映射文件实现

    由于实时仿真数据库被多个进程共享,必然涉及到仿真机支撑系统与OPC客户端程序之间的实时数据通信。解决的有效方法就是利用内存映射文件方式创建一个足够大的共享内存空间,由于32位Windows操作系统具有多达2GB的用户可用的线性内存空间,可以处理上百万的变量,这样完全满足火电厂全激励式仿真系统支撑平台的要求,通过编制一系列的接口函数对建立的共享内存中的数据进行操作。

    此外,由于该共享内存中的数据可为多个进程共享,因此各个接口函数都提供了同步机制,使用互斥量的同步对象CMutex实现。这些接口函数都封装在动态链接库中,通过这些接口函数,既能实现多个进程间数据的共享,又保证了实时的响应要求。实现关键代码如下:

    HANDLE hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, ShareMemory, MAP_FILE_NAME );  

    if ( hFileMap == NULL)   

          return;

realValue = (float *)MapViewOfFile( hFileMap,FILE_MAP_ALL_ACCESS,0, 0, ShareMemory );

if ( realValue == NULL ) { 

          CloseHandle( hFileMap ); 

          return;  

      }

    4  结论

    在实现全激励式仿真机实时数据通信的过程中,起初鉴于ADO技术具有高速访问数据源和程序占用内存少的特点,曾采用了SQL Server 2000,Access等传统数据库作为实时数据库,但实际使用中明显有系统负荷高,占用资源大,响应速度慢等严重缺点。这是没有充分考虑到具体系统条件及要求所造成的。

    通过改进实践表明,基于OPC的全激励式仿真系统实时数据异步通讯方案是可行的。并以内存映射文件加以实现的实时数据库在共享内存中以结构数组的形式存储,使得整个仿真机系统结构紧凑、效率高,且对系统资源的要求降低。实现了大量数据的快速交换,符合电力生产中数据的响应速度。

    参考文献:

    [1] 何海江.OPC客户端关键技术的实现[J].微计算机信息 2003,19(7):76—78.

    [2] 郑立.OPC应用程序入门[M].OPC(中国)基金会,2002.5

    [3] 刘国平,柳林林,刘利云.基于OPC服务器自动化接口的客户端程序的设计[J].自动化技术与应用,2005,24(9):33—35.

    [4] 潘爱民.COM原理与应用[M].北京:清华大学出版社,2000.3

    [5] 司纪刚.OPCDA服务器与客户程序开发指南修订版.2008.1

    [6] OPC Foundation,OPC Data Access Custom Interface Standard,Version 2.0



 
  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: