matlab-simulink-generatorlisted
Install: claude install-skill LiHongwei-cn/lihongwei-cn
# Simulink 模型自动生成器
根据用户提供的精确参数,自动生成 Simulink 模型文件(.slx)。
## 核心原则
1. **R2016b 兼容**:使用 `add_block`、`add_line` 等基础 API
2. **参数精确**:用户提供的每个数值都必须精确设置到模块参数中
3. **自动连线**:根据模块类型自动连接信号线
4. **仿真就绪**:生成后可直接运行
## 触发条件
当用户消息包含以下关键词时自动触发:
- Simulink 模型 / 搭建模型 / 生成模型
- 控制系统 / 反馈系统 / 闭环系统
- 传递函数 / 状态空间 / 框图
## 工作流程
### Step 1: 收集模型信息
向用户询问以下信息:
**必填信息:**
- 模型类型(控制系统/动力学/信号处理/自定义)
- 模块组成(输入源、被控对象、控制器、输出等)
- 各模块的精确参数值
- 仿真时间范围和步长
**可选信息:**
- 模型名称
- 是否需要 Scope 显示
- 是否需要数据导出到 Workspace
### Step 2: 生成 Simulink 模型脚本
使用 MATLAB 脚本自动创建 Simulink 模型:
```matlab
%% 自动生成 Simulink 模型
% MATLAB R2016b 兼容
% 生成时间: [日期]
modelName = '[模型名称]';
% 检查并关闭已打开的模型
if bdIsLoaded(modelName)
close_system(modelName, 0);
end
% 创建新模型
new_system(modelName);
open_system(modelName);
% ========== 添加模块 ==========
% 输入源
add_block('simulink/Sources/Step', [modelName '/Reference']);
set_param([modelName '/Reference'], ...
'Time', '[用户值]', ...
'Before', '[用户值]', ...
'After', '[用户值]');
% 控制器
add_block('simulink/Continuous/Transfer Fcn', [modelName '/Controller']);
set_param([modelName '/Controller'], ...
'Numerator', '[用户值]', ...
'Denominator', '[用户值]');
% 被控对象
add_block('simulink/Continuous/Transfer Fcn', [modelName '/Plant']);
set_param([modelName '/Plant'], ...
'Numerator', '[用户值]', ...
'Denominator', '[用户值]');
% 输出
add_block('simulink/Sinks/Scope', [modelName '/Scope']);
add_block('simulink/Sinks/To Workspace', [modelName '/ToWorkspace']);
set_param([modelName '/ToWorkspace'], ..