航空电气系统建模:飞行工况仿真与恒功率负载(CPL)物理实现

根据您图片中的任务描述(第1周:Simulink 物理建模),您需要在 MATLAB 中编写一个名为 flight_profile.m 的脚本,生成 0-1200s 的时间序列,并构建包含 220kW 起飞和 110kW 巡航的功率需求矩阵 P_dem,最后将其保存为 .mat 文件。
以下是为您编写的完整 MATLAB 脚本。为了让工况更加贴合实际,脚本中对起飞、巡航和降落阶段的时间段进行了合理的假设,您可以根据具体需求直接修改时间节点。
MATLAB 脚本 (flight_profile.m)
% flight_profile.m
% 任务:构造飞行工况序列,供 Simulink 物理建模调用
% 1. 生成时间向量 t (0 到 1200s,步长为 1s)
% 使用列向量以便于直接输入到 Simulink 的 From Workspace 模块
t = (0:1:1200)';
% 2. 初始化功率需求数组 (单位: kW)
P_dem_kW = zeros(length(t), 1);
% 3. 定义飞行阶段与功率需求
% 时间节点假设(可按需修改):
% - 0~150s: 起飞/爬升阶段 (220kW)
% - 150~1000s: 巡航阶段 (110kW)
% - 1000~1200s: 降落/滑行阶段 (假设为 50kW)
for i = 1:length(t)
if t(i) <= 150
P_dem_kW(i) = 220; % 起飞阶段功率需求
elseif t(i) > 150 && t(i) <= 1000
P_dem_kW(i) = 110; % 巡航阶段功率需求
else
P_dem_kW(i) = 50; % 降落阶段功率需求
end
end
% 4. 构造功率需求矩阵 P_dem
% Simulink 标准数据格式:第一列为时间,第二列为数据
P_dem = [t, P_dem_kW];
% 5. 保存为 .mat 文件
% 将变量 t 和 P_dem 保存到当前工作区的 .mat 文件中
save('flight_profile.mat', 't', 'P_dem');
% 6. 可视化工况 (可选:运行脚本时弹窗显示功率曲线,方便检查)
figure;
plot(t, P_dem_kW, 'LineWidth', 2);
xlabel('时间 t (s)');
ylabel('功率需求 P_{dem} (kW)');
title('飞行工况功率需求序列');
grid on;
ylim([0 250]);
脚本说明
- 数据格式兼容性: 在 Simulink 中使用
From Workspace模块时,最常用的数据格式是一个二维矩阵,其中第一列是时间,后面的列是对应的值。代码中的P_dem = [t, P_dem_kW];正是符合这一标准的矩阵结构。 - 阶段划分: 图片中只明确了起飞 (220kW) 和巡航 (110kW)。由于总时长为 1200 秒,我在代码中加入了末段(1000s - 1200s)的降落模拟(设定为 50kW),以保证曲线逻辑的完整性。
- 如何使用: 将此代码复制并保存为
flight_profile.m,在 MATLAB 中运行后,当前文件夹会生成flight_profile.mat文件,同时会弹出一个图表供您直观确认功率曲线的阶跃变化。在 Simulink 模型中,您只需通过 Model Properties 加载此.mat文件或直接在 Base Workspace 中读取即可。
脚本运行完毕并且 flight_profile.mat 生成后,您的 MATLAB 工作区(Workspace)中就已经有了时间序列 t 和功率需求 P_dem。
我们需要在 Simulink 中搭建一个基础的电力系统物理模型,将刚才生成的 P_dem 作为负载需求输入,观察系统的响应。
为了建立一个稳定且符合航空电气基础的物理模型(包含电源和动态负载),以下是完整的 Simulink 模型搭建指南,包含详细的模块选择、参数设置和连接布线方式。
一、 所需模块清单 (Blocks)
请在 Simulink Library Browser 中拖入以下模块:
1. 信号与控制模块 (Simulink 原生模块)
- From Workspace (路径:
Simulink / Sources) - 用于读取工况数据。 - Gain (路径:
Simulink / Math Operations) - 用于单位换算。 - Constant (路径:
Simulink / Sources) - 用于设定系统参考电压。 - Divide (路径:
Simulink / Math Operations) - 用于计算电流 (I=P/VI = P / VI=P/V)。 - Scope (路径:
Simulink / Sinks) - 用于可视化结果。
2. 物理信号转换模块 (Simscape Utilities)
- Simulink-PS Converter (路径:
Simscape / Utilities) - 数量: 1 个。 - PS-Simulink Converter (路径:
Simscape / Utilities) - 数量: 2 个。 - Solver Configuration (路径:
Simscape / Utilities) - 必选,物理网络求解器。
3. 物理电气模块 (Simscape Electrical)
- DC Voltage Source (路径:
Simscape / Foundation Library / Electrical / Electrical Sources) - 模拟飞机的直流母线电源或电池。 - Controlled Current Source (路径:
Simscape / Foundation Library / Electrical / Electrical Sources) - 模拟受功率需求控制的动态负载。 - Electrical Reference (路径:
Simscape / Foundation Library / Electrical / Electrical Elements) - 物理系统的接地参考点。 - Current Sensor (路径:
Simscape / Foundation Library / Electrical / Electrical Sensors) - 测量回路电流。 - Voltage Sensor (路径:
Simscape / Foundation Library / Electrical / Electrical Sensors) - 测量负载两端电压。
二、 模块参数设置 (Parameters)
双击以下模块,按照表格修改参数(未提及的保持默认):
| 模块名称 | 需要修改的参数项 | 设定值 | 说明 |
|---|---|---|---|
| From Workspace | Data | P_dem |
读取刚才生成的矩阵。 |
| From Workspace | Sample time | 1 |
采样时间设为 1 秒。 |
| Gain | Gain | 1000 |
将 kW 转换为 W。 |
| Constant | Constant value | 540 |
假设飞机高压直流母线电压为 540V(可按需修改)。 |
| DC Voltage Source | Constant voltage | 540 |
必须与上方 Constant 模块的值保持一致。 |
| Scope | Number of input ports | 3 |
设置为 3 个输入口,分别看功率、电压、电流。 |
三、 连线方式 (Connections)
请按照以下三个逻辑回路进行严格连线:
1. 控制信号计算回路 (蓝色连线)
我们将需求功率转换为需求电流以控制物理负载。
- 将 From Workspace 的输出端连接到 Gain 的输入端。
- 将 Gain 的输出端连接到 Divide 的
*(乘/分子) 输入端(上方端口)。 - 将 Constant 的输出端连接到 Divide 的
/(除/分母) 输入端(下方端口)。 - 将 Divide 的输出端连接到 Simulink-PS Converter 的输入端。
- 将 Simulink-PS Converter 的物理输出端连接到 Controlled Current Source 的控制端口
S。
2. 电气物理网络回路 (黑色/蓝色粗线)
搭建完整的闭环供电网络。
- 将 DC Voltage Source 的正极
+连接到 Current Sensor 的正极+。 - 将 Current Sensor 的负极
-连接到 Controlled Current Source 的正极+。 - 将 Controlled Current Source 的负极
-连接回 DC Voltage Source 的负极-。 - 将 Electrical Reference (接地) 连接到 DC Voltage Source 的负极
-线路上。 - 将 Solver Configuration 连接到物理网络的任意一处(例如连在 DC Voltage Source 的正极线路上)。
- 将 Voltage Sensor 并联在负载两端:正极
+连到 Controlled Current Source 的正极+,负极-连到其负极-。
3. 测量与示波器回路
- 将 From Workspace 的输出信号(即原始的 kW 需求)引出一条分支,连接到 Scope 的第 1 个输入端口。
- 将 Voltage Sensor 的信号端口
V连接到 PS-Simulink Converter (第一个),其输出连接到 Scope 的第 2 个输入端口。 - 将 Current Sensor 的信号端口
I连接到 PS-Simulink Converter (第二个),其输出连接到 Scope 的第 3 个输入端口。
四、 运行仿真
- 在 Simulink 顶部工具栏,将仿真停止时间 (Stop Time) 设置为
1200。 - 点击 Run (运行) 按钮。
- 双击打开 Scope,您将看到三条曲线:
- 图1: 阶跃变化的飞行功率需求 (220kW -> 110kW -> 50kW)。
- 图2: 恒定的母线电压 (540V)。
- 图3: 随功率需求动态变化的电流输出。
Q&A

