Simulink仿真:混合动力船舶能量控制策略研究
关键词:混合动力船舶;复合储能系统;能量管理控制策略
参考文献:混合动力船舶能量控制策略研究+视频讲解
仿真平台:MATLAB/Simulink
主要内容:在Simulink中搭建了超级电容的物理模型并结合锂电池模块进行混合储能,根据下如图最右侧的黄线(需求功率曲线),蓝线(超级电容➕锂电池)进行联合跟踪需求功率,同样红线(仅锂电池)也进行跟踪需求功率。对比结果可以看出,同等条件下,超级电容和锂电池的联合可以更快的达到需求功率并维持时间更长,而且超级电容的补充也使锂电池的放电时间延长、减小了波动,进而延长了使用寿命。
在这里插入图片描述
Simulink仿真场景的MATLAB脚本代码。

假设这个场景是一个PID控制系统(这在工程仿真中非常常见),我们将使用MATLAB代码来构建这个模型、运行仿真并绘制结果,这对应了图片中的操作逻辑。

MATLAB 仿真代码示例

这段代码将在MATLAB中自动创建一个简单的闭环控制系统模型,运行仿真

% 清除工作区
clear;
clc;
close all;

% 1. 定义系统参数
% 假设被控对象是一个二阶传递函数: G(s) = 1 / (s^2 + 10s + 20)
num = [1];
den = [1, 10, 20];
Plant = tf(num, den);

% 定义PID控制器参数
Kp = 300;
Ki = 100;
Kd = 10;
Controller = pid(Kp, Ki, Kd);

% 2. 在MATLAB中构建闭环系统 (对应图片背景中的模型搭建)
% 闭环传递函数 T(s) = § / (1 + CP)
sys_cl = feedback(Controller * Plant, 1);

% 3. 设置仿真时间
t = 0:0.01:5; % 仿真5秒

% 4. 运行仿真 (对应图片中的运行按钮)
% 这里我们计算阶跃响应,相当于在Simulink中给一个Step输入
[y, t] = step(sys_cl, t);

% 5. 绘制波形 (对应图片前景中的Scope窗口)
figure(‘Color’, ‘white’, ‘Name’, ‘Simulink仿真结果复现’);

% 子图1:系统输出响应
subplot(2, 1, 1);
plot(t, y, ‘LineWidth’, 1.5);
grid on;
title(‘系统阶跃响应 (Step Response)’);
xlabel(‘时间 (s)’);
ylabel(‘幅值’);
legend(‘输出信号’);

% 模拟图片中可能存在的误差信号或控制信号
% 误差 e(t) = 输入(1) - 输出(y)
error = 1 - y;

% 子图2:误差信号 (对应图片中波动的曲线)
subplot(2, 1, 2);
plot(t, error, ‘LineWidth’, 1.5, ‘Color’, [0.8500 0.3250 0.0980]);
grid on;
title(‘跟踪误差 (Tracking Error)’);
xlabel(‘时间 (s)’);
ylabel(‘误差值’);
legend(‘误差信号’);

% 调整布局
sgtitle(‘基于PID控制的仿真波形分析’);

代码说明

模型构建 (tf, pid, feedback):这部分代码代替了你在Simulink界面中拖拽“传递函数模块”、“PID模块”和“求和模块”并用线连接的过程。
仿真运行 (step):计算系统对输入信号的响应,相当于点击Simulink工具栏上的“Run”按钮。
绘图 (plot, subplot):这部分代码生成了类似于图片中Scope窗口的图表,显示了信号随时间变化的曲线。

在这里插入图片描述
在这里插入图片描述
MATLAB Simulink 的仿真界面。

背景是 Simulink 的模型编辑窗口,虽然被遮挡,但能看到一些模块连线。前景是三个 Scope(示波器) 窗口,分别显示了不同的波形曲线,这通常是控制系统、信号处理或电力电子系统的仿真结果。

MATLAB 仿真代码示例

MATLAB 中自动创建一个简单的闭环控制系统模型,运行仿真,

% 清除工作区
clear;
clc;
close all;

% 1. 定义系统参数
% 假设被控对象是一个二阶传递函数: G(s) = 1 / (s^2 + 10s + 20)
num = [1];
den = [1, 10, 20];
Plant = tf(num, den);

% 定义PID控制器参数
Kp = 300;
Ki = 100;
Kd = 10;
Controller = pid(Kp, Ki, Kd);

% 2. 在MATLAB中构建闭环系统 (对应图片背景中的模型搭建)
% 闭环传递函数 T(s) = § / (1 + CP)
sys_cl = feedback(Controller * Plant, 1);

% 3. 设置仿真时间
t = 0:0.01:5; % 仿真5秒

% 4. 运行仿真 (对应图片中的运行按钮)
% 这里我们计算阶跃响应,相当于在Simulink中给一个Step输入
[y, t] = step(sys_cl, t);

% 5. 绘制波形 (对应图片前景中的Scope窗口)
figure(‘Color’, ‘white’, ‘Name’, ‘Simulink仿真结果复现’);

% 子图1:系统输出响应
subplot(2, 1, 1);
plot(t, y, ‘LineWidth’, 1.5);
grid on;
title(‘系统阶跃响应 (Step Response)’);
xlabel(‘时间 (s)’);
ylabel(‘幅值’);
legend(‘输出’);

% 子图2:误差信号 (假设目标是1,误差 = 目标 - 输出)
error = 1 - y;
subplot(2, 1, 2);
plot(t, error, ‘r’, ‘LineWidth’, 1.5);
grid on;
title(‘误差信号 (Error Signal)’);
xlabel(‘时间 (s)’);
ylabel(‘幅值’);
legend(‘误差’);

代码说明

定义系统:我们定义了一个二阶传递函数作为被控对象。
定义控制器:使用 pid 函数创建了一个 PID 控制器。
构建闭环:使用 feedback 函数构建了单位负反馈闭环系统。
仿真:使用 step 函数计算系统的阶跃响应。
绘图:使用 plot 函数绘制了系统输出和误差信号,类似于 Simulink 中 Scope 显示的效果。

模型的具体功能(例如:电机控制、逆变器、温度控制等)。
图片中Scope 波形的含义(例如:电压、电流、转速、误差等)。

Logo

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

更多推荐