关键词 激励式仿真机;OPC;组件对象模型;异步通信;内存映射文件
摘 要 本文通过介绍OPC技术的工作原理,结合激励式仿真机的工作机制,给出OPC异步通讯的开发方法及使用Visual C++6.0的具体实现。利用内存映射文件建立系统运行的实时数据库,通过内存映射文件
1 引言(浅谈激励式仿真机实时数据OPC异步通讯的研究)
激励式仿真机是仿真技术与DCS技术发展到一定阶段相结合,将DCS与火电厂热力设备和机组模型直接对接构成的仿真系统,是从不同的角度思考并最终实现的崭新的仿真模式。
全激励模式保留原有的分散控制系统软件和硬件,接入一个只限于实现热力设备和机组模型仿真的仿真计算机。由于此类仿真系统动态数据交换量庞大,为满足数据通讯的实时性要求和避免系统的高负荷运行,激励式系统DCS服务器数据库至仿真计算机之间的数据通讯则可以通过仿真系统局域网中的两台PC机基于OPC技术实现。(浅谈激励式仿真机实时数据OPC异步通讯的研究)
图1 激励式仿真机系统软件配置图
2 OPC技术(浅谈激励式仿真机实时数据OPC异步通讯的研究)
OPC技术是OLE技术在控制领域的应用,它通过微软的COM/DCOM组件实现一套标准的OLE接口,用这些接口,用户可以无缝访问火电机组生产现场中的数据。
2.1 OPC技术基础COM/DCOM
(浅谈激励式仿真机实时数据OPC异步通讯的研究) 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 系统实现与测试(浅谈激励式仿真机实时数据OPC异步通讯的研究)
3.1 异步通信实现
Ovation DCS服务器数据库中包括AI、AO、DI、DO数据类型,在实际DCS中对应现场的测点与执行机构。对于全激励式仿真模式,只涉及实际系统部件的建模,不涉及控制模型,因此首先需要实现模型侧数据点与DCS数据点的匹配。
其次,在全激励式仿真机系统中,动态交互数据量庞大,同步通讯是绝对不能满足要求,只能使用异步方式。异步通讯就是通过COM/DCOM机制中的连接点实现的。可连接点对象通过IConnectionPointContainer接口管理所有的出接口。
对应于每一个出接口,可连接点对象又管理了一个连接点(connection point)对象,每一个连接点对象实现了IConnectionPoint接口,仿真机模型侧通过连接点对象建立接收器与可连接对象的连接。为了使用连接点(IConnectionPointContainer 和 IConnectionPoint 接口),仿真机模型侧必须创建一个对象支持IUnknown和IConnectionPoint接口,以便传递一个指针给IUnknown接口去激活DCS服务器的连接点。可连接对象的基本结构如图2所示。(浅谈激励式仿真机实时数据OPC异步通讯的研究)