时间:2024-05-04
樊智勇,张 同,刘 涛
(1.中国民航大学 工程技术训练中心,天津 300300 2.中国民航大学 电子信息与自动化学院,天津 300300)
多电飞机采用电力作动方式为飞机操纵、环控、液压、燃油、起落架等系统供能,大大改善飞机的可靠性与灵活性[1]。为了进一步对多电飞机机电系统进行综合化研究,需要使用不同专业仿真软件建立相应模型进行联合仿真,为了融合多领域仿真数据,采用DDS(data distribution service)[2-4]总线作为通信中间件进行模型间的数据交互,从而保证分布式仿真系统的实时性与交互性。由于机电系统参数复杂且分布在不同仿真节点上,在对模型进行参数查看与修改时,需要分别在各仿真节点的子模型中进行操作控制,过程繁琐,降低机电系统集成测试效率;而且传统的监控技术需要通过代码定制开发实现,当任务需求或者被控对象一旦发生更改时,需要专门的开发人员重新进行开发,工作量大、开发周期长、成本高[5]。组态监控软件界面直观、可操作性强[6],可实现对系统的实时过程监控,并在很多工业生产线以及各类监控系统中得到广泛使用,如导弹测控工程[7]、新型支线客机监控系统[8]等。
将组态监控技术应用于基于DDS的飞机分布式仿真系统中,不仅可以灵活配置监控界面以及用户关注参数,将仿真结果以图表、曲线、动画等多种方式显示出来,使操作人员更加直观地监控机电系统的运动过程以及精确掌握机电系统的运行状态,而且当飞机仿真模型功能结构发生变化或者扩展新的功能时,只需做部分修改,不会严重影响组态监控的整体架构,这将大大有利于整体系统数据采集的运行维护,提高不同构型下飞机分布式仿真系统的仿真验证效率,具有重要的理论意义与工程应用价值。
分布式仿真平台采用Matlab/Simulink、AMESim、FlightSIM等专业仿真软件分别建立了飞机液压、燃油、起落架、防除冰等机电子系统模型,在系统集成仿真过程中每个分布节点采用DDS作为通信中间件,进行大量、实时和高效的数据传输[9-10]。该仿真平台主要由仿真设计运行管理环境、并行分布式解算环境两部分组成,其中仿真设计运行管理环境主要包括仿真系统设计模块和仿真运行管理模块,负责完成对仿真模型的封装、配置和管理;并行分布式解算环境主要包括DDS总线、仿真主、子引擎和模型接口。各仿真模型接口通过调用嵌入接口内部的仿真子引擎,将仿真模型与DDS总线进行连接,实现多个仿真任务的并行运算。
组态监控平台分为组态设计环境与组态运行环境,支持与数据采集设备进行数据交换以及将设备底层数据与组态界面上的图元进行动画连接,通过定义I/O变量实现与外部进行数据交互,其中I/O变量需定义数据交换属性、采样频率、规定数据在组态界面的最大值、最小值、ID和变量名称等信息,然后将I/O端口变量与组态界面中的组件通过表达式、动画、脚本等方式建立动态链接,当用户对组件进行数据输入时,则输入的值自动赋给同其关联的变量,并自动刷新与此变量关联的组件显示[11]。组态设计环境将配置好的图形界面统一生成图形资源文件xdg与属性配置文件xml供组态运行环境加载显示,其中xml配置文件包含变量与组件之间的各种动态关联信息。
通过在组态监控平台上设计各机电系统组态监控界面,以及设计数据接口实现仿真运行管理模块驱动组态监控平台从DDS总线上获取不同仿真子模型的仿真数据并实时驱动画面动态显示,实现在组态监控界面中对分布在不同节点仿真模型的运行控制与实时调参,分布式仿真组态监控整体框架如图1所示。
图1 基于DDS的分布式仿真平台监控系统架构
数据接口模块负责与组态监控平台搭建的组态监控界面I/O端口进行链接,同时初始化、控制界面组件与DDS中的模型数据进行交互等。平台根据模型端口输入、输出关系定义了Output、Input、Signal、Parameter 4种变量类型,其中Output为向外界输出的数据,Input为从外界获取的数据,Signal为支持在线监视的数据,Parameter为支持在线修改的数据。组态监控平台通过该数据接口实现对这4类端口变量进行订阅,并通过静态框、图表等方式监测模型Output、Signal端口变量,同时对Input、Parameter端口变量进行发布,通过编辑框、按钮等操作写入Input、Parameter端口变量,实现对模型的实时调参与运行控制。为了便于组态监控平台在DDS的自动发现过程中进行端口信息匹配,需对模型端口变量定义唯一标识符,包括端口类型、名称、ID、数据类型等,其中端口命名规则一般为模型名称_组件含义_端口类型,如ATA28_CTR_TEMP_OUT为燃油系统中央油箱油温输出端口,ATA27_FLAP_POS_SIG为飞行高升力系统襟翼位置信号端口,FLISIM_IAS_IN为飞行环境模型的空速激励数据输入端口等。
将可视化组件与端口变量通过表达式、脚本等方式进行绑定,使其与DDS数据传输相结合,实现数据的接收显示。分布式协同仿真平台与组态监控平台的数据交互过程分为发布过程和订阅过程,它是由发布端、订阅端、全局数据空间三者共同交互完成的。
当机电系统模型作为发布端发布主题信息时:
1) 通过域参与者工厂participatent factory的CreateDomain participatent创建域参与者participatent,一般为分布在各仿真节点的机电子系统,如ATA32_MLG主起落架系统;
2)通过CreateDomain Publisher和CreateDDSTopic创建发布者P和主题T,并通过SetDataType()注册要发布参数的数据类型,如ATA32_MLG系统发布功率输出端口信息ATA32_MLG_POWER _OUT,其中端口名称为主题名称;
3) 发布者P通过CreateDatawriter创建一个数据写入者DW,数据写入者DW将要发布消息的主题以及可以提供的QoS写入到全局数据空间中;
发布成功后DW进入阻塞状态,当检测到本节点有满足订阅者订阅的主题数据时,激活数据写入者将数据发送给组态监控平台的节点上。
当组态监控平台节点作为订阅端订阅主题信息时:
1) 通过域参与者工厂participatent factory的CreateDomain participatent创建域参与者participatent,如起落架监控界面LandingGear;
2)通过CreateDomain Subscriber和CreateDDSTopic创建订阅者S和主题T,并通过SetDataType()注册要订阅参数的数据类型,如与ATA32_MLG_POWER _OUT端口变量绑定的文本框要接收主起落架功率输出数据;
3) 订阅者S 通过CreateDatareader创建一个数据读取者DR和数据监听者Listener,数据读取者DR将要订阅的主题信息与QoS发送到全局数据空间中,接着DR进入“等待接收数据”的状态,当数据监听者监听到有数据到达时则通过回调函数激活数据读取者进行读取数据。
基于DDS的发布订阅过程如图2所示。
图2 DDS发布/订阅过程
基于RTI_DDS的分布式仿真平台与组态监控平台的基础上,通过对相关函数进行封装,形成组态监控平台的通用接口HMIDataDll动态链接库,组态监控平台通过该接口与DDS分布式仿真平台中的模型端口变量进行发布订阅操作。
组态监控平台的I/O变量是针对现场实时数据以类的形式来对数据结构进行管理,每个类具有自己的属性与方法,每种数据结构对应一种变量类型并与操作管理程序完好的封装在一起。在接口设计时,定义 SignalElement类对应模型全部Output、Input、Signal、Parameter端口变量的数据结构,以便实现组态监控平台对DDS总线中所有属于SignalElement类的数据执行读取操作;定义ParameterElement类对应模型全部Input、Parameter端口变量的数据结构,以便组态监控平台对DDS总线中所有属于ParameterElement类的数据执行写入操作。
接口设计实现过程分为3个阶段:
1) 组态显示初始化阶段:通过调用HMIDataInit(const char *strPrjName)函数进行仿真工程初始化,调用int Analysis xml()/nwf()/xdg()/tagxml()等函数加载仿真工程配置文件xml、网络表文件nwf、图形资源文件xdg、组件与变量连接文件tagxml等,以获取模型仿真信息,包括仿真工程名称及路径、仿真起始时间、模型解算步长、模型名称、端口变量名称、数据类型等信息,并生成与模型端口一致的变量列表;获取组态界面中所有组件属性信息;获取组件与端口变量绑定参数信息;当DDS总线返回HMIDataDLL Initialize Success函数,表明动态链接库初始化成功。
2) 组态显示阶段:仿真开始时,组态监控平台调用int HMISqlData()函数获取当前DDS总线的仿真时间,调用int HMIGenData(const char *strVarName, int nValueType, void *sVar, void *dValue)函数获取DDS总线中仿真子引擎写入的模型端口参数并存储到变量列表中,其中const char *strVarName为仿真变量名称,int nValueType为变量数据类型,void *sVar为变量信息结构体,包含变量的模型ID、变量类型、变量ID、变量维度、监视选项和初值等信息,void *dValue为返回当前变量的仿真数据。组态监控平台将读取的数据存放到变量列表中,根据工程定时执行脚本设置的数据采集时间间隔进行数据采样以及画面刷新。当在组态界面输入控制指令或者模型参数发生改变时,调用int HMITraData(const char *strVarName, int nValueType, void *sVar, void *dValue)函数将数据信息写入DDS总线中,参数含义同上,此时仿真子引擎将仿真数据传递给相应仿真模型端口,然后发送设置成功指令给仿真主引擎,仿真主引擎告知仿真运行管理环境设置成功,实现对模型的实时调参与运行控制。
3) 组态显示结束阶段:调用HMI结束函数int HMIDataClose(),关闭总线接口,释放所占用的资源。
多电飞机机电系统分布式仿真的组态监控过程如图3所示,首先在分布式仿真平台中设计系统仿真模型,配置模型参数信息,包括模型端口名称、端口数据类型、端口数据初值、行数与列数等;其次在对仿真模型完成设计后,初始化所有输入输出端口,明确输入输出端口个数;然后判断是否有模型描述文件生成,若有,则进入仿真,等待仿真子引擎与主引擎进行控制流、指令流的交互,并触发模型进行解算,若无,则模型转至空,结束仿真,其中模型描述文件是在模型编译完成时生成的文件,包含了所有仿真模型端口信息;最后等待模型一次解算完成,仿真子引擎通过模型接口获取模型输出端口数据并将其发送到DDS总线中,此时通过DDS的自动发现匹配,组态运行环境通过数据接口中的功能函数获取总线中的指定端口数据,并传送到变量管理模块的变量列表中,驱动组态界面的动态显示与数据更新,同理当组态监控界面进行参数调整或者发布控制指令时,组态运行环境调用功能函数将数据发布到DDS总线中,通过DDS的自动发现匹配,仿真子引擎获取模型参数或控制指令,将其写入仿真模型端口变量或控制模型运行状态。
图3 仿真模型监控框架图
其中仿真模型解算线程如图4所示。
图4 仿真模型解算线程图
组态设计环境在仿真模型运行时,通过加载组态设计环境搭建好的图形资源xdg文件与界面配置xml文件还原组态监控界面元素,以及明确需要从DDS总线中发布订阅的具体端口变量,通过DDS中间件匹配model ID、name,port ID、name,数据结构等信息的端口变量,若发现匹配成功的信息,则获取DDS总线中的数据至变量列表并驱动界面组件动画显示。
通过上述设计的数据接口,基于DDS的分布式仿真平台实现以文本、曲线、动画等方式监控分布在不同节点的仿真模型端口变量的变化情况,由于篇幅原因,下面以飞机主起落架收放系统为例说明组态监控实现过程。
参考某型飞机结构参数手册,分布式仿真平台建立的主起落架收放系统模型主要由旁通阀、收放控制阀、上位门锁作动器、起落架锁作动器、支撑杆下位锁作动器、边侧杆锁作动器、门收放作动器、起落架收放作动器等功能设备组成,并由中央液压系统提供能源,通过AMESim模型通用接口将其集成到分布式仿真平台中与其他模型进行联合仿真。该模型一共有33个输入、输出端口,其中该模型提供的可以在DDS中传输的端口变量如表1所示。
表1 主起落架收放系统模型端口变量
利用组态监控平台的可视化图形编辑界面、脚本编辑、趋势处理等功能设计所需组件,参照飞行手册以及仿真模型进行界面合理布局,直观显示起落架收放系统运行状态。首先利用模型库中的单向阀、节流孔、作动筒、两位三通电磁换向阀、三位四通电磁换向阀等组件进行不同组合搭配,定义系统中的上位锁作动器、阻力杆下位锁作动器、侧拉下位锁作动器、主起落架收放作动器、舱门上位锁作动器、主起控制阀、主起舱门控制阀、舱门应急操作阀等功能设备,然后设置管路连接中央液压能源系统以及主起落架系统的各组件设备,用于表示其能量流动关系,其中管路填充色为蓝色、线宽为4 mm,动画定时为100 ms。将界面组件定义唯一ID号并与变量列表中的对应端口变量建立动画链接,如建立如下条件表达式ATA32_MLG_SBDLKA_POS_SIG*200表示将边侧杆下位锁作动器控件与仿真模型的ATA32_MLG_SBDLKA_POS_SIG端口变量建立链接,设置最小值0、最大值100等参数,将端口变量计算后得出的数值作为控件动态反应的条件值,同理设置其他作动器、控制阀与对应端口变量的动态链接。设置窗口界面刷新频率为2 ms/次,在界面右上角的起落架系统功率曲线按钮设置左键抬起动画,将其与曲线监控界面进行链接,以便监测系统功率输出趋势。建立的组态模型如图5所示,图中以3种不同类型的矩形框与椭圆表示仿真模型的3个端口变量在组态界面中与相应组件的对应显示关系。
图5 主起落架收放系统监控模型
分布式仿真平台共有28个飞机机电系统子模型,有1 647个模型端口变量,如图6所示,在组态监控平台上搭建了飞机液压、燃油、发动机、环控、供配电系统为单位的组态监控界面,将界面组件与对应端口变量建立链接,将仿真参数以变色、闪烁、动画等方式显当机电系统进行联合仿真时,通过数据接口可以在组态监控画面中以仿真和飞行状态实时监测系统设备的运行状态,可以在系统原理图中直观观测系统设备的工况;以文本、曲线、仪表等方式实时显示机电系统端口变量的参数变化,包括飞行高度、空速、油门、油量、温度、功率等参数;支持页面切换操作,通过点击各个按钮,可以链接到对应监控界面;支持参数设定与运行控制操作,通过在编辑框内输入参数实现对仿真模型的参数调整以及当在控制面板进行操作时,可以对仿真模型进行运行控制等,实现在同一界面中以多种方式监测不同节点、不同模型的参数信息,监控效果如图7所示。
图6 模型端口变量
图7 集成验证总图
图8为起落架系统模型的功率输出曲线,其中左侧为分布式仿真平台中的AMESim仿真模型功率输出,右侧为组态监控平台监测的功率输出。由图8可知输出曲线趋势一致,表明组态监控平台能够通过数据接口实时接收仿真模型的数据并进行准确显示。
图8 起落架系统模型的功率输出
本文通过研究DDS通信机制以及组态监控技术,设计
了分布式仿真平台与组态监控平台的数据接口,建立了主起落架收放系统组态监控原理图,充分利用DDS数据分发服务的实时性、高效性以及组态监控平台良好的图形界面,大幅缩短监控界面设计周期,实现对仿真平台上由不同专业仿真软件建立的28个飞机机电系统子模型中1 647个模型端口变量的组态化显示与运行控制,直观显示各个系统模型的状态变化,改变了以往只能在指定仿真节点的仿真软件中以单一方式进行参数查看与调整,有利于用户更好的理解飞机机电系统、调配系统性能参数、优化系统集成与扩展等,提高了飞机机电系统的集成测试效率与操作便捷性。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!