在您截图的这个模块上,左下角那个空心小三角 (△) 端口,就是我所说的控制端口 S。
为什么没看到字母 “S”?
在较新版本的 MATLAB/Simulink 中,Simscape 库的模块经常默认隐藏端口的字母标签,而是通过几何形状来区分端口的性质。为了方便您后续构建更复杂的物理模型,这里总结一个非常有用的连线规则:
- 正方形端口 (▢): 代表物理/电气连接(例如模块上方和下方的端口,它们代表正极和负极,是真正有实际电流和能量流过的物理线路)。
- 三角形端口 (△ 或 ▷): 代表物理信号连接(Physical Signal,即控制端口。它只传递纯粹的数值信号,不走实际电能)。
接下来的连线动作:
您只需要将 Simulink-PS Converter(信号转换模块)的输出端,直接用鼠标拖拽连接到这个空心小三角 (△) 端口上即可。
Controlled Current Source 的正极 +
正极 (+) 是最顶部的那个正方形端口。
新版 Simulink 为了让图面更简洁,隐藏了加减号符号,但您可以依靠以下通用的“读图规则”来快速判断:
- 看箭头找极性: 模块中间圆圈里的箭头代表内部电流的流向。对于电流源模块,电流从箭头尖端“流出”的方向被定义为正极 (+),而箭头尾部流入的方向则是负极 (-)。
- 因为箭头朝上: 所以它指向的顶部端口就是正极,底部的端口就是负极。
帮您把截图里这 3 个端口的具体功能完整梳理一下:
- 顶部端口(正方形): 正极 (+) —— 按照之前的步骤,请将它连接到
Current Sensor的负极。 - 底部中间端口(正方形): 负极 (-) —— 请将它连接回
DC Voltage Source的负极回路上。 - 左下角端口(空心三角): 控制端 (S) —— 即您刚才找到的信号输入口,用来接
Simulink-PS Converter传来的电流数值。
将 Current Sensor 的负极 - 连接到 Controlled Current Source 的正极 +

