在这里插入图片描述

根据您图片中的任务描述(第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. 控制信号计算回路 (蓝色连线)

我们将需求功率转换为需求电流以控制物理负载。

  1. From Workspace 的输出端连接到 Gain 的输入端。
  2. Gain 的输出端连接到 Divide* (乘/分子) 输入端(上方端口)。
  3. Constant 的输出端连接到 Divide/ (除/分母) 输入端(下方端口)。
  4. Divide 的输出端连接到 Simulink-PS Converter 的输入端。
  5. Simulink-PS Converter 的物理输出端连接到 Controlled Current Source 的控制端口 S
2. 电气物理网络回路 (黑色/蓝色粗线)

搭建完整的闭环供电网络。

  1. DC Voltage Source 的正极 + 连接到 Current Sensor 的正极 +
  2. Current Sensor 的负极 - 连接到 Controlled Current Source 的正极 +
  3. Controlled Current Source 的负极 - 连接回 DC Voltage Source 的负极 -
  4. Electrical Reference (接地) 连接到 DC Voltage Source 的负极 - 线路上。
  5. Solver Configuration 连接到物理网络的任意一处(例如连在 DC Voltage Source 的正极线路上)。
  6. Voltage Sensor 并联在负载两端:正极 + 连到 Controlled Current Source 的正极 +,负极 - 连到其负极 -
3. 测量与示波器回路
  1. From Workspace 的输出信号(即原始的 kW 需求)引出一条分支,连接到 Scope 的第 1 个输入端口。
  2. Voltage Sensor 的信号端口 V 连接到 PS-Simulink Converter (第一个),其输出连接到 Scope 的第 2 个输入端口。
  3. Current Sensor 的信号端口 I 连接到 PS-Simulink Converter (第二个),其输出连接到 Scope 的第 3 个输入端口。

四、 运行仿真

  1. 在 Simulink 顶部工具栏,将仿真停止时间 (Stop Time) 设置为 1200
  2. 点击 Run (运行) 按钮。
  3. 双击打开 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 个端口的具体功能完整梳理一下:

  1. 顶部端口(正方形): 正极 (+) —— 按照之前的步骤,请将它连接到 Current Sensor 的负极。
  2. 底部中间端口(正方形): 负极 (-) —— 请将它连接回 DC Voltage Source 的负极回路上。
  3. 左下角端口(空心三角): 控制端 (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×407220,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 V220 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×407220,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 位置的直线吧。”

一句话总结
  • 算好了数学公式,要去控制真实的物理元件时 →\rightarrowSimulink-PS
  • 测量了真实的物理现象,要拿到屏幕上显示或做数学运算时 →\rightarrowPS-Simulink

在较新版本的 MATLAB 中,为了帮用户省事,如果您直接把信号线连到物理端口上,软件会自动帮您生成这两个转换器(也就是线上自动出现的那些带三角形的小方块),这也是为什么您之前连线时感觉特别顺畅的原因!

ALL

在这里插入图片描述

Logo

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

更多推荐