控制台 退出登录

再玩一次AI simulink:如何设计提示词让simulink模型美观规范

如果不要求布局的规范,那么官方MCP生成的simulink会美观性极差:

下面是我要AI搭建的无人机气动力和力矩模型,布局已经是我多次调整后改进的,依然丑陋:

问题出在缺少关于排版的提示词,于是我又生成如下提示词:

你是严格遵循MAAB 5.0、MISRA Simulink建模规范、对齐Simulink原生模块最佳显示比例的资深工程师,请针对指定路径的Simulink模型,输出可直接运行的MATLAB整改脚本。
核心铁则:100%保留模型原有逻辑、全部模块参数、查表数据、连接关系与仿真结果,仅调整分层结构、布局、尺寸、命名、外观、信号路由;严禁修改任何仿真行为。适配WorkBuddy调用MATLAB执行场景,所有约束强制执行。

## 一、分层架构优化(从根源解决模块堆积,适配查表密集/多输入多输出模型)
1. 通用分层规则
    - 递归遍历所有层级,单层功能模块数量≥8个时,必须按功能域打包为虚拟子系统;顶层仅保留输入端口、子系统、输出端口,禁止底层运算/查表模块直接平铺。
    - 子系统内部严格复用整套规范,端口命名与外部信号名一一对应,禁止匿名端口。
2. 查表密集型模型专项分层(气动力模型验证有效)
    - 按功能域标准化拆分,参考划分:输入预处理与总线分发模块、1D/2D查表阵列模块、3D查表阵列模块、系数求和与运算模块、坐标转换与输出合成模块。
    - 同维度、同类型的查表模块必须归属于同一子系统,禁止不同维度、不同功能的查表模块混杂排布。
3. 信号总线化优化(解决多输入并行走线横穿画布问题)
    - 多路并行输入信号优先通过Bus Creator封装为单根输入总线,再分发至各子系统;多路输出信号统一通过总线汇总后接入顶层输出端口。
    - 子系统内部同组并行信号可通过二级总线分发,减少大量平行线交叉,提升画布整洁度。

## 二、布局与模块尺寸强制规范(严格对齐Simulink原生最佳比例)
1. 信号流向约束
    - 所有层级信号流严格从左至右;反馈回路仅允许上下绕行,禁止横向横穿主信号通路。
2. 对齐与间距(匹配Simulink自动布局默认间距)
    - 同层级模块行列规整对齐,同一行模块中心纵向对齐,同一列模块左边缘对齐。
    - 模块边缘横向空白间距统一60像素,纵向空白间距统一30像素;消除重叠、错位。
    - 同类模块阵列组之间额外增加20px纵向留白,区分不同功能分组;画布四周预留≥50px空白,模块不得紧贴边界。
3. 标准化模块尺寸(单位:像素,宽×高,严格匹配原生模块比例,无拉伸变形)
    - 端口类(Inport, Outport, Trigger, Enable):35×20
      依据:原生默认窄型端口比例,符合MAAB jc_0081最小图标尺寸要求,文字显示在外侧不占用功能区
    - 基础运算类(Gain、Sum、Integrator、Product、Relational Operator、Logical Operator等):75×25
      依据:MathWorks官方set_param标准示例尺寸,官方原生最佳宽高比,图标完整无变形
    - 窄型路由类(Goto、From):40×20
      依据:原生路由模块默认窄型比例,仅显示标签文本,隐藏模块名,紧凑不占空间
    - 通用路由类(Switch、Multiport Switch、DataTypeConversion、Rate Transition):70×30
      依据:多端口模块原生适配高度,保证端口纵向排布不挤压、图标完整
    - 源宿基础类(Constant、Display、From/To Workspace):75×25
      依据:与基础运算类尺寸统一,仅参数超长时纵向拉伸,宽度固定不变
    - 查表类(1-D/2-D/3-D Lookup Table、Prelookup):90×50
      依据:查表模块原生图标比例,2:1舒适宽高比,完整显示模块名、维度信息,图标无压缩
    - 纯图标路由类(Mux、Demux):宽度固定10;最小高度25,每新增1个端口高度+15
      依据:官方Signal Routing库原生窄高比例,纯图标无文字,宽度最紧凑,端口间距对齐原生默认
    - 总线路由类(Bus Creator、Bus Selector):宽度固定35;最小高度28,每新增1个端口高度+15
      依据:总线模块原生图标略宽于Mux,适配总线标识显示,比例与官方库完全一致
    - 观测类(Scope):180×120
      依据:贴合示波器窗口原生比例,画布占比适中
    - 子系统(Subsystem/Atomic Subsystem):内部模块距离边框留白≥30px
4. 阵列化排布专项规则(高密度查表/运算模型适用)
    - 同类型、同维度的查表/运算模块按行列矩阵式整齐排布,行列间距完全均匀。
    - 同一分组的模块左边缘对齐、上边缘对齐,整体形成规整的功能区块。
5. 布线硬性规则
    - 所有信号线修正为水平/垂直直角折线,彻底清除斜线、不规则蛇形走线。
    - 单根信号线拐点数量≤2;同层级最大限度消除信号线交叉。
    - 同组并行信号线间距均匀、走向一致,整体规整无错落。
    - 调整模块位置、尺寸后自动修复连线,杜绝悬空端口、断线。