1. 找到 Current Sensor 的负极 (-)
在截图上方,那个中间带有字母 “A” 的蓝色模块就是电流传感器(Current Sensor)。
- 它的右侧边缘有两个端口。
- 右侧偏下的那个正方形端口,就是它的负极 (-)。
2. 找到 Controlled Current Source 的正极 (+)
在截图右下角,那个中间带有向上箭头 “↑” 的模块就是受控电流源。
- 如我们上一步所确认的,最顶部的那个正方形端口,就是它的正极 (+)。
连线操作:
用鼠标左键按住 Current Sensor 右侧偏下的正方形端口,直接往下拖拽,将线连接到 Controlled Current Source 最顶部的正方形端口上就可以了。这是一条传递实际电流的物理线路(连好后应该是黑色的粗实线)。
Tips
原理

下面我为您详细拆解这个模型背后的物理与数学原理:
1. “大脑”:控制指令的计算逻辑 (黑色连线部分)
飞机在不同飞行阶段(起飞、巡航、降落),飞行控制系统下达的是功率需求(要飞多快、推力多大),而不是直接下达电流需求。但这在物理电路上,我们需要具体的电流值来控制。
这部分模型的原理就是利用基本的电功率公式 P=U×IP = U \times IP=U×I 的变形公式进行计算:
I=PUI = \frac{P}{U}I=UP
- P_dem (输入): 您输入的飞行工况(220kW、110kW、50kW)。
- Gain (-K-): 因为输入的单位是千瓦 (kW),而物理计算需要国际标准单位瓦特 (W),所以乘以 1000。
- Divide (除法器): 将算出来的真实功率 (W),除以母线设定的参考电压 540V。这样,系统就实时计算出了当前为了满足飞行推力,电机需要从电网里抽走多少安培(A)的电流。
2. “肌肉”:物理电路的执行 (蓝色粗线部分)
真实飞机中的电机系统非常复杂(包含逆变器、控制器等)。在系统级仿真中,为了简化计算且抓住主要矛盾,我们通常用“受控电流源”来等效替代整个动力电机系统。
- DC Voltage Source (540V): 它代表飞机的发电机或高压电池组,被设定为一个“理想电压源”。无论负载怎么折腾,它都死死维持在 540V。
- Controlled Current Source (受控电流源): 这是整个模型最巧妙的地方。它接收前面算出来的电流指令(比如起飞时的 407A),然后在蓝色的物理回路中强行拉出对应大小的电流。
- 结合效应: 电压恒定为 540V,电流被强制拉到 407A,此时负载消耗的真实物理功率就是 540×407≈220,000 W540 \times 407 \approx 220,000\text{ W}540×407≈220,000 W,完美实现了“恒定消耗 220kW 功率”的物理模拟。
3. 波形解读:为什么电流是负的?
看您的 Scope 截图,三根线的逻辑非常清晰,但也藏着一个有趣的细节:
- 蓝线 (最上面): 测量出的负载两端电压。一条死死钉在 540 的直线,说明电源很稳定。
- 黄线 (中间): 原始的功率需求曲线。精确呈现了 220 →\rightarrow→ 110 →\rightarrow→ 50 的阶跃下降。
- 橙线 (最下面): 测量出的物理回路真实电流。它的形状和功率曲线一模一样(同步阶跃),但是数值却在零线以下(大约是 -407, -203, -92)。
为什么电流是负数?
这完全不是您的错误,而是基尔霍夫定律与传感器极性的正常现象。
在您的电路图中,电流源的箭头是向上的(代表电流从它的下端流向上端)。而电流传感器 (Current Sensor) 的正极 (+) 接在了回路左侧。当电流顺着电流源的方向流动,并从电流传感器的负极 (-) 穿入、正极 (+) 穿出时,传感器就会读出一个负值。
在工程仿真中,只要数值大小是对的(407 A×540 V≈220 kW407\text{ A} \times 540\text{ V} \approx 220\text{ kW}407 A×540 V≈220 kW),正负号仅仅代表电流流过的方向,不影响模型本身能量传递的正确性。

