低空经济如火如荼,EVTOL热度正盛。飞控系统是飞行器的核心系统,在EVTOL上涉及到一般飞行器没有的转换阶段,在安全性上挑战更大。基于此,我们就垂直起降飞行器的飞控系统的全自主控制律开发为案例,简要介绍系统开发的流程和步骤,以及使用的工具和方法,最后用试飞验证进行展示。欢迎与有兴趣的读者互相交流,如有错误之处,欢迎指出。
本篇是正曜飞控推出的VTOL飞行器系列第二篇文章,主要介绍垂直起降飞行器(Vertical Taking Off and Landing, VTOL)在设计前的用户分析逻辑,具体功能设计与验证过程。用户需求内容可以进行回顾。
01
需求分析
需求分解的目标是为了得到清晰的架构组件,同时梳理架构组件之间的关系,为下一步的架构设计建立基础。基本过程是对具有一定概括性的顶层用户需求进行分解和补充,进而形成可用于指导开发工作的详细设计需求集。分解和补充的过程既是对需求的整理,减少因需求描述的模糊而造成的理解偏差,同时也是对需求的完善,保证用户需求本身可以被正确实现。用户的每一条顶层需求可通过设计需求集中的某几个需求实现,需求集中的每一个需求又都直接对应到控制系统中的一个或多个组件或模块,这种自上而下的需求链接关系保证了每一条顶层需求的正确性和完整性。
在Simulink我们可利用需求编辑器(Requirements Editor)来编辑和管理需求,为后续需求驱动下的开发工作实现系统性和可追溯性管理。编辑的方式可以选择手动输入,也可以选择从已有文件导入。以Word文档形式的导入为例,首先在需求文档中设置需求的大纲级别,设置完成后如图。
需求文档设置
然后在需求编辑器中点击导入然后选择文档导入即可。
导入需求文档
导入后的需求文件
02
架构设计
控制系统架构的主要组成要素是功能组件,建立系统架构的过程实际上就是定义功能组件输入输出和梳理功能组件层级关系的过程。以倾转过渡段控制策略为例。该功能的输出包括控制倾转舵机的倾转角指令、多旋翼控制和固定翼控制的分配权重、飞行器当前的过渡状态标志,输入包括用于过渡状态迁移判定的空速和地速信号、空速计和GPS信号可用的标志、倾转过渡的触发指令。根据输入和输出可以容易地确定该功能与传感器信号输入、多旋翼控制律、固定翼控制律、控制权重分配、倾转舵机信号输出等功能或外部信号间的连接关系。
梳理完成所有功能并合理划分组件层级之后,可以开始建立控制系统架构。
控制系统顶层架构框图
依据架构框图,我们可利用Simulink中的System Composer工具对上述架构中的软件层建立系统架构模型。
控制系统架构模型
在架构模型中,右键点击某个功能模块选择创建Simulink行为模型即可开展模块的功能设计,Simulink模型的输入输出可直接从架构模型中继承。
模型输入输出的继承
此外,还可通过Requirements Manager工具打开之前创建的设计需求集,将需求链接到对应的功能模块。
需求链接到模型
当需求到功能模块的链接全部完成之后,可以在需求编辑工具或需求管理工具中查看需求被实施的进度。
查看需求被实施的进度
03
功能设计
以倾转过渡段控制策略为例,首先建立功能逻辑框图。
倾转过渡控制策略逻辑框图
根据逻辑框图在Simulink的Chart模块中搭建倾转过渡控制策略状态机模型。
倾转过渡控制策略状态机模型
04
代码生成
控制器模型设计完成后,可以利用Embedded Coder工具将控制器模型自动生成为C语言的控制算法代码。除了控制算法代码之外,飞控代码还包含底层驱动代码,这部分代码由于与硬件相关程度高,不适合放在Simulink仿真环境中参与虚拟仿真,因此通常不在Simulink中模型化,而是以C/C++代码的形式与自动生成的控制算法代码结合,然后一同编译为飞控固件代码。
这一过程的具体实现方式并不唯一。正曜飞控为自己的飞控硬件开发了专用的Simulink平台目标硬件支持包,自动化水平较高。安装该硬件支持包后,仅需对模型作几步设置,然后在右键菜单中选择编译选项,即可在一分钟内一键完成飞控固件代码HEX文件的生成。
选择飞控硬件的系统目标文件
一键编译生成固件
命令行窗口中实时显示生成过程日志
编译结束后,可将HEX文件通过USB的DFU模式,或仿真器的模式,烧录到MCU存储器中,并测试运行。
05
功能验证
验证工作的思路是先进行组件级的功能验证,确保每个功能能够将对应的设计需求正确实现,然后进行系统级的集成验证,确保控制系统对用户需求的符合性,最后通过代码生成和交叉编译得到固件并烧录到飞控硬件中,进行实际试飞验证。本节同样以倾转过渡段控制策略为例,详细展示利用Test Harness、Simulink Test、Test Sequence等工具进行功能验证的过程。
设置测试模型
在设计模型文件中,右键点击要测试的功能子系统模块后,选择测试框架,选择为当前模块创建,在弹出的窗口设置完成模型的初始信息后,即可自动创建测试模型。
选择从子系统模块创建测试模型
设置测试模型初始信息
初始测试模型
测试模型的输入可以配置为多种模块,如Chart、Inport、Signal Builder等,本案例选择Test Sequence,目的是利用其可定义多个Scenarios的特点设置多个并列的测试输入场景,如下图,后续可以在Test Manager中将这些测试输入场景自动导入到同一个测试项目,然后作为同一次测试的不同轮次(iteration)来方便地管理。
在Test Sequence中编写测试输入程序
输出建议选择Test Assessment模块,原因是可在该模块中利用verify函数编写测试评估条件,当测试结果不满足评估条件中的逻辑表达式时,会判定此次测试不通过,导致1测试不通过的条件和发生时刻会在Test Manager中显示出来方便分析原因。评估条件本质上是对需求以及飞行安全限制的量化,编写人员须具备一定的工程经验和理论认识才能保证测试的有效和完备。
例如下图中的“verify_fw_mode”条件是来源于需求描述的符合性条件,通过判定控制权重和倾转角指令值保证飞行器处于固定翼模式时控制输出和倾转状态与当前模式相匹配,再如“verify_NoStepInTiltAngleCmd”条件是来源于工程经验的安全限制条件,通过判定倾转角指令的变化率确保倾转角指令不出现高频变化,从而防止飞行器因倾转角阶跃而产生状态突变,同时也能防止倾转舵机因偏转指令幅度过大而产生较大瞬时电流,带来执行机构或线路损伤的潜在风险。
在Test Assessment中编写测试评估程序
在两个模块中分别编写测试输入程序和测试评估程序,并依需要对测试模型作一定修改后,得到了可用的测试模型。
修改后的测试模型
设置测试文件
点击测试模型HARNESS菜单栏最右侧的Simulink Test Manager打开测试管理工具箱。新建一个测试文件,点击新测试用例,在SYSTEM UNDER TEST栏设置与此用例链接的原设计模型和测试模型。
创建测试文件
然后设置测试迭代轮次(ITERATIONS)。首先在INPUTS栏的Test Sequence Block项处选择测试模型中的Test Sequence模块,然后在ITERATIONS栏点击Auto Generate,在弹出的窗口中勾选Test Sequence Scenario,点击OK,即可完成测试场景的导入。
导入测试场景
接下来将测试场景链接到对应需求。首先点击TABLE ITERATIONS栏最右侧的加号将需求栏加入窗口,然后点击None,会跳出一个空窗口等待加入需求,此时先打开Requirements Editor并选中待链接的需求。
选择待链接的需求
接着回到Test Manager界面选择链接需求。
链接选中的需求
将所有测试场景链接完成之后的界面如下图,在Requirements Editor中可以看到已链接到测试的需求的Verified栏变为黄色,表示待测试状态,运行测试之后可以在此栏查看需求验证的结果和进度。
需求链接完成后的界面
最后一步是添加监控的信号。在SIMULATION OUTPUTS中点击Add,然后在测试模型中选中要监控的信号即可。
添加监控的信号
测试结果分析
测试运行结束后,可在Results and Artifacts栏查看测试结果,可以看到有2个测试场景通过,2个测试场景未通过。这是为了演示如何修改特意加入了若干设计错误,使部分测试不通过,接下来就结合未通过的第4个测试场景介绍分析测试结果的常用流程。
查看测试结果
(1)查看未通过的评估条件
在Verify Statements中查看所有评估条件的通过情况,可以发现未通过的评估条件为verify_fw_mode_Speed,回到评估模块(Test Assessment)中查看,如图 130。该条件的要求是,当飞行器倾转过渡进入固定翼模式时,空速必须大于失速速度(13m/s)。
未通过的评估条件
(2)查看与评估条件相关的信号曲线
在下图中,可发现飞行器进入固定翼模式时的速度仅为3.5m/s,小于失速速度,因此该评估条件的值在固定翼模式全程中都为Fail的状态。
绘制未通过的评估条件和部分相关信号曲线
之所以飞行器会在如此低速就进入了固定翼模式,是因为当前测试场景为空速计不可用的测试场景,此时倾转过渡的方式是一种以时间为判定条件的开环方式,即判定飞行器已进入部分前倾状态的时间超过一定阈值,就立即完全前倾,然后进入固定翼模式,本例中有意减小了飞行器速度增加的速率,使得此例中设置的时间阈值不够飞行器加速到失速速度以上,从而导致评估条件不通过。
虽然该测试设置的飞行器加速度不甚合理,但仍然指示出了一种实际飞行中可能存在的风险:开环倾转过渡的逻辑中,时间阈值若与飞行器实际加速特性不匹配,可能导致飞行器在无空速计的场景下进入固定翼模式时发生失速而坠毁。
而规避该风险的方式可以包括:在没有确认时间阈值选取是否合适的情况下,禁止在无空速计的场景下让飞行器进行倾转过渡,建议预先在有空速计的情况下了解飞行器在加速特性并修正时间阈值后,再尝试该场景下的倾转过渡功能;修正倾转过渡判定逻辑为,无空速计时使用GPS的地速信号进行判定,不过要注意不能在机头方向为顺风方向的情况下启动该逻辑,否则同样存在失速的风险。除以上所说之外,还有很多其他可靠的方案,不在此赘述。
(3)自动生成测试报告
选中测试用例文件,点击TESTS菜单栏的Test Spec Report选项,可自动生成关于当前测试文件的详细配置文件。
自动生成的测试配置报告的部分页展示
选中测试结果,点击TESTS菜单栏RESULTS部分的Report选项,可自动生成记录当前测试结果的报告。
自动生成的测试结果报告部分页展
如需了解更多VTOL飞行器的功能设计和验证的详细内容,可以点击阅读原文查看正曜飞控公众号发布的VTOL飞行器系列文章。
长按查看
官方网站
Bilibili
长按加入
粉丝QQ群
热门跟贴