压缩空气储能仿真simulink模型

适合matlab 2017及以上版本
在这里插入图片描述

MATLAB 代码示例

%% 初始化模型
modelName = ‘MyPowerSystem’;
new_system(modelName); % 创建新模型
open_system(modelName); % 打开模型窗口

%% 1. 添加控制回路模块 (左下角部分)
% 添加一个传递函数 (Transfer Fcn) - 对应图中的 2/(0.5s+2)
add_block(‘simulink/Continuous/Transfer Fcn’, [modelName ‘/MyTF1’]);
set_param([modelName ‘/MyTF1’], ‘Numerator’, ‘[2]’, ‘Denominator’, ‘[0.5 2]’);
set_param([modelName ‘/MyTF1’], ‘Position’, [100 300 160 340]);

% 添加一个积分环节 (Integrator) - 对应图中的 1/s
add_block(‘simulink/Continuous/Integrator’, [modelName ‘/Integrator1’]);
set_param([modelName ‘/Integrator1’], ‘Position’, [180 300 210 340]);

% 添加增益 (Gain)
add_block(‘simulink/Math Operations/Gain’, [modelName ‘/Gain1’]);
set_param([modelName ‘/Gain1’], ‘Position’, [250 300 280 330]);

% 添加求和节点 (Sum)
add_block(‘simulink/Math Operations/Sum’, [modelName ‘/Sum1’]);
set_param([modelName ‘/Sum1’], ‘Position’, [50 300 70 320]);

%% 2. 添加主电路/测量模块 (中间部分)
% 这里以添加一个通用桥(Universal Bridge)为例,图中看起来像是一个逆变器或整流器
add_block(‘Simscape/Electrical/Specialized Power Systems/Fundamental Blocks/Power Electronics/Universal Bridge’, [modelName ‘/Universal Bridge’]);
set_param([modelName ‘/Universal Bridge’], ‘Position’, [400 150 500 300]);

% 添加示波器 (Scope)
add_block(‘simulink/Sinks/Scope’, [modelName ‘/Scope_Main’]);
set_param([modelName ‘/Scope_Main’], ‘Position’, [600 100 630 130]);

%% 3. 添加逻辑/信号处理 (左上角部分)
% 添加一个多路复用器 (Mux)
add_block(‘simulink/Signal Routing/Mux’, [modelName ‘/Mux1’]);
set_param([modelName ‘/Mux1’], ‘Position’, [200 100 230 150]);

%% 4. 连接模块 (示例连接)
% 连接 Sum -> Transfer Fcn
add_line(modelName, ‘Sum1/1’, ‘MyTF1/1’);

% 连接 Transfer Fcn -> Integrator
add_line(modelName, ‘MyTF1/1’, ‘Integrator1/1’);

% 连接 Integrator -> Gain
add_line(modelName, ‘Integrator1/1’, ‘Gain1/1’);

% 连接 Gain -> Universal Bridge (假设连接到控制端口)
add_line(modelName, ‘Gain1/1’, ‘Universal Bridge/1’);

%% 整理布局并保存
save_system(modelName);

如何使用这段代码

打开 MATLAB 软件。
点击“新建脚本”。

点击“运行”。
MATLAB 会自动弹出一个名为 MyPowerSystem 的窗口

在这里插入图片描述

请在 MATLAB 命令行或脚本中运行以下代码:

function create_motor_model()
% 1. 定义模型名称并新建模型
modelName = ‘Motor_Control_System’;
new_system(modelName, ‘Model’);
open_system(modelName);

% 2. 添加底层控制回路 (左下角部分)
% 添加传递函数模块: 2 / (0.5s + 2)
add_block('simulink/Continuous/Transfer Fcn', [modelName '/Plant_TF']);
set_param([modelName '/Plant_TF'], 'Position', [150 300 230 340], ...
          'Numerator', '[2]', 'Denominator', '[0.5 2]');

% 添加积分环节: 1/s
add_block('simulink/Continuous/Integrator', [modelName '/Integrator']);
set_param([modelName '/Integrator'], 'Position', [260 300 290 340]);

% 添加增益 Gain (假设是Kp或Ki)
add_block('simulink/Math Operations/Gain', [modelName '/Gain_K']);
set_param([modelName '/Gain_K'], 'Position', [320 300 350 330], 'Gain', '1');

% 添加求和点 Sum
add_block('simulink/Math Operations/Sum', [modelName '/Sum_Junction']);
set_param([modelName '/Sum_Junction'], 'Position', [100 310 120 330], 'Inputs', '|+-');

% 3. 添加电机主体模块 (中间部分)
% 注意:这里使用通用的异步电机模块作为示例,你需要根据实际库选择 PMSM 或 ASM
add_block('powerlib/Machines/Asynchronous Machine SI Units', [modelName '/Asynchronous Machine']);
set_param([modelName '/Asynchronous Machine'], 'Position', [450 200 550 350]);

% 4. 添加测量与示波器 (右侧部分)
% 添加示波器 Scope
add_block('simulink/Sinks/Scope', [modelName '/Scope_Output']);
set_param([modelName '/Scope_Output'], 'Position', [650 200 680 230]);

% 添加电压测量
add_block('powerlib/Measurements/Voltage Measurement', [modelName '/Voltage_Measurement']);
set_param([modelName '/Voltage_Measurement'], 'Position', [580 180 600 200]);

% 5. 连接模块 (示例连接)
% 连接 Sum -> Plant_TF
add_line(modelName, 'Sum_Junction/1', 'Plant_TF/1');
% 连接 Plant_TF -> Integrator
add_line(modelName, 'Plant_TF/1', 'Integrator/1');
% 连接 Integrator -> Gain
add_line(modelName, 'Integrator/1', 'Gain_K/1');

% 自动排列布局
Simulink.BlockDiagram.arrangeSystem(modelName);

disp(['模型 ' modelName ' 已生成成功!请检查模块参数。']);

end

Logo

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

更多推荐