核心逻辑:飞机需要的是“功率”,而不是“电流”
在物理学中,功率 (Power) 代表了真正做功的快慢。飞机起飞需要极大的推力,这就需要电机输出极大的功率(比如 220kW)。
而在电路中,功率是由电压和电流共同决定的,公式为:
P=U×IP = U \times IP=U×I
为了满足这个 PPP(功率),系统需要电压 UUU 和电流 III 相互配合。在您的 Simulink 模型里,这两个任务分别交给了两个模块:
1. DC Voltage Source 540V = 楼顶的“恒压水塔”
在真实的飞机上,主发电机的控制系统会拼命维持母线电压稳定。在模型中,我们用一个“理想直流电压源”来代替它。
- 它的特点是死心眼: 就像一个水压永远不变的水塔,不管你楼下是一万个人在用水,还是一个人在用水,管道里的水压(电压)永远死死地钉在 540V。
2. Controlled Current Source = 听懂指令的“智能水龙头”
既然电压 (UUU) 被限制死了是 540V,那么系统想要改变总功率 (PPP),唯一能改变的就只有电流 (III) 了,因为 I=PUI = \frac{P}{U}I=UP。
- 这里的“受控电流源”就相当于一个智能水龙头。
- 它接收到一个指令:“现在飞机要起飞,我需要 220,000 W 的能量!”
- 它非常聪明,自己算了一笔账:既然水塔只给我 540V 的压力,那我必须把阀门开得很大,强行从水塔里抽出 407 安培的水流(电流),才能凑够 540×407≈220,000 W540 \times 407 \approx 220,000\text{ W}540×407≈220,000 W 的总能量。
- 当飞机进入巡航,指令变成“我只需要 110,000 W”。智能水龙头立刻把阀门关小,只抽出 203 安培的电流。
总结您的模型做了什么
这个模型的巧妙之处在于,它没有去精细地搭建电机内部复杂的线圈和磁场,而是抓住了一个宏观事实:电机就是一个想要多少功率,就强行从电网里抽多少电流的“吸血鬼”。
“受控电流源”模块就是用来扮演这个“吸血鬼”的,它确保了在 540V 的恒定电压下,物理电路中真实流淌的电流,永远刚好等于飞行工况所需要的能量。