## 三、Goto/From 信号路由规范(遵循MAAB/MISRA审慎使用原则,非强制新增)
### 3.1 使用原则(对齐MAAB db_0032、MISRA_SLSF_026规范)
1.  **不强制新增Goto/From**:优先通过合理分层、总线化、布局优化解决布线问题;不主动大规模新增Goto/From,避免信号流向隐蔽化、降低模型可读性。
2.  **现有模块必整改**:模型中原已存在的Goto/From模块,必须全部按本章节规则标准化整改,消除不合规用法。
3.  **可选优化场景**:仅当同层级长距离走线交叉严重、多处分复用同一信号时,可选择性新增Goto/From以简化布线,且必须遵守以下全部约束。

### 3.2 硬性强制约束(只要使用Goto/From就必须遵守,无例外)
1.  **仅允许局部标签**:所有Goto标签可见性强制设置为`scoped`(局部);**严禁使用global全局标签,禁止通过Goto Tag Visibility模块扩展标签可见范围**。
2.  **同层级成对原则**:Goto与对应的From必须处于**同一子系统层级内**;禁止跨子系统边界通过Goto/From传递信号,跨层级信号必须通过子系统Inport/Outport端口显式传递。
3.  **成对完整性校验**:整改后必须保证标签一一对应,无悬空无去向的Goto、无孤立无来源的From,无未定义的标签引用。
4.  **冗余From必须合并**:同一层级内,若多个From模块引用同一Goto标签,仅保留1个位置最优的From模块;删除其余重复From,通过信号线分支连接所有下游模块,保证数据流完全不变。

### 3.3 推荐优化方式(可选执行,不强制)
1.  输入端口侧:若同层内输入信号需多处分发,可在Inport后级联Goto模块,通过多From接收,减少长线横穿。
2.  输出端口侧:若多路信号汇总输出,可通过From汇聚后接入Outport,简化端口侧布线。
3.  端口与Goto/From之间为一对一直连,中间不插入其他功能模块。

### 3.4 命名规范
1.  Goto标签名称必须与对应信号语义名称一致,采用英文语义化命名,禁止`Goto1`、`tag1`等默认编号名称。
2.  Goto/From模块默认隐藏模块名称,仅显示标签文本,保持界面简洁。

## 四、命名规范化强制要求
1.  全层级遍历清除所有模块默认编号命名(Gain1、Subsystem2、Lookup1等)。
2.  普通模块命名格式:`功能描述_模块类型`,下划线分隔,禁止中文、空格、特殊符号。
3.  子系统命名采用大驼峰格式,清晰体现功能域。
4.  信号线语义命名与端口名、Goto标签三者保持统一;信号名称显示在信号线上方。
5.  运算、查表类模块名称显示在模块正下方;Goto/From隐藏模块名,仅显示标签。

## 五、外观样式统一规范(MAAB官方标准)
1.  字体:全局所有模块文字、信号名字体统一Arial,字号10号;关闭全部模块阴影效果。
2.  画布背景默认白色,可选启用浅灰色细网格。
3.  信号线分级:普通单信号线宽1磅;Mux/Bus总线输出信号线宽2磅;全部信号线统一黑色,禁止彩色信号线。
4.  功能分区优化:不同功能域子系统增加半透明底色区分:查表区域浅蓝、运算逻辑浅绿、输出合成浅橙;色块不遮挡模块与连线。
5.  关键逻辑可增加文本注释框,避开信号线通路。

## 六、MATLAB脚本输出硬性规范
1.  脚本首段实现原模型自动备份(复制至同目录),规避原始文件损坏风险。
2.  递归遍历所有层级子系统,逐层执行全部整改逻辑。
3.  查表模块、运算模块只调整位置与外观尺寸,绝不修改断点、插值方式、表格数据、模块参数。
4.  整改执行顺序:模型备份 → 子系统分层+总线改造 → 现有Goto/From合规化整改+冗余合并 → 模块尺寸标准化 → 阵列化布局对齐 → 布线优化 → 命名规范化 → 外观样式统一
5.  全部调用Simulink原生API实现,禁止伪代码;关键代码添加中文注释。
6.  整改完成后,自动调用`Simulink.BlockDiagram.arrangeSystem`最终对齐,自动保存模型并打开刷新视图。

## 输出自检清单
1.  是否完全保留全部仿真逻辑、参数、查表数据,不改变仿真结果
2.  是否针对高密度模型完成功能分层,避免单层模块堆积
3.  是否所有模块尺寸对齐原生比例,图标无拉伸变形、文字清晰完整
4.  是否实现查表/运算模块阵列化排布,行列对齐间距均匀
5.  是否完成多输入多输出总线化改造,减少并行走线交叉
6.  所有Goto/From是否均为scoped局部标签、同层级成对、无全局标签、无跨层级引用
7.  是否完成同标签重复From合并,无冗余模块
8.  脚本是否完整:备份→整改→保存→预览全流程,可直接在MATLAB运行

待整改模型路径:`替换为你的模型绝对路径.slx`

使用后,新生成的模块布局:

效果好很多,并且还进行了分块,可读性大幅提高,


内部的子模块还有点优化空间,不过能接受了,可以手动选择自动布线功能改进。

基于前期写好的公式和建模要求(也是AI辅助完成),指挥agent建模,做出来的最终工作还是有模有样。

保存好这些文档,未来同样的工作可以大幅提效,
这大幅提高了我对AI替代建模的信心。

本文采用 CC BY-NC-SA 4.0 协议发布

相关文章

eVTOL 电机转速推力建模:从拟合公式到推力响应

eVTOL 电机转速推力建模:从拟合公式到推力响应

一次实测:AI搭建simulink控制模型

一次实测:AI搭建simulink控制模型

一句话让 AI 写 Simulink:Simulink Agentic Toolkit 落地笔记

一句话让 AI 写 Simulink:Simulink Agentic Toolkit 落地笔记