本文将介绍A320自动飞行工程导入到TestManager后,使用TestManager软件,通过设置参数、故障、Python脚本,实现不同场景,不同工况,不同参数下的批量仿真,并导出仿真报告。
TestManager是GCAir自动化测试的配套工具。可实现基于需求的自动化批量仿真测试。将GCAir工程导入TestManager,根据测试需求在TestManager配置测试场景、测试用例、测试工况,运行仿真即可完成自动化批量测试,并生成测试报告。TestManager支持全虚拟系统的批量仿真测试,也支持半实物系统的批量仿真测试,可涵盖MiL、SiL,、HiL全业务流程,减少了半实物系统的开发调试、测试验证时间。其核心功能和示意图如下所示:
✓基于图形化界面开发测试用例
✓满足实时性和测试精度
✓离线开发测试用例,减少半实物仿真调试时间
✓测试用例可配置故障注入
✓复用全虚拟和半实物仿真的测试用例
✓测试报告自动生成
此工程使用GCAir系统建模工具建模,基于A320飞机气动模型搭建的虚拟驾驶员在环飞机自动飞行仿真。A320飞行过程包括起飞、爬升、巡航、下降、着陆,着陆时飞机收杆抬头保持机身状态平稳。该项目的自动飞行模块包括飞行控制、飞行计划、机场信息等,其原理如下图所示:
A320自动飞行工程原理图
对于A320自动飞行工程的批量仿真在TestManager软件中进行。
首先,将A320自动飞行的GCAir工程导入到TestManager软件中。这样,就可以在TestManager中访问和操作这个工程,实现在多种场景,多种工况配置,以及不同参数之间的排列组合;亦可通过多种方式进行配置,例如直接选择参数进行修改和配置、通过流程化Python脚本设置参数或判断条件、通过CSV的方式对参数进行插值。
在此列举出一些飞行过程中出现的工况进行批量仿真,实现4个场景,16种工况下的测试:
起飞中断
不同速度起飞中断
用故障注入的方式中断起飞
飞机已经起飞,故障注入中断失败
起飞和爬升
不同机场、不同海拔、不同航线的飞行计划
降落阶段
不同机场降落
飞机非正常落地
阵风干扰
2级阵风干扰
在不同工况下配置需要的参数,如图:
配置参数
还可以创建流程化Python脚本创建,让不会Python语言的人也能快速上手,生成Python脚本,如图:
Python脚本创建
以空速80节为一个速度节点,将中断起飞区分为低速中断,和高速中断。空速0-80节时,发生任何不正常现象,都可以中断起飞。而在空速80节后,仅当出现单发(一台发动机失效),火警,风切变或其他严重影响飞行安全的情况,才允许中断起飞。
设置Python脚本实现在速度达到40节、60节、80节时的起飞中断。
创建Python脚本,设置自定义变量,与工程变量关联,如下图:
Python脚本自定义变量
关联好变量之后,设置Python脚本,添加步骤
Step1
Python脚本step1设置
Step2
加速到AbortSpeed,所有刹车指令设置为0,发动机指令设置为1,以最大推力加速到AbortSpeed,当速度达到中断速度时,退出步骤2;
Python脚本step2设置
Step3
开始制动,关闭发动机,所有刹车指令设置为1,并循环计算刹车距离,此处是把节换成m/s然后近似对速度积分计算刹车距离,当速度小于1时,制动结束,退出step3,在step4中提前结束仿真。
Python脚本step3设置
根据需要配置用例曲线后运行。
故障注入在飞机飞行过程中的关键性作用不可忽视。为了准确模拟并评估这种情况,在仿真时间 t=300s(滑行阶段),我们会引入故障。在这个时间点,如果塔台检测到安全故障存在,将向飞机下达禁止起飞的指令,从而中断起飞过程。同时,我们在Python脚本中设置了退出条件。当飞机速度小于1且仿真步进达到50时,仿真将提前终止。这样的设置能够确保我们在飞机滑行阶段模拟了关键的故障注入和安全措施,以及对可能发生的起飞中断做出了适当的应对。
故障参与仿真
修改故障注入触发时间为500;并在Python脚本中定义一个变量step与pilot_step变量进行关联,通过step的值来判断飞机处于哪个飞行阶段,(pilot_step参数定义查看pilot_4.py文件,路径:导出的GC工程\A320_AP\meta\pilot),设置速度V关联velocities_vtrue_kts。
故障注入,判断是否起飞
当我们着重关注飞机的起飞和爬升性能时,可以通过设置参数 Flight_segment_choose=1,从飞机的起飞阶段开始进行仿真,同时选择不同的飞行计划,flightplan.xml文件中内置了7条不同的飞行计划,例如id=1,上海虹桥国际机场到北京首都国际机场;id=3,旧金山国际机场到北京首都国际机场。在仿真过程中,我们会通过其他参数和脚本,持续监测飞机的飞行阶段。一旦飞机进入巡航阶段,我们将对flag标志进行置1,仿真将提前结束,以便准确截取我们着重关注的部分。
Step1
设置一个flag变量来标记飞机的起飞和爬升阶段初始为0,当step.value>90,退出step1,并在退出时把flag的值设置为1;
Step2
当flag=1时退出工况。
不同航线起飞和爬升阶段
当我们专注于飞机的降落性能时,同样可以通过设定参数 Flight_segment_choose=2,从飞机的降落阶段开始仿真。在此过程中,我们将配合其他参数和脚本,监测飞机的速度,若其小于1且轮胎接地信号达到3,则会提前终止仿真。
在时间 t=1000 时注入故障,切断飞机动力,用来模拟飞机发动机发生故障,并通过Python脚本监测仿真的飞行阶段标志(step value)来判断飞机是否正常落地,从而决定测试结果是“pass”还是“fail”。
将风场数据纳入飞行仿真是非常重要的,因为风场数据可以影响飞机的飞行性能和行为。风场数据包括风速和风向等信息,对于飞机的起飞、着陆、机动性能等都有影响。通过导入CSV格式的2级阵风数据的方式,使得阵风干扰参与仿真,将无风时的仿真数据导入到“对应期望”,与阵风干扰仿真结果进行对比。
阵风参与仿真
Step1
点击“开始仿真”按钮,即可开始批量仿真;
Step2
点击菜单栏中的“视图”->“打开2D显示面板”,即可打开在GCAir中已经设置好的参数显示面板,如下图所示:
2D面板仿真结果曲线(全)
不同速度起飞中断及刹车距离仿真结果(部分)
点击工程区域右侧的“查看”按钮可以查看该工程的测试结果,点击菜单栏的“导出报表”按钮可以查看整个测试用例的测试结果报表,如有需要还可以点击ResultSave文件夹中存放的.csv文件查看测试数据。
测试报告截图(部分)
仿真过程数据(部分)
飞行仿真被称为航空“技术之花”,是国家航空工业必须发展的核心技术之一。飞行仿真,是利用模型复现实际飞行器系统,并通过模型实验来对已经存在或还在设计中的飞行器系统进行研究的一门综合性技术,已成为高科技产品在论证、设计、制造、验证和使用等全生命周期中不可缺少的技术手段。
通过上面的例子可以得知,在TestManager中,可以导入飞行器模型,设置不同场景不同工况不同参数,快速批量完成仿真,并且生成报告,能减少大量的重复工作,且在飞行器功能和性能测试,以及故障注入仿真中具有重要意义。
世冠科技成立于2003年,是一家专业从事工业软件系统仿真技术开发与应用的国家级高新技术企业,北京市企业科技研究开发机构、专精特新企业。为复杂装备研制单位和工业制造企业,提供可支撑产品设计研发及使用运维、覆盖产品全生命周期的完全自主研发的系统仿真工业软件和数字孪生解决方案,是国产系统仿真软件领域的领军者。