MACSVDCS翻译型仿真软件的开发
1虚拟DCS
虚拟DCS将DCS的组态数据直接输入仿真机或者转换至仿真机能够识别的格式,使其能够模拟DCS分散处理单元(DPU)的计算功能.
翻译型仿真机通过编程实现DCS到仿真平台的自动转换,使仿真机脱离DCS的软、硬件系统,在通用计算机环境下再现DCS的逻辑和画面组态,包括逻辑组态和操作画面的转换.
2逻辑组态的转换
DCOSE仿真支撑平台采用MicrosoftVisio作为建模平台,因此该转换过程主要将DCS的逻辑组态移植到Visio上,生成相应的虚拟DPU。转换分为功能块模具的整理、控制算法的实现、组态文件的翻译和虚DPU的加载运行4个部分。
2.1功能块模具的整理
通常,DCS的逻辑组态以控制算法模块为zui小组态单元,为了在Visio上重现与DCS组态基本一致的控制逻辑,采用的模块必须与DCS模块具有*一致的外部特征,包括端口名称、数量、各参数默认值等。依据基本算法模块说明整理、生成固定格式的算法资源XLML文件(图1),并通过DCOSE模块转换工具转为Visio模具。该文件定义了各模块端口及系数的名称、类型、默认值等,并提供端口与仿真平台数据类型的绑定信息,以备控制算法使用。
2.2控制算法的实现
控制算法的实现主要通过对功能块说明文档的研究,根据产生的XML文件,使用MicrosoftVisualC++编写相应的代码,实现各功能块的功能,并编译生成算法动态链接库DLL文件,供仿真平台调用。
2.3组态文件的翻译
MACSVDCS采用CoDeSys环境进行组态,通过组态环境从DPU中导出,成为独立文本格式的EXP文件。翻译程序以EXP文本文件为数据源,读取各功能块的名称、类型、位置、调用顺序、输人输出的连接关系、系数的默认值等信息,并将读取的信息分类后通过VisioSDK自动生成相应的Visio文件,从而形成与DCS逻辑组态*一致的逻辑关系。在此过程中,根据源文件中给出的标签名.将所有模块所需的数据点添加至DCOSE数据库中,作为仿真运行实时数据库的数据源。
MACSVDCS允许组合模块(将几个模块连接成组)构成功能更加复杂的自定义算法模块,即宏模块。对于宏的处理,以往通过对宏内部的逻辑运行机制的理解,采用手工方法构建相应的基本模块来实现算法。此种方式一旦宏内部的逻辑发生改变,必须重新封装相应的模块并更新算法。
在翻译程序中,实现了对宏模块的自动转换,即在翻译过程中根据源文件中宏模块实例的信息,将该宏模块内部所有的模块统一实例化,并在zui终的调用序列中将该宏模块所对应的逻辑替换至其所在的逻辑页面,以实现宏模块的运算功能。
2.4虚拟DPU的加载运行
通过在周期内顺序调用一系列算法模块实现MACSVDCS的虚拟DPU运行(图2)。使用DCOSE仿真平台提供的自动化建模辅助工具(Cambench),从转换的VSD文件中提取相关模块信息,建立可由DCOSE加载运行算法调用的序列文件(RTE)。该文件按照VSD内的模块顺序储存相应的算法调用入口列表,并依次存储各算法所调用的参数(实时数据库中对应数据点的偏移量)列表。RTE文件可在教练员站直接加载并运行,DCOSE提供了线程和进程2种RTE文件的执行模式。采用线程模式运行的虚拟DPU将由仿真平台实时引擎(RTSrv)统一调配和管理;采用进程模式运行的虚拟DPU各自拥有独立的进程,互不干扰。
通常,虚拟DCS运行需要在同一个周期内完成所有虚拟DPU算法的执行,因此运行虚拟DPU的主机应具有主频为2.8GHz以上的Pentium处理器和容量为2G以上的内存。
3逻辑画面的转换
为了取得与MACSVDCS—致的操作画面,将各种操作画面图形文件转换生成SVG图形文件,并由扩展SVG图元属性描述,其部分属性有visible(通过变量控制图元的显示及隐藏)、dynamic-fill(动态填充,通过变量控制图元填充颜色的变化)、dynamic-fill-value(动态填充的1种或多种颜色,由动态填充的函数值选取颜色)、text-value(动态文本显示,对应于文字动态特性,将文字转换为实时数据库点值或时间)、text-value-format(动态文本显示格式)。
为了定义数据源,同时自定义了variable(变量定义)和妇女ction(函数定义)2个关键字。variable通过name、type、size等属性描述变量的名称、类型和长度;function通过expression、type等属性,描述函数的表达式和返回值类型等。结合动态属性和变量、函数定义就可以描述图形的动态属性。
3.1文件解析
不同DCS生成的图形文件格式会有较大的差别,但所包含的有效信息基本致,即包含静态图元及其动态特性。MACSVDCS的文件总体结构由文件头和多个图元信息组成,其中图元信息包括静态、动态、交互和图元个性等信息。
静态图元由点、直线、圆、椭圆、多边形、多折线等基本几何形状组成,每种几何形状附带颜色、填充等属性。图元动态特性分为动态和交互2种特性。动态特性包括显示隐藏、闪烁、缩放、平移、填充、变色、文字等影响图元的特性;交互特性为推出窗口、Tip显示、切换底图、增减值等影响整个画面的特性。
3.2画面文件的翻译
面向对象构建文件类、图元类、动态类、交互类4个对象。其中,文件类定义1个STL容器,以存储多个图元类对象,与此类似每个图元对象均有2个STL容器分别存储动态类和交互类对象。采用多态共有继承的编程方法使各图元、动态和交互特性分别继承其父类。由于图元、动态和交互特性的基类与其派生类的关系大致相同,因此以图元类为例,给出图元类与派生类的泛化关系(图3)。
将文件的各图元信息读人并分类后,根据SVG形文件格式的特点,将信息写成相对应的节点属性,矩形图元的静态特性主要有左上点及下点坐标、封闭区域特征等。对于创建矩形对象(rect)节点的左上点坐标、宽、髙、填充属性,宽、高属性可以直接由坐标计算,填充属性则根据封闭区域特征的填充方式及填充颜色等信息确定。
MACSVDCS画面对图元zui多可有5个颜色变化,每种颜色变化均由1个或多个条件控制。将每种变化的条件糅合成1个函数定义,依据各个颜色变I优先级的程序函数式为:
X1、X2的下标值越小优先级越高。当X1值非0时,函数值为1;当且仅当X1为0,即zui高优先级的件条不满足吋,再考虑X2的颜色变化。
当根据文本文件解析处理组合图元中的各个子图元的动态特性时,子图元的动态信息有时会统一存储于组合图元的图元共性库中。为了减少SVG图形文件的扩充属性,便于二次开发,将组合图元分解成多个子图元,子图元继承组合图元的动态特性。处理含有条件属性的动态特性时要增加相应的函数定义方法。为了避免函数重复定义,首先定义组合图元的优先级高于各子图元的优先级,再分别处理组合图元的动态特性,并将处理后的各动态信息分别存人组合类库,后在图元基类库中定义1个组合类指针(仅对组合图元内的子图元有效),当图元的组合指针值非零时复制指针的动态信息,并将其添加到子图元的动态库今图元交互特性处理方法同上。
组合图元的变色特性较为复杂,组合图元通过各个子图元的颜色差异产生立体感。根据红、绿、蓝3种色彩的分布,提取变色特性的R、G、B3个颜色变量,对各子图元的本色进行处理:颜色变量为0时,滤除本色对应的颜色值;颜色变量为255时,对本色中相应的颜色值不做变换;颜色变量为其它值时,与255相除得到比例值后,对本色中相应的颜色值按比例降低。
3.3操作员站的仿真
将MACSVDCS操作画面转换为DCOSE:可处理的动态图形文件。将仿真平台操作员站的图源路径设定为转换后的图形所在目录,并首张操作画面名称,即可自动实现操作员站的仿真。由于翻译过程必须建立在原始両面资料完备的基础上,即虚拟DCS翻译范围局限于具有原始文件的DCS操作阃面。对DCS中无文件支持的滚动报警、事件顺序记录(SOE)等功能采用DCOSE仿真平台提供的对应功能。