做电动和混合动力飞机组件尺寸设计,最怕的不是电机选型手册翻得不够多,而是把一堆规格书拼在一起之后,发现系统级需求根本对不上。我这两年在用MATLAB/Simulink/Simscape搭这类模型时最深的体会是:组件尺寸问题本质上不是"查手册",而是"建系统"。你选了一个100kW的电机,它带来的重量会让飞机整机质量上涨,整机质量上涨又会反过来抬高你需要的功率,这个闭环不跑几轮,你根本不知道自己设计的到底是一台飞机还是一台沉重的电池卡车。
这篇文章就是围绕"基于Simscape建模做电动/混动飞机组件尺寸"这件事展开的。我会从架构选择、任务剖面分解、组件建模、参数化仿真到尺寸迭代,完整梳理一条可落地的建模路线。适合刚入门电动飞机建模的研究生、做飞行器总体设计的工程师,以及想从纯公式估算切换到系统仿真视角的从业者。
1. 组件尺寸建模的核心逻辑:不是选型,是迭代
1.1 功率需求与能量需求是两回事
很多人在组件尺寸阶段犯的第一个错,是把"最大功率"和"总能量"混在一起算。电动飞机的组件尺寸有两个独立的约束:功率约束和能量约束。功率约束决定电机和逆变器的尺寸,因为爬升或者单发失效工况需要在短时间内拉出大功率;能量约束决定电池和发电机组的大小,因为巡航和等待环节消耗的是持续的能量。这两个约束经常会打架。
举个直观的例子:一架起飞质量800kg的小型电动飞机,巡航可能只需要30kW,但爬升阶段要求爬升率不低于5m/s,需要的功率可能一下冲到80kW。如果你只按巡航30kW去配电机,爬升段就会过载,电机温升直接爆表;如果只按80kW配电池容量,电池又多背了几百公斤,巡航功率又变了。所以在Simscape里建模时,我通常第一件事就是把任务剖面拆成功率段和能量段,让模型同时输出P(t)和累计E(t),再看瓶颈在哪个环节。
1.2 组件尺寸的"质量闭环"怎么破
质量闭环是组件尺寸设计中最反直觉的部分。你最初给定一个起飞质量MTOW,算完功率需求,选完电机电池,发现电池占了300kg。那么新的MTOW就不再是当初那个值,而是MTOW = 空机质量 + 电池质量 + 载荷质量 + 燃油质量(混动)。MTOW变了,飞行性能就变了,需要收窄或加宽的任务段功率也随之变化。
如果用手算,这个闭环每走一轮大概需要几个小时,而且容易出错。用Simscape的优势在于,可以把"整机质量 → 气动需求 → 推进功率 → 组件能量"全部参数化到同一个工作流里。每轮仿真结束,脚本自动把电池质量更新回飞机质量变量,再触发一轮新的仿真。通常三轮到五轮之后,结果会收敛,收敛的那个质量点才是真正可以用来写规格书的尺寸基线。
提示:一定要在模型里把"组件质量"做成一个独立参数,不要把它埋在某个固定常量里。不然你每次换电池都要改七八个地方,迟早漏改一处,算出来的结果自洽性很差。
1.3 Simscape为什么适合做这件事
Simscape和传统Simulink数学建模的核心区别在于,它用物理域的方式建模。你可以把电池、电机、螺旋桨、传动轴当成真实的物理对象连接起来,信号方向不再是唯一理解方式,能量可以从电气域流向机械域再流向气动负载。这对飞机推进系统来说非常自然,因为一个电动推进单元本身就是多物理场耦合的。
组件尺寸阶段最需要的不是高精度流场仿真,而是"中等保真度下的行为一致性"。Simscape恰好落在这个区间:它比纯解析公式保留更多的动态特性和效率特性,比CFD电磁场仿真又轻量很多。你在同一套模型里改电池容量、换电机效率图、调整螺旋桨直径,几秒钟就能看到系统层面的功率和能量响应变化,这对于尺寸迭代来说是至关重要的效率基础。
2. 建立电动/混动飞机模型的常用架构
2.1 全电动构型:电池-逆变器-电机-螺旋桨
全电动构型在所有方案里最直接,没有中间发电路径,能量从电池出来,经过逆变器(DC/AC)驱动永磁同步电机,电机输出轴功率给螺旋桨。在Simscape里,这条链路的建模素材非常成熟:
- 电池用Simscape Electrical的电池模块,可以设置SOC初值、内阻、开路电压曲线;
- 逆变器用平均模型或开关模型,组件尺寸阶段我建议用平均模型,仿真速度快,已经能反映效率和电压降;
- 电机用永磁同步电机模块,输入效率Map,或者更简单点用理想扭矩源加效率系数;
- 螺旋桨用负载模块或者自定义的功率系数-前进比曲线。
全电动构型的组件尺寸关注点比较集中:电机按最大功率选,电池按总能量选,逆变器按峰值电流和电压选。在Simscape里你甚至可以把三者画成一条功率链,跑一次完整任务剖面,立刻看到哪个环节先到达极限。
2.2 串联混动构型:发动机-发电机-电池-电机
串联混动是在全电动链路上插入一台发动机和一台发电机,发动机带动发电机发电,电能既可以直供电机,也可以给电池充电。这个构型的好处是发动机可以始终工作在高效转速区,因为机械上它和驱动轮之间没有直接连接。
在Simscape里搭串联混动,我会在电气域做一个直流母线节点,把发电机输出端、电池端、逆变器输入端接到同一个Bus上。然后能量管理逻辑决定发电机输出多少功率、电池补充多少缺口。组件尺寸难点就在这个母线节点上:发动机和发电机的尺寸由"持续巡航功率需求"决定,电池的尺寸由"峰值补充功率和总能量缓冲"决定。一套完整的Simscape模型能帮你把这两个尺寸需求同时输出,而不是靠拍脑袋分配。
2.3 并联与串并联构型
并联混动是发动机和电机都可以向螺旋桨输出机械功率的构型,需要用传动齿轮箱或者离合器等机械元件把两条动力路径耦合起来。Simscape Driveline里恰好有齿轮箱、离合器、行星排模块,可以很自然地搭建这种机械耦合节点。
并联构型的尺寸逻辑和串联完全不同。发动机承担巡航的主要功率,电机做爬升助推和能量回收,电池不需要太大,但机械耦合机构会增加重量和复杂度。串并联构型则在低速时用串联模式发电驱动,高速时切换成并联机械直驱,适合更宽的速度包线。
在组件尺寸阶段,我不建议一上来就做串并联,因为控制策略的维度会急剧增加。通常先把串联和并联两种边界构型跑出尺寸基线,再评估串并联能优化多少,值不值得增加系统和控制复杂度。用Simscape的好处是改构型不用全盘重来,只要把机械耦合部分替换一下,大部分电气域组件可以保留。
2.4 架构对比表与选择逻辑
| 构型 | 电机尺寸 | 电池尺寸 | 发动机/发电机尺寸 | 机械复杂度 | 典型场景 |
|---|---|---|---|---|---|
| 全电动 | 峰值功率决定 | 大,全能量承担 | 无 | 低 | 短途城市空中交通 |
| 串联混动 | 仍按全功率 | 中等,缓冲用 | 按巡航功率 | 较低 | 支线通勤、混合任务 |
| 并联混动 | 助推功率 | 较小 | 按巡航功率 | 中高 | 航程与峰值动力兼顾 |
| 串并联 | 根据模式切换 | 中等 | 中等 | 最高 | 宽速域、多模式任务 |
选择逻辑很简单:如果任务剖面里的"最高功率段"占比很低,大部分时间都在巡航,串联混动通常尺寸最优化;如果任务里经常需要短时大功率,比如频繁起降的电动垂直起降,那么电池峰值放电能力会成为约束,可能需要并联或者直接全电动加高倍率电池。
3. 实操第一步:把任务剖面变成组件需求
3.1 任务剖面建模
在Simscape里做组件尺寸,所有工作的起点都是任务剖面。任务剖面不是一个单独模块,而是你用信号源或者表格数据表达的一条期望工况曲线。我习惯用一组时间-高度-速度-大气密度数值来定义,具体分成几个典型阶段:
- 起飞滑跑:短时间大推力,持续数十秒;
- 爬升:从起飞高度爬升到巡航高度,通常要求最低爬升率;
- 巡航:维持匀速平飞,速度在南ATE目标和高度之间;
- 下降:减少动力,螺旋桨可能进入风车状态;
- 备降与等待:应急场景,通常占额外能量预算。
任务剖面的精细度直接影响组件尺寸。如果你只给一个平均功率,电池容量会明显偏小,因为爬升和起飞瞬间的功率峰值会拉高电流,电池端电压会下降,可用能量有一部分损耗在内阻上。Simscape能呈现这种动态效应,所以你一定要把任务剖面按时间序列灌进去,而不是用一个常数功率。
3.2 功率需求计算
任务剖面定了之后,每个时间步的功率需求可以用下面的关系在模型中算出来。平飞时,推力T等于阻力D,功率P = T × V。阻力D和重量W之间隔着升阻比L/D,所以P = (W / (L/D)) × V。爬升段还要加上爬升率ROC对应的额外功率,P_climb = W × ROC。
我把这些公式直接写进Simulink的表达式模块,让模型根据每一步的高度、速度和当前飞机质量自动计算需求功率。这个"当前飞机质量"必须是从组件质量参数实时求和得到的,否则就断了质量闭环。
注意:L/D不是常数,在不同速度、不同高度下会变化。组件尺寸阶段可以使用一个保守的平均L/D,但要留下参数入口,等后续气动数据更新后可以直接替换成表格,不需要改动模型结构。
3.3 能量需求积累与容量估算
功率需求曲线积分后就是能量需求。在Simscape里,我会直接用积分器对电机输入功率做累计,同时在电池模块后端读取累计放电能量,两者对比就能知道传动链损耗占了多少比例。
容量估算时,电池总能量E_bat要大于等于任务总能量需求E_req,再乘一个安全裕度。用公式表示就是E_bat = E_req / (DOD × η_e),其中DOD是放电深度,η_e是电气链路综合效率。放电深度直接决定一个重量修正系数,比如你只允许电池放电80%,那么同样的任务能量,电池标称能量需要多配25%。这些系数看起来很小,放在几百公斤的电池包上就是几十公斤的差异,组件尺寸阶段必须算进去。
4. 实操核心:Simscape组件模型的搭建与参数化
4.1 电气域:电池、逆变器、电机选型库
Simscape Electrical的基于物理域建模的模块库,在组件尺寸阶段只需要用到几个核心元件:电池模块、DC-DC变换器(可选)、三相逆变器、永磁同步电机或异步电机、母线节点。我建议用电子库里的平均值逆变器模型,而不是开关模型,因为组件尺寸迭代要跑很多轮,开关模型会让仿真步长压得很小,一轮任务剖面可能要跑几分钟,尺寸迭代完全不实用。
电池建模有两种思路:一种是固定内阻模型,设置开路电压、内阻和容量,比较简单;另一种是查表式模型,开路电压和内阻都随SOC变化。做组件尺寸,至少要用随SOC变化的查表模型。原因很简单:电池在低SOC时内阻增大,放电效率下降,如果忽略这一点,容量估算会偏乐观,最后一圈巡航段可能提前触发低压保护,这个在纯手算是很难预判的。
4.2 机械域:螺旋桨负载与传动链
电机输出的轴功率最终要给螺旋桨。螺旋桨负载在Simscape里可以用一个扭矩-转速特性模块表达,也可以用经验公式:T = C_p × rho × n^2 × D^5,C_p是功率系数,n是转速,D是桨径。这个公式看着简单,但它是组件尺寸建模里很有价值的部分,因为你一旦确定螺旋桨直径,电机的转速范围和扭矩范围就被锁定了。
传动链部分,如果电机和螺旋桨之间没有齿轮箱,直接在机械端口上连一条轴就能传递扭矩;如果有减速器,Simscape Driveline里有对应的齿轮箱模块,只需设置齿数比和效率。尺寸阶段我通常忽略轴的扭转弹性,设成刚性轴,少一个状态变量,仿真也会快很多。
4.3 混动系统:发动机-发电机组与功率分配
混动系统的核心额外组件是发动机和发电机。在Simscape里,发动机可以用一个扭矩源模块配合转速特性来近似,输入是油门指令,输出是机械扭矩。发电机则用电气域的同步电机模块以电动机模式反向运行,或者直接用一个功率转换模块,输入机械功率,输出电功率。
串联混动中,发动机-发电机组和电池在直流母线上并列,这个节点的功率平衡关系用基尔霍夫电流定律就自然成立。模型里你需要的是一个能量管理策略模块,决定每个时刻发电机组输出多少功率。组件尺寸阶段不需要复杂优化,用一条简单的规则就行:巡航时发电机输出巡航功率并给电池涓流充电,爬升时发电机满功率输出,不足部分由电池补充。这样的规则简单可靠,后续优化控制策略时再替换即可。
4.4 参数化用脚本还是GUI:推荐方式
组件尺寸阶段最忌讳的做法是把所有参数散落在GUI界面里,然后靠鼠标一个一个改。因为你要迭代至少五轮,每轮要改电机功率、电池容量、发动机功率、飞机质量等十来个参数,手改一定会出错。
我推荐的办法是:所有组件参数用MATLAB工作区变量定义,Simscape模块的参数对话框引用这些变量名。比如电机额定功率设成Motor.P_nom,电池容量设成Batt.Ebat,飞机质量设成Aircraft.MTOW。然后写一个参数配置文件,跑仿真前用脚本把这些赋值一遍,跑完后在脚本里读结果、更新质量、再跑下一轮。这样整个尺寸迭代流程是可复现的,团队成员拿到你的脚本也能立刻复现你的结果。
5. 仿真与组件尺寸迭代
5.1 求解器与仿真配置
Simscape物理模型的求解器选择对仿真体验影响非常大。组件尺寸模型既有电气惯性(母线电容、电机电感),又有机械惯性(转子、螺旋桨转动惯量),还有热时间常数(如果加入电机温升),数值刚性很强。我的一种可靠配置是:连续时间、可变步长、ode23tb求解器,相对容差设为1e-4。
第一次跑仿真时,我通常会先把所有惯性参数调成理想值(比如填上初始稳态条件),确认模型能稳定运行,再逐步加入更有挑战的组件。这一步很像做实验前先跑一遍空载测试,能省下大量排查时间。
注意:Simscape模型对初始条件很敏感。如果电池初始SOC、母线电压初始值跟稳态工作点不匹配,仿真开头的几毫秒可能会出现剧烈的数值震荡。我的做法是在仿真前先用Simulink的trimming工具或者设置稳态初始条件,确保模型从平衡点启动。
5.2 尺寸迭代方法
尺寸迭代其实是一个固定点迭代。基本流程如下:
- 根据任务需求设定初始MTOW;
- 根据任务剖面算出峰值功率和总能量需求;
- 按功率密度和能量密度估算电机、逆变器、电池、发动机的质量;
- 更新MTOW,重新计算气动需求和功率需求;
- 重复2到4步,直到MTOW变化小于某个阈值。
在Simscape模型基础上做这个迭代,可以用MATLAB脚本驱动:每次仿真结束以后从输出日志里提取最大功率和累计能量,用这些数据更新组件质量参数,然后重新运行。我一般会在脚本里设定最大迭代次数和收敛容差,比如连续两轮MTOW变化小于1%就停止。实测下来,典型构型三轮左右就能收敛,复杂构型可能需要五到七轮。
5.3 典型案例:1000kg级短途通用飞机的算例
我用一个简单的公共算例说明整个流程。假设目标是起飞质量1000kg、巡航速度50m/s、航程200km、巡航高度3000m、平均升阻比15。
- 巡航阶段需求推力D = W / (L/D) = 1000×9.81 / 15 = 654N,巡航功率P_cruise = D × V = 32.7kW;
- 假设爬升率5m/s,爬升段额外功率P_climb = W × ROC = 49kW,总需求功率约80kW;
- 任务巡航时间预计约67分钟,加上爬升和下降,总能量需求大约50kWh;
- 如果电池按200Wh/kg计算,50kWh对应250kg电池,这个质量已经占了起飞质量的四分之一,加上电机和逆变器的重量,MTOW大概率要上涨;
把上面的逻辑循环跑起来之后,最后的收敛结果可能不是1000kg,而是1120kg左右,巡航功率和总能量需求也会跟着上涨。这个放大效应就是组件尺寸迭代必须用模型跑的原因,你只看初始估算的话,会严重低估电池规模。
6. 高频坑点与排查速查表
6.1 不收敛与数值刚性
Simscape仿真最常见的失败现象是报"Solver failed to converge"或者"Singularity"。多数情况来自三个方面:初始条件不匹配、数值刚性太大、模型里有代数环。我的排查顺序是先检查初始条件:电池SOC、母线电压、电机转速是否物理自洽;然后检查求解器设置,换成ode23tb、降低容差;最后再看模型里是不是有不必要的理想元件制造了代数约束。
还有一个非常关键的排查技巧:把Simscape的物理信号转换禁用掉一部分,比如先用恒定控制输入替代能量管理闭环,看模型能不能跑通。如果恒定输入能跑、闭环不能跑,问题几乎都在控制环路增益或者反馈信号的初始化上,和物理模型本身无关。
6.2 单位、状态初始化和物理信号
Simscape是多物理域建模,电气域用V、A,机械域用N·m、rad/s,往复转换的时候最容易出单位错误。我在模型里有一个习惯:所有的Simulink-PS Converter和PS-Simulink Converter模块,我都在注释里标明物理量名称和单位。经验是,90%的"奇怪结果"都出在单位换算或信号方向上,查起来比查模型逻辑快得多。
另外要提醒一点:Simscape的物理端口没有方向性,能量可以双向流动。电机可以工作在电动模式也可以工作在发电模式,螺旋桨可以正转也可以风车转。如果你在机械端口上强行加了一个单向的约束,后续一旦仿真出现能量回流,模型就会报出很费解的约束不满足错误。组件尺寸阶段建议保留双向自由度,只在需要精确控制的地方添加方向约束。
6.3 仿真速度与模型保真度的平衡
尺寸迭代需要跑很多轮次,模型仿真速度就显得格外重要。我踩过的最大的坑是,为了追求"看起来更真实",把模型里加入了开关级逆变器和详细的电磁暂态模型。结果单轮仿真从5秒变成了5分钟,五轮迭代下来时间完全不可接受。后来我把逆变器换成平均模型,把电机改成效率Map加惯量,单轮仿真又回到几秒,而组件尺寸结果几乎没有变化。
组件尺寸阶段的模型保真度应该遵循一个原则:只保留对尺寸结果有显著影响的行为,其余全部降阶。影响尺寸的行为包括:任务段的功率峰值、能量效率、组件质量、系统级限制(如电池SOC、电机过载能力)。不影响尺寸的细节包括:开关纹波、三相不平衡、电磁谐波、器件开关损耗的精确分布,这些等进入控制设计阶段再补充不迟。
以太网
我个人经验是,Simscape做电动/混动飞机组件尺寸建模,最大的价值不在于它算得比公式更聪明,而在于它把"质量-功率-能量"这个三角闭环变成了每天都愿意跑一遍的工作流。很多初学者拿到模型文档以后一直在纠结某个电机效率Map的精度、某个电池内阻拟合曲线的R²够不够高,但真正从项目周期来看,组件尺寸阶段最该做的是快速覆盖大量备选方案,找到两三套值得往下细做的构型参数,然后尽快把精力转到详细的子系统设计上。
最后再分享一个小技巧:不要把所有组件尺寸模型都放在一个巨大无比的文件里。我一般按"任务剖面_动力链_能量源_总体质量"拆成四个模块封装,每个模块只露出几个端口和参数。这样任何人拿到模型,不用打开子系统就能理解整个飞机的尺寸估算逻辑,也方便你在不同项目之间复用这套框架。仿真模型的价值不是一次性的运行结果,而是你可以反复修改并积累经验的平台,这一点在新机型方案论证时尤其值钱。