这 5 个模块共同构成了一个基础的电气“供电 - 消耗 - 测量”闭环网络。
1. 直流电压源 (DC Voltage Source)
- 外观识别: 图中左下方带
+和-号的圆圈。 - 起到的作用: 它是整个电路的“能量源”。在您的飞机模型中,它用来等效替代主发电机或高压电池组。它的特性是提供恒定的直流电压(比如您之前设定的 540V),相当于一个水压永远不变的“恒压水塔”。
2. 受控电流源 (Controlled Current Source)
- 外观识别: 图中左侧带向上箭头
↑的蓝色方块。 - 起到的作用: 它是电路的“执行器”,也就是负载。与普通的固定电阻不同,它不会根据欧姆定律被动消耗电流,而是主动听从指令。它左下角的端口接收您计算好的电流指令,然后在物理回路中强行拉出对应大小的电流。在这里,它完美模拟了需要多少功率就抽多少电流的飞机电机。
3. 电流传感器 (Current Sensor)
- 外观识别: 图中上方带字母
A(代表 Ampere,安培) 的方块。 - 起到的作用: 顾名思义,这就是一个串联在电路中的电流表。电流必须从它的
+端流入,从-端流出。它的任务是实时“监视”物理线路中到底流过了多少安培的电流,并通过右侧的小三角端口,把测量到的纯数据信号传递给示波器(Scope)显示。
4. 电压传感器 (Voltage Sensor)
- 外观识别: 图中右侧带字母
V(代表 Voltage,电压) 的方块。 - 起到的作用: 这是一个并联在电路中的电压表。它的一端连着负载的正极,另一端连着负极。它负责实时测量这两点之间的电势差(即真实电压),同样将测量结果作为数据信号传递给示波器。
5. 电气参考地 (Electrical Reference)
- 外观识别: 图中最底部由几条水平线组成的接地符号。
- 起到的作用: 提供全电路的零电位参考点 (0V)。在 Simscape 物理建模中,这是强制要求的模块。就像测量身高必须以地面为基准一样,如果没有这个接地符号,Simulink 的底层求解器就不知道该以哪里为 0V 来计算整个网络中其他节点的电压,模型直接会报错无法运行。
一句话总结这部分回路的运作:
电源(圆圈)负责供电,受控负载(箭头)根据飞行需求负责抽电,而两个传感器(A 和 V)像监控探头一样,把管路里的“水流大小”和“水压高低”记录下来,接地符号则保证了整个物理计算有一个基准点。
PS-Simulink Converter,Simulink-PS Converter分别是啥干啥的
这是一个非常触及 Simulink 核心底层逻辑的好问题!
您在连线时肯定发现了,连这些转换器的时候,线上会出现一个小三角形(▷)。其实,这两个模块就是 Simulink 里的“跨界翻译官”。
要把它们的作用讲清楚,我们需要先明白一个大前提:在您的模型里,其实存在着两个完全不同的世界。
- 常规 Simulink 世界(信号世界): 这里只有纯粹的数学和逻辑(比如您的乘法、除法、常数模块)。这里的连线传递的是纯粹的数值(就像软件里的变量,没有真实的能量)。
- Simscape 世界(物理世界): 这里模拟的是真实的物理法则(比如电源、电线、传感器)。这里的连线代表真实的物理连接(比如电线),里面流淌着必须遵守能量守恒的电流和电压。
既然这是两个世界,它们“语言”就不通,不能直接连在一起。这时候就需要这两个转换器出马了(PS 代表 Physical Signal,即物理信号):
1. Simulink-PS Converter(将信号转换为物理量)
- 它的角色:执行器(下达指令)
- 作用: 把 Simulink 世界算出来的纯粹的“数字”,翻译成 Simscape 物理世界能听懂的“物理控制指令”。
- 在您模型里的体现:
前面的数学除法器算出了一个数字407。如果直接把407塞给物理电路,电路会报错:“你给我个纯数字干嘛?我要的是电流指令!”
所以,Simulink-PS Converter 就接过了纯数字407,把它打上了一个物理标签,翻译成:“嘿,电流源,请你从管子里抽出 407 A407\text{ A}407 A 的电流”。这样受控电流源就听懂并执行了。
2. PS-Simulink Converter(将物理量转换为信号)
- 它的角色:传感器读数器(提取数据)
- 作用: 把 Simscape 物理世界里真实存在的状态(比如电压有多高、电流有多大),提取成纯粹的“数字”,送回 Simulink 世界去进行计算或显示。
- 在您模型里的体现:
您的 Voltage Sensor(电压传感器)并联在电路上,感受到了实实在在的 540V540\text{V}540V 物理电压。但是,右边的 Scope(示波器)是一个纯数学绘图工具,你不能把一根带 540V540\text{V}540V 高压的“真电线”直接插进电脑屏幕里去画图。
所以,PS-Simulink Converter 就接在传感器后面,把物理的 540V540\text{V}540V 剥离掉物理属性,翻译成一个纯粹的数字540,扔给示波器:“喏,画一条在 540 位置的直线吧。”
一句话总结
- 算好了数学公式,要去控制真实的物理元件时 →\rightarrow→ 用 Simulink-PS。
- 测量了真实的物理现象,要拿到屏幕上显示或做数学运算时 →\rightarrow→ 用 PS-Simulink。
在较新版本的 MATLAB 中,为了帮用户省事,如果您直接把信号线连到物理端口上,软件会自动帮您生成这两个转换器(也就是线上自动出现的那些带三角形的小方块),这也是为什么您之前连线时感觉特别顺畅的原因!
ALL

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)