做了十多年飞机系统仿真,我越来越觉得,电动和混合动力飞机的“组件尺寸”这件事,最怕的不是不会算公式,而是算完之后发现系统和部件根本咬合不上。纯手算电机功率、电池容量、电缆重量,再做能量平衡校核,工作量巨大,而且改一个参数就要从头再来一遍。后来我把整套流程搬到了MATLAB、Simulink、Simscape这套工具链上,建了一个参数化的电动/混动飞机模型,才真正体会到什么叫“组件尺寸跟着任务剖面走,模型自己会说话”。
这篇文章就围绕这个项目展开,聊一聊我是怎么搭建的、建模过程中哪些坑必须绕开、以及这套模型怎么在概念设计阶段帮我把电池、电机、发电机、电缆这些关键部件的尺寸一步步迭代出来。适合正在做电动飞机、混动无人机动力系统选型,或者想用Simscape做物理域建模的工程师参考,哪怕你是刚接触Simscape的MATLAB用户,也能照着思路把模型搭起来。
1. 为什么要用Simscape做飞机模型,而不是手写公式
很多做飞机总体设计的朋友,第一反应是用Excel或者手写微分方程来做动力选型。我也这么干过很多年,但后来有几个问题越来越没法忍:一是公式藏在代码里,别人接手很难看懂;二是从电机扭矩到螺旋桨推力、再到飞机阻力的物理因果链,手写代码里很容易把单位、方向、参考坐标系搞乱;第三是只要架构一变,比如从纯电改成串联混动,整套计算脚本基本要推倒重来。
Simscape解决的就是“物理域建模”的工程问题。它不要求你按信号流的方向去思考——电机输出的是机械扭矩和转速,通过一根轴连到螺旋桨,这条能量传递路径在Simscape里就是一条物理连接线,端口之间天然带着单位、方向和能量守恒。这比在Simulink里用信号连线把功率、扭矩传过来传过去要直观得多,也安全得多,至少不会出现“功率正负号接反”这种低级错误。
这个项目里我最看重Simscape的是三个能力。第一,电气、机械、热三个物理域可以在同一个模型里无缝耦合,搞混动飞机的工程师最需要这个,因为电池的电流会决定电机扭矩,电机损耗会变成热量,热量又会影响电池效率,这种多域耦合关系用手写方程要费很大劲,但Simscape里就是物理连接和数值求解的事。第二,模型天然支持参数化,我可以把电机峰值功率、电池容量、发电机额定功率全部定义成MATLAB工作区变量,或者通过Mask封装成子系统的设计参数,这样组件尺寸迭代就变成了“改参数—跑仿真—看结果”的循环。第三,Simscape Electrical的元件库已经内置了电池、电机、变压器、整流器、电力电子开关等模型,我不需要每次从零建模。
我见过很多人在概念设计阶段就把电机模型搭得特别复杂,实际上完全没必要。这个项目用到的电池模型是Simscape Electrical里的Table-Based Battery,电机用永磁同步电机PMSM的均值模型,发电机用理想同步电机加整流桥,整个电气部分跑起来速度很快,又保留了关键效率特性和动态响应。
1.1 组件尺寸问题的本质是什么
“组件尺寸”这四个字听起来很普通,实际做起来是飞机总体设计里最绕不开的环节。核心问题是:在给定的任务剖面下(起飞、爬升、巡航、下降、备降),每一个动力部件需要选多大,重量多少,效率如何,相互之间怎么匹配,最终要让飞机飞得动、飞得远、还要控制住整机重量。
传统燃油飞机的组件尺寸,大家已经积累了大量的统计公式和经验数据。电动和混动飞机不一样,电机、电池、电缆、电力电子变换器的功率密度和能量密度还在快速变化,统计公式不成立,必须回到“能量流+功率流”的物理本质去算。这也是为什么Simscape这种物理建模工具特别适合干这件事——它本身就是围绕功率和能量守恒构建的,天然就是为这种问题准备的。
1.2 Simscape模型和传统Simulink模型如何配合
在这个项目里,Simulink和Simscape是分层的。飞机飞行动力学、大气环境、任务剖面(比如驾驶员推油门杆的指令序列)、控制器逻辑,这些留在传统Simulink信号域里。而电池、电机、电缆、配电总线、发电机、螺旋桨这些物理设备,全部放入Simscape物理域。中间用Simulink-PS Converter和PS-Simulink Converter这两个转换模块连接。
这种分工逻辑非常关键。控制逻辑和信号流用Simulink表达,物理设备用物理网络表达,各取所长。你不需要在一个模型里用信号线拧巴地去模拟功率母线,Simscape总线节点自动保证母线电压处处一致,电流自动满足基尔霍夫定律。
2. 模型主体架构:从需求到仿真闭环
整体架构上,我把模型分成了五层,每一层都有明确边界。最上层是任务剖面定义层,负责生成飞行阶段、高度、空速、油门指令;第二层是飞行动力学层,计算飞机在当前油门下的速度、爬升率、飞行路径角;第三层是动力系统层,包括电机、电池、发电机、配电系统和螺旋桨模型,这一层就是Simscape物理网络的核心区域;第四层是能量管理层,负责模式切换,比如爬升时混合供电,巡航时由发电机单独供电给电机并给电池充电;最底层是数据记录和评估层,所有关键信号送出去做后处理。
这种分层不是我想出来的花架子,是被逼出来的。早期做混动飞机仿真,把所有东西画在一张图里,Simulink模型密密麻麻好几屏,仿真一跑就是几十分钟,还经常报代数环错误。后来拆成分层架构,每一层负责什么一目了然,排查问题也方便。
2.1 任务剖面怎么定义
任务剖面是整个模型的输入源头,也是组件尺寸设计的根本依据。同一个电机和电池组合,用于纯电动eVTOL的城市空运和三小时巡逻任务的无人机,结果完全是两个数量级。所以我在模型里用Simulink Signal Editor或者Lookup Table定义了高度-时间、空速-时间、油门杆位置-时间这三组曲线。
建议任务剖面分五个阶段:起飞、爬升、巡航、下降、备份/复飞。起飞阶段需要最大功率,持续时间短;爬升阶段是功率第二高、持续时间中等的阶段;巡航阶段功率小但持续时间极长,往往决定总能耗;下降阶段电机可能只输出很小的功率,甚至作为风车产生阻力,在混动架构下反而是电池充电的机会;备份/复飞阶段虽然出现概率低,但尺寸设计时不能忽略,因为它往往决定峰值功率需求。
我实际建模时,会用事件驱动的方式触发阶段切换,每个阶段定义自己的目标空速和高度变化率,而不是用时间硬编码。这样飞机如果爬升率不达标,它会自动停留在当前阶段,模型就“逼着”你增大电机功率,这种动态反馈比时间硬编码科学得多。
2.2 动力系统各部件如何参数化
参数化是组件尺寸迭代的核心,如果模型里到处是硬编码常数,那就没法做选型优化。我的做法是建一个aircraft_params.m脚本,把部件参数全部定义成结构体:
% 电机 EM.RatedPower = 48e3; % W EM.MaxTorque = 80; % N*m EM.MaxSpeed = 2400 * 2*pi/60; % rad/s EM.Efficiency = 0.93; % 额定工况效率 % 电池 Batt.SOC0 = 0.95; Batt.Capacity = 60 * 3600; % As (Ah转化) Batt.NominalV = 500; % V Batt.Vmin = 420; % V Batt.MaxCrate = 5; % 连续放电倍率 Batt.Energy = Batt.Capacity * Batt.NominalV / 3.6e6; % kWh % 发电机 GEN.RatedPower = 20e3; % W GEN.FuelBurnRate = 0.6; % kg/kWh,经验系数然后把这些变量作为Simulink模型工作区的参数来源。Simscape模块的对话框里直接写EM.RatedPower这种表达式即可。改尺寸的时候,只改脚本,跑一次仿真,结果就看得到。
这里有个细节要注意,Simscape模型里很多参数在求解器初始化阶段就固定下来了,比如电池的额定电压和容量,如果直接在仿真中途动态改参数,可能导致数值不连续,求解报错。所以我都是把参数初始化放在MATLAB脚本里,或者使用Simulink的Parameter对象配合Model Workspace,每次仿真开始前自动加载新参数集。
2.3 数据记录和结果评估层怎么设计
仿真跑完,必须有一套清晰的结果评估方法。我会用几个关键指标来评价组件尺寸是否合理:电池SOC终值、峰值电流是否超过电池最大放电倍率、电机是否长时间工作在过载区间、发电机油耗、整机重量和能量密度。这些指标统一输出到MATLAB工作区,再通过脚本绘制曲线。
比较关键的指标是“电池SOC跑到终点”的使用约束。概念设计阶段,我会要求巡航结束时SOC不低于20%,并且备份剖面跑完后SOC不低于10%,低于这个数值,电池循环寿命和放电能力都会变得很难看。这块约束在纯手算年代很别扭,因为SOC和飞行剖面是动态耦合的,但Simscape仿真是天然的动态过程,SOC曲线扫一眼就知道尺寸合不合适。
3. 实操要点:搭建一个可复用的电动飞机模型
模型搭建具体怎么做?我从项目里抽了一个最小可用的电动飞机案例出来,给大家演示完整流程。
3.1 最小案例的拓扑结构设计
案例对象是一架双座轻型电动飞机,任务剖面为起飞爬升到500米,巡航40公里,下降着陆。动力系统采用单电机直驱固定桨距螺旋桨,电池组直接挂在800V直流母线上。这套拓扑结构够简单,但能完整覆盖Simscape建模会遇到的主要问题。
我新建一个Simulink工程后,先搭顶层骨架。顶层模型里有五个部分:任务剖面指令模块、飞行动力学与大气模块、螺旋桨模块、电机模块、电池模块。前三部分在Simulink信号域,后两部分在Simscape物理域。
这里最容易被新手卡住的,是物理域和信号域怎么连接。螺旋桨输出的是拉力(物理信号),飞行动力学模块需要的是拉力(Simulink信号),所以螺旋桨的物理输出端口要用PS-Simulink Converter转成普通信号。而飞行动力学算出来的螺旋桨转速需求,要从Simulink信号域通过Simulink-PS Converter转成物理转速信号输入给螺旋桨。两种转换器长得一模一样,很容易搞混,我建议命名规范一点,比如信号转物理的模块一律加后缀_phs,物理转信号的加后缀_sig。
3.2 电池和电机的Simscape模块怎么配置
电池模型我用Simscape Electrical库里Battery (Table-Based)模块。这个模块可以設定荷电状态初始值、电池容量、开路电压和内阻随SOC变化的表格数据。如果没有实测数据,先用厂商数据手册里的放电曲线近似,选择Lookup Table类型的参数定义,这样后续拿到实测数据可以直接替换表格内容,模型结构不用改。
电机我建议用PMSM模块,但概念设计阶段不必追求开关级细节,勾选Model fidelity level为Average-value即可。平均模型输出的是平均扭矩和功率,忽略开关纹波,仿真步长可以放到较大值,跑得快很多。后面如果需要做谐波分析或者控制律验证,再把电机模型升级为开关模型。
逆变器我直接用了Three-Phase Bridge加PWM控制理想化处理,或者干脆用Ideal Switch搭一个平均等效模型。这个概念设计阶段足够用了。千万别在这个阶段引入过细的IGBT损耗模型,否则每个仿真步长都要做高频开关求解,速度慢得你怀疑人生。
3.3 螺旋桨和飞行力学怎么尽量简化又保持可信
螺旋桨我用了简化动量理论:拉力T等于大气密度、转速平方和拉力系数的乘积,扭矩也同理。拉力系数和扭矩系数可以用一个Lookup Table表达,横轴是前进比或桨距角。这个模型虽然简单,但用作组件尺寸已经足够了,它正确反映了“转速越高拉力越大、飞行速度越快螺旋桨效率下降”的趋势。
飞行动力学部分没有做六自由度刚体模型,只做纵向点质量:升力=重力、推力=阻力+质量×加速度这两条基本方程。高度、速度、爬升率和飞机位置作为状态变量输出。组件尺寸阶段的机型和气动力数据通常还很不完整,没必要用高精度气动模型,先把“能不能保持巡航速度、能不能达到爬升率”这类问题搞清楚更重要。
3.4 混动架构怎么在基础模型上做扩展
纯电模型能跑通之后,扩展到混动架构其实不难。我这里的架构是串联混动:发电机-整流桥直流母线,电池组和发电机输出并联在同一母线上。两种能量源共同给电机供电,同时发电机可以给电池充电,所以需要一个能量管理策略来决定发电机在当前工况下出力多少。
能量管理策略我用了一个简单的状态机:爬到目标高度时发电机输出额定功率,电池补充剩余功率;巡航时发电机输出等于巡航功率加一个小充电功率,SOC缓慢回升;下降阶段发电机怠速或关闭。这套逻辑用Stateflow写很小,只用几个状态就搞定,但已经能真实反映所有混动架构的关键耦合关系。如果想做更复杂的策略优化,可以换成基于规则的能量管理脚本,甚至接MATLAB的优化工具箱去调发电机的输出系数。
混动模型的关键参数在于:发电机额定功率决定了整个巡航阶段能否稳定供电,电池容量决定了爬升和备用阶段能提供多少额外功率,这两个尺寸参数是耦合的。仿真迭代的思路就是先给一组预估参数,跑任务剖面,看SOC轨迹和发电工况,再手动或自动地调节这两个参数直到满足所有约束。
3.5 组件尺寸迭代必须关注的参数计算
对电池来说,最关键的尺寸参数是“能能量-功率双满足”。如果只算飞机航程需要的总能量,不考虑爬升阶段最大的功率需求,选出来的电池可能能量够但放电倍率超标,电压会被压低,电机功率输出不足。所以我迭代电池时,跟踪最多的是最大电流和SOC曲线。假设单次任务总能耗是25 kWh,电池放电深度用80%,组效率考虑0.9,那么电池标称能量至少要34.7 kWh。同时,如果巡航功率是35 kW、爬升功率是85 kW并且最多持续2分钟,标称电压500V,爬升阶段电池输出电流170A,若电池额定容量是70Ah,此时放电倍率约2.4C,一般在锂电池的持续放电能力范围内。如果倍率超过5C,就得增加电池并联数来分流。
电机选型看的是峰值功率和持续功率的比值。电机通常可以在2~3倍额定功率下短时过载,比如额定48kW的电机可以承受120kW/1分钟。所以选型时用爬升或复飞功率作为峰值校验,用巡航功率作为持续工况校验,然后再看额定转速和最大转速是否和螺旋桨匹配。
电缆尺寸是由电流密度决定的。800V母线、170A峰值电流,铜导线截面积按4A/mm²经验值取42.5mm²,但实际还要考虑线缆重量约束。飞机上导线越粗越重,对航程代价很大,所以经常要权衡母线电压、电流和重量。这也是Simscape模型的一个好处,改母线电压,所有电流自然变化,电缆重量可以按电流有效值自动估算,不需要手动逐项算。
4. 工程实践中的模型校验与参数更新
模型建得再快,关键还是要校验可靠。我的习惯是“先平稳校验、再动态校验、最后全剖面校验”三步走,每一步都有对应的判断标准,避免模型跑出了一个漂亮的曲线但物理上根本站不住脚。
4.1 平飞巡航状态怎么校验
第一步是给定一个稳定的巡航速度,把油门锁在一个固定位置,看模型能否自动收敛到稳定的功率平衡。例如,设定飞机以120km/h平飞,根据升阻比估算此时阻力约620N,巡航功率约20.6kW。跑完稳态仿真,看一下电机输出功率和母线电流是否和这个估算吻合。误差在10%以内就可以接受,偏差大了要检查阻力系数、螺旋桨效率或传动链效率的取值。
这一步可以不用完整任务剖面,直接把模型剪到一个短时段的平飞状态,用2~3个不同的速度点分别仿真,形成一条“速度-功率曲线”,和飞机总体手册里给的性能曲线对照。如果两条曲线趋势一致,说明气动模型、螺旋桨模型、电机效率三者的耦合逻辑基本正确。
4.2 爬升和瞬态过程怎么校验
爬升过程的瞬态校验往往最暴露问题。特别是电池模型内阻和极化电压的建模是否合理,SOC从95%开始放电时电压下降的轨迹、电流上升的速率、电机扭矩爬升的快慢,每一个细节都可能暴露问题。
校验时我会看一个特征:爬升开始后,母线电压是否从约830V迅速跌落到760V附近,这个压降基本由电池内阻和电缆电阻决定。如果跌得太多,说明电池内阻参数偏大或电缆选细了;如果几乎不跌,说明内阻参数偏小——实际电池不可能零压降。这一项跑通了,说明电气系统里的欧姆定律在起作用,模型物理一致性就基本靠谱。
4.3 全剖面仿真后如何反向更新参数
全剖面仿真结束,才是组件尺寸迭代真正的主场。我会检查SOC终值、峰值电流、电池最高温度、电机峰值扭矩、各运行点的效率,任何一个不满足设计要求,就回到aircraft_params.m里改参数,重新跑。这个循环做三轮之后,整组部件尺寸通常能达到一个比较合理的设计点。
如果时间允许,还可以结合MATLAB的脚本对放电深度、巡航功率、爬升时间和电池能量密度做一个简单的敏感性分析。比如电池能量密度从250Wh/kg提高到300Wh/kg,其他条件不变,整机重量多了还是少了、航程多了多少。这种敏感性分析在方案论证阶段非常有用,用来和电池供应商谈判时也能更有底气,至少你知道“能量密度提升10%对航程的实际贡献是多少”,而不是拍脑袋说要更高级的电池。
5. 组件尺寸的迭代分析:仿真驱动的设计闭环
有了一个经过校验的参数化模型,组件尺寸的工作就从“拍脑袋+手算”升级成了真正的“仿真驱动设计闭环”。我把它拆成六个步骤:定义任务剖面、估算初始参数、配置模型参数、运行全剖面仿真、评估约束满足情况、修改参数并重复。
5.1 实际迭代案例分析
我在项目里做过一个并联混动的案例,初始预估电池容量40kWh,发电机功率15kW,巡航速度130km/h,任务剖面是起飞后爬升到800米、巡航120公里、下降着陆。第一轮仿真跑完,发现爬升阶段电池峰值电流达到210A,已经接近电池的2.5C持续放电限制,而且爬升结束时SOC掉到了78%,后面巡航充电根本补不回来,整个任务结束SOC只剩15%,低于20%的底线。
第二轮迭代,我把电池容量加到55kWh,发电机功率提高到22kW。同时把电池最大放电倍率提升到5C(换了一个倍率性能更好的电芯),重新跑了一遍。SOC曲线明显好转,任务结束还有35%,峰值电流降到175A。缺点是电池重量增加了近45kg,导致巡航阻力小幅增加,巡航功率比第一轮多了约1.2kW。这个代价是否可接受,需要跟结构、起落架、机翼载荷的同事一起讨论。
两个方案的关键数据对比我列在下面:
| 参数 | 初始方案 | 迭代方案 |
|---|---|---|
| 电池容量(kWh) | 40 | 55 |
| 电池重量(kg) | 约120 | 约165 |
| 发电机额定功率(kW) | 15 | 22 |
| 爬升峰值电流(A) | 210 | 175 |
| 任务结束SOC(%) | 15 | 35 |
| 巡航功率(kW) | 21.0 | 22.2 |
这组数据说明一个很现实的问题:组件尺寸从来不是单点优化,是多方权衡。电池大了SOC余量足,但飞行重量增加,巡航功率上升,又反过来吃掉一部分能量收益。要把这个权衡做彻底,还是需要把多个设计点都仿真一遍,然后画Pareto图来辅助决策。
5.2 敏感性分析怎么支撑决策
我看到很多概念设计报告里“敏感性分析”都是贴在最后页的装潢品,根本没有用起来。实际上,仿真驱动的组件尺寸特别适合做敏感性分析,因为参数化模型天然支持批量跑。写一个简单的MATLAB循环,把电池容量从35kWh到70kWh按5kWh步长扫描,每个点跑一遍全剖面仿真,记录SOC终值和整机重量,画出一条“电池容量-SOC终值”曲线。
这条曲线能直接看出边际效益:容量从35涨到45,SOC终值上升非常快,从45再涨到70,SOC曲线变平缓,说明容量已经不再是约束瓶颈了,再加电池只是白白增加重量。这种“拐点”在概念设计阶段极有说服力,也好和团队对齐“够了,别再加了”。
5.3 自动化和批处理的小技巧
批量扫描仿真在MATLAB里实现很顺手。我把aircraft_params.m里的参数定义改成支持外部输入的结构体,然后在一个批处理脚本里循环调用sim('hybrid_aircraft_model', 'StopTime', 'num2str(t_end)')。为了防止各次仿真之间参数残留,每次仿真前都用clear把模型工作区里的参数清掉再重新载入。
另一个技巧是用fast restart加速。对于迭代次数多的大批量仿真,Fast Restart能省掉每次模型编译的时间,实测能快30%以上。不过要注意,Fast Restart时Simscape的物理网络变量会自动缓存,如果参数变化导致系统维度改变,比如从单电机改成双电机,Fast Restart会失效,需要重新编译模型。
6. 常见问题与排查技巧实录
Simscape建模最大的特点就是“物理域报错不友好”,很多错误信息绕来绕去,新手常常卡半天。我把项目里踩过的坑整理一下,给各位排雷。
6.1 物理网络求解失败的典型原因
最常见的一个问题是Simscape solver failed或者PEM error。这类错误九成出在初始条件上,要么是某个积分器初始值设置得物理上不存在,比如转速给0但轴承端口又施加了一个庞大扭矩;要么是物理变量之间的冲突,比如电池电压初始值和电容电压初始值不匹配。排查思路是:先把所有可能引起代数环的模块找出来,把Simscape里的首选项调成Detailed solver trace再跑一遍,报错信息会告诉你具体是哪个节点发散的。
另外一个很容易踩的是传感器模块没接参考点。Simscape电气网络里,电压是相对值,必须有Electrical Reference模块作为零电位参考点。我见过不少人模型里所有电压表都接了,唯独电池负极悬空,仿真直接报错。这就像家用电器的地线不接,设备不会工作。
6.2 仿真速度慢怎么优化
Simscape物理网络的求解步长是受限于整个网络动态的,尤其是电气开关器件。如果发现仿真越来越慢,我的第一个操作不是加高性能电脑,而是检查有没有高频PWM开关模块。概念设计阶段完全没必要让逆变器按20kHz开关频率仿真,直接换成平均值模型(Average-Value Inverter),仿真速度能快一个数量级。我从平均模型换成开关模型后,同一个135秒的任务剖面,仿真时间从200秒涨到45分钟,这还只是单个工况,批量迭代根本跑不动。
第二个提速手段是降低Simscape残差容差。默认一般是1e-4,概念设计阶段放宽到1e-3,精度损失很小,但计算量小很多。还有把不关心的信号线缆断开记录,少放Scope或者在批处理时用很少的输出点,也能省一部分时间。
6.3 结果曲线出现异常毛刺怎么处理
仿真曲线如果出现高频毛刺,一般不是物理模型的问题,而是数值求解问题。先把求解器从变步长换成固定步长试试,或者调小最大步长;也可以检查是否有局部代数环,Simscape里代数环很容易引起数值振荡。我的经验是,出现毛刺先看频谱,如果频率和仿真步长倒数接近,那就是数值问题,不必怀疑参数;如果毛刺发生在模式切换瞬间,比如发电机启动、电池充电转放电的切换点,那多半是模式切换本身导致的状态不连续,需要给切换逻辑加迟滞区间,避免频繁来回切换。
6.4 模型校验不过的排查顺序
如果平飞校验功率差了20%,别急着改电机效率。我建议按顺序排查:先看气动数据有没有输错(阻力系数、参考面积),再查螺旋桨拉力系数表有没有漏了前进比维度;然后看电机的扭矩-转速映射是否完整,有没有出现转速超出范围仍外推输出扭矩;最后才怀疑电池模型的内阻和SOC对应表格有没有标错。前两步错得最多,电池反而很少出问题。
排查时建议在模型里加几个关键观测点:螺旋桨吸收功率、电机母线电功率、电池输出功率、传动效率。这样一旦偏差出现,直接看哪一级功率损失和理论值不一致,立刻就锁定了是哪个部件的问题。
7. 模型扩展方向:从尺寸设计到系统验证
模型搭建和校验完之后,组件尺寸的工作其实只完成了一半。这套模型的价值远不止选型,它还可以往几个方向扩展,让前面的建模投入发挥更大的价值。
7.1 能量管理策略验证
混动架构的核心问题是“电从哪来、什么时候用”。同一个组件配置,不同的能量管理策略可能会导致航程差20%。把建好的混动模型接上更复杂的能量管理策略,比如动态规划求最优功率分配,或者模型预测控制实时调整发电机输出,就可以在概念阶段就评估策略的潜在收益。
这样做的好处是,组件尺寸和能量管理策略不再是串行工作,而是并行迭代。先定一个基准策略跑出组件尺寸,再优化策略,往往能发现组件还可以缩小一点。很多团队把这个迭代做在详细设计阶段,代价很大;在概念设计阶段用仿真模型跑,成本几乎为零。
7.2 从Simscape物理模型到控制原型
用在Simscape里做好的高保真物理模型,可以直接替换掉纯Simulink里的简化的电机/电池模型,作为控制算法开发测试的对象。因为Simscape模型是物理域表达的,天然包含了反电动势、转矩波动、电池动态压降等非线性,比用一阶惯性环节模拟电机准确得多。后续要部署到硬件在环HIL平台,Simscape模型也可以编译成C代码,跑在实时机上。
7.3 与飞行任务仿真结合做全场景评估
最后可以把这个动力系统模型接到飞行仿真场景里,比如和飞行动力学、航线任务管理结合起来,做全场景能耗评估。不同航线高度、风速风向、温度都会影响电池放电特性,纯燃油时代这些因素影响不大,但电动飞机的大气温度、高度变化对电池容量和效率影响明显。把这些仿真做成脚本,批量跑不同城市不同季节的航线能耗,用于航线和运营经济性分析,已经超出组件尺寸本身,但却是这个模型最出彩的应用方式。
我个人在实际操作中还有一个习惯:每建完一个部件,就先做单独测试,再接入整机模型,绝不把没验证过的子系统直接丢进大模型里。这个习惯避免了我无数次被“模型不收敛”折磨,也让我敢放心地在方案阶段反复改参数。另外组件尺寸这种事,最忌讳一步到位,先用一个简陋的模型跑通流程,再逐步细化模型部件,迭代起来远比你一开始就追求高保真要快。真心建议大家先从简单架构做起,哪怕只是一条基础纯电模型,也先把流程跑顺,再谈复杂的混合动力。