| 本文作者:MathWorks 中国资深应用工程师 刘海伟
生成式 AI 正在进入工程研发领域,但企业真正关注的是:其是否可靠、可控,并能够交付到产品。MATLAB/Simulink围绕工程落地为生成式 AI 提供了多种工具:
MATLAB Agentic Toolkit 和 Simulink Agentic Toolkit,为 coding agent 提供了MATLAB 编程能力和Simulink的模型构建和仿真能力。
MATLAB MCP Core Server,将 Coding Agent 与MATLAB/Simulink 进行连接,对大模型生成的代码和模型进行确认和验证。
系统介绍
本文通过自然语言与 Agentic AI 交互,完成一个基于 Simulink 的闭环控制系统建模与控制器开发流程,并以主动式 CPU 散热闭环控制系统为例进行演示。系统最终框架如下:

控制目标是结合 Agentic AI,通过设计 PI 控制器,控制电机电压来驱动冷却风扇,并将传感器温度保持在 50°C(323.15 K)限制值或以下。冷却风扇由 12V 电机驱动。控制器输出范围为 0V(表示电机未运行且没有强制对流冷却)到 12V(对应电机的最高转速,因此也是系统能够实现的最高对流传热)之间。
目前已有的条件包括:
|CPU + 散热器|子系统模型 HeatSinkSubsys.slx。这个模型是有限元模型完成 PDE 求解导出的FE矩阵(K, M, F, A, Q, G, H, R),结构如图:

系统核心通过 Simulink 中的 Descriptor State Space 模块构建有限元模型的常微分矩阵。|CPU + 散热器|的动态特性呈如下形式的非线性:

模型的输入包括 CPU 热源扰动输入,环境扰动输入 Q,空气质量流率 T∞。CPU 热源 Q 通过一个标量的序列描述它的产热负载,相对简单。环境温度 T∞ 为一个常量,空气质量流率 m ̇ 通过影响对流系数实现对温度的影响。
执行器模型(散热风扇)FanSubsys.slx。风扇的性能曲线为输入电压以及对应的风扇空气体积流量的查表(如下图),并结合空气密度转化成质量流率。系统的瞬态特性通过一个一阶系统描述,系统的时间常数为 0.2192s。

温度传感器模型 SensorSubsys.slx。温度传感器模型为时间常数为 1s 的一阶系统。温度传感器在散热片上的安装位置如图中红点所示

在已有条件基础上,工程师希望借助 Agentic AI 辅助完成如下 PI 控制器设计任务和挑战:
散热器模型的 FEM 导出的矩阵和边界输入目前不够清晰,需要让 Agentic AI 帮助分析每个矩阵的维度、稀疏性和物理含义(热容?热传导?对流边界?)并建立有限元矩阵到全阶散热器子系统 Simulink Descriptor State Space 模块的映射关系,得到全阶的用于 Simulink 的有限元模型。
当前得到的 |CPU + 散热器| 全阶有限元模型是非线性的,仿真速度较慢。需要利用 Agentic AI 对 |CPU + 散热器| 模型在不同空气质量流量工作点下进行线性化,得到 LPV(Linear Parameter Varying Systems)模型,并对 LPV 模型中的各个局部模型进行降阶,从而在保证精度的同时,获得可用于高效控制器设计的 LPV 模型。
对于 PI 控制器而言,被控对象除了前面得到的 |CPU + 散热器| 的 LPV 模型,还包括散热风扇模型和传感器模型。因此,系统输入需要从空气质量流量扩展为电压(0~12V),并基于新的输入设计不同工作点,得到新的 LPV 模型。工作点设计覆盖不同电压水平,需要求解不同电压下的平衡条件,并在每个条件下对对象模型进行线性化,以获得局部线性被控对象动态特性。
为散热器模型调优PI控制器参数,满足目标响应时间为 5 秒。
基于上述挑战和任务,本文通过工程师与 Agentic AI 的交互完成相关设计工作。值得一提的是,MathWorks 官方提供的 MCP 和 Agentic Toolkit 为 Agent 模式提供了所需工具(MCP Tools)以及一些 MATLAB/Simulink 相关任务技能(Skills)。这些工具支持利用官方 MCP 能力,使 AI 智能体能够驱动与 MATLAB/Simulink 的交互。本文涉及的 Skills 包括:

本文案例基于 MATLAB 内置帮助示例[1]改编,主要希望通过与 Agentic AI 交互,观察 AI 在自动生成脚本、调试、模型编辑、模型构建和仿真等任务中的能力边界。
接下来,本文将完整演示如何结合 Agentic AI 实现上述任务。
任务一:
分析有限元全阶子系统模型,基于有限元导出的FE矩阵(K, M, F, A, Q, G, H, R)为Simulink模型的Descriptor State Space模块构建对应的映射关系。
| 工程师:现在有一个散热器模型的子系统 Simulink 模型 HeatSinkSubsys.slx,模型的初始化参数脚本为 heat_sin_defs.m 文件。帮我分析一下这个子系统的输入输出。这个子系统的 Descriptor State Space模块需要对应的有限元矩阵,请利用FEMexportedMatrix.mat中的FEMAT中的有限元矩阵构建 Descriptor State Space 需要的矩阵参数,并解释各矩阵物理含义和这样构建的原因。
| AI:


此部分 AI 能力和总结- 矩阵分析与构建:
AI 自动识别 19106×19106 稀疏矩阵结构
AI 解释每个 FE 矩阵的物理意义(热容、热传导、对流边界)
AI 建立 FE 矩阵 → DSS 模块的映射关系
任务二:
多工况线性化与模型降阶并构建散热器LPV(线性参数变化)模型
| 工程师:利用模型子系统引用来构建一个上层模型并命名为 HeatSinkLinearize 准备用于线性化,模型通过子系统引用 HeatSinkSubsys 模型,并以空气质量流率作为调度变量,在 0.005 到 0.025 范围进行七个工况选取,以热源和环境温度为控制量,调度变量和控制量都是用 constant 构建。以子系统输出为输出,设置好输入和输出,准备好对这个全阶模型进行线性化。由于全阶模型仿真较慢,只查看模型是否正确,不用运行仿真
| AI:


线性化脚本
已创建线性化设置脚本 src/setup_linearization_HeatSink.m,其中包含:
operspec 操作点定义
linio 线性化 I/O 分析点配置
完整的 findop + linearize 循环(已注释,取消注释即可运行)
| 工程师:通过对 HeatSinkLinearize 模型进行批量线性化,获取| CPU + 散热器| 模块的稀疏线性化模型数组 spsys。线性化在 50°C(323.15 K,CPU 满负荷运行时的温度)的均匀温度场下执行。环境温度设置为 Tinf = 294K。由于模型对热源 Q 本身是线性的,因此线性化时将产生的热量设置为零。
| AI:

批量线性化完成
全阶模型(19106 DOF)的批量线性化已成功执行,耗时 63.5 秒,所有结果已保存到 simResults.mat。
此部分总结与 AI 能力分析:
AI 自动创建线性化输入输出
AI 运行了线性化的命令得到稀疏状态空间模型 sparss 数组
工程师做了一些修改,AI 开始创建的是 cell array 的 operating point,然后使用 for 循环。其实可以创建 struct array, 直接用于后续批量线性化。linearize 函数有多种重载,AI 未必能选择效率最高的。此处工程师手动选择的是 linsys = linearize(model, io, param) 这种重载方式,可以对 param 定义的所有工作点进行批量向量化,效率比 cell array 的方式更高,后续可视化也能匹配更高效的支持向量输入的可视化函数
| 工程师:利用 frd 函数构建 spsys 模型数组在 w=[-6,1]rad/s 上的频率响应对象并输入到 bode 函数绘制 bode 图。输入是热源 Q 和环境温度。通过频率响应的结果,解释空气质量流量(风扇转速)如何影响散热特性的增益和时间常数。
| AI:
AI 在此处使用了底层函数重复计算,导致耗时较长。工程师随后改为使用内置函数完成该任务。

| 工程师:当前的线性化稀疏模型数组 spsys 是全阶模型,仿真较慢,为了加速仿真,有什么降阶建议吗?
| AI:
方案对比

| 工程师:使用稀疏平衡截断法对中间质量流量工况的模型进行降阶,并绘制 Hankel 奇异值及相关误差界的条形图
| AI:
AI 最初使用了底层脚本实现该步骤。工程师随后改为使用内置函数 reducespec 快速完成降阶,并提示AI后续尽量优先使用内置函数。AI 理解后返回了相应信息。


| 工程师:对于中间质量流量模型,选择阶数为 5。利用 sigma 绘图比较全阶模型和降阶模型的响应。然后提取投影矩阵应用于 spsys 其他工况的模型的降阶,以获得每个空气质量流量下的降阶模型,并组成状态空间数组,其中使用质量流量输入作为 ss 数组的 samplingGrid。这样做是后面用于 LPV 对象构建。
| AI:
脚本已更新。新增的核心代码段如下:
降阶与提取投影:
reducespec + getrom(R, 5) → 中间工况 5 阶 ROM
ssredreal(sys_ss, 5) → 返回投影矩阵 TL (5×30810) 和 TR (30810×5)
sigma 对比验证:
单个工况:sigma(全阶, ROM) 叠加对比
全工况:2×4 子图验证投影一致性

各工况精度
由于统一投影(从中间工况提取 TL, TR)降阶,各工况的 A 矩阵差异仅源于 h_forced(mdot) 的变化,投影后的状态基底一致,因此精度在 7 个工况间基本持平,DC 增益误差均可保持在 < 0.1%。
AI 输出在 sigma 图绘制上还是采用底层逻辑,此处工程师手动进行了修改。另外对 getrom 函数使用上参数配置有点瑕疵,工程师手动进行了修改。
| 工程师:到目前为止,已获得在七个空气质量流量值下的五阶降阶模型 ssarray。首先从状态空间数组中消除 E 矩阵,使用ss函数将状态空间转为显式。同时消除环境温度输入,将其转换为导数偏移量并附加到状态空间模型,使得模型中只包含热源作为输入。现在使用 LPV 系统 (Linear Parameter Varying) 模块,根据质量流量对动态特性进行插值,以近似 Simulink中 |CPU + 散热器| 模块的非线性行为,构建 Simulink 模型 HeatSinkLPV,Linear Parameter Varying 模块工作点偏移量配置为使用状态空间数组偏移量。并仿真如下场景,先从5s开始注入恒定热源 Q = 20,将风扇加速到全速,然后再减速,对应的时间与质量流量 [5 25 105 125] -> [6e-3 2e-2 2e-2 6e-3]。从稳态初始化仿真,温度均匀且等于环境温度 ,并使用 findop 函数为零热源和环境温度计算降阶模型的匹配初始条件。全阶模型的结果保留在文件 simResults.mat 中,比较低阶 LPV 模型和全阶模型的误差。
| AI:

1. 数据准备
ssarray [1×1×7] 已是显式 5 阶 SS(无 E 矩阵),仅含 Q 输入
设 yOffset = 294K(环境温度),使 LPV 输出为实际温度
findop 计算得到 Q=0、Tinf=294K 时稳态初始条件 x0 = zeros(5,1)
2. Simulink 模型结构
HeatSinkLPV.slx
├── Q (Constant, Value=20) ── LPV_SS (LPV System) ── T_socket (Outport)
├── mdot (From Workspace) ── (调度变量)
└── 配置: ssarray, yOffset=294, 初始状态=0
3. 仿真场景

AI 在处理初始工作点计算和偏移量配置时出现了一些逻辑问题。此外,在内置 block 选项与需求描述的对应关系上,AI 也出现了一些错误。例如,在 LPV 模块的偏置处理上,尽管需求描述已经较为清楚,AI 仍没有正确设置相关参数,因此该处由工程师手动修改。
此部分总结与 AI 能力分析:
AI 可以根据提示进行模型降阶计算并调用内置函数(如果没有提示,可能会重复造轮子)
在降阶的 LPV 模型构建过程中,总体的思路是需要工程师引导的,包括选择工作点,不同层级模型的线性化,对线性化的模型进行基于投影的平衡降阶(POD),最终的 LPV 模块的配置。
任务三:
构建用于PI设计的额外包含风扇模型和温度传感器模型的线性开环系统
| 工程师:对于控制器而言,被控对象模型包括风扇、|CPU + 散热器| 和传感器。该被控对象模型是非线性的。前面已经得到 |CPU + 散热器| 的 LPV 模型 HeatSinkLPV;现在将风扇模型也纳入系统,使系统输入从空气质量流量变为电压(0~12V),输出从整个温度场变为传感器输出。因此,PI 控制器的开环被控对象需要同时包含风扇模型和温度传感器模型,输入为热量 Q 和电压 V,输出为温度传感器信号 T。请将已构建的 HeatSinkLPV、风扇模型 FanSubsys 以及传感器模型 SensorSubsys 集成为开环系统模型 PIDControlOL,其中风扇模型和传感器模型通过子系统引用 FanSubsys 和 SensorSubsys 实现。后续将使用该开环模型进行线性化。
| AI:


PIDControlOL.slx — 新建开环系统模型
将被控对象的三个组成部分集成为一个开环模型:

后续可以基于 PIDControlOL 进行线性化,得到从 [Q; V] 到 Ts 的线性化模型,用于 PI 控制器设计。
AI 最初通过直接复制模型的方式实现,导致部分模型配置参数没有正确对应。经过再次提示后,AI 成功改为使用子系统引用完成模型构建。
| 工程师:为了设计 PI 控制器,需要得到 PIDControlOL 在不同工况下的线性模型。工况通过5个不同工作电压 (2-10V) 进行选取。由于系统主要会稳定在目标控制温度 50°C(323.15 K)附近,因此工作温度选择为 323.15 K。对于每个电压 V,使用 findop 计算使模型达到 323K 平衡温度所需的热量 Q。随后利用每个电压水平下得到的平衡条件 op,围绕每个条件对 PIDControlOL 模型进行线性化,以获得局部线性被控对象动态特性。
| AI:



物理解释
Q 随 V 增加而增加:电压越高,风扇转速越快,需要更多CPU热量才能使温度达到50°C平衡点
DC(Q→Ts) 随 V 增加而减小:高风速下散热效果更好,温度对热量变化不那么敏感
DC(V→Ts) 为负:增加电压(增大风速)会降低温度,符合物理直觉
加入风扇与传感器动态后,得到的5个7阶局部线性模型均稳定(极点全部为负实数)
findop 和 linearize 函数支持批量线性化,bode 函数支持批量可视化。工程师对相关实现进行了手动更新,以替代冗余代码。
任务四:
设计 PI 控制器并验证
| 工程师:用 pidtune 在线性系统数组第二个线性被控对象上调优控制器,目标响应时间约为5秒。由于主要目标是对抗 Q 的影响,请使用 pidtuneOptions 对象将重点放在扰动抑制上。最后,在 pidtune 的被控对象输入前使用负号,以考虑控制架构中的正反馈使用。使用这个控制器闭环仿真所有线性化的模型对热量 Q 阶跃扰动的线性响应。
| AI:


闭环扰动抑制性能 (Q 阶跃响应)

这些响应满足设计需求,AI 模型原始调优使用的 pidtune 函数所设置的参数单位理解不正确,工程师手动更新。[C_pi, info_pi] = pidtune(P_tune, 'pi', wc_target, opts) 中的wc_target 单位是 rad/s。
| 工程师:现在基于 PIDControlOL 模型构建包含PI控制器的闭环模型 PIDControlCL,并将当前 PI 参数设置到 PIDControlCL 模型中的PI模块,用于非线性验证。对持续 200 秒的 30 单位热量阶跃进行仿真,仿真总时长为 300 秒。
| AI:


物理分析
PI 控制器在有抗积分饱和能力下工作正常,30W 热量脉冲后能恢复到设定点
60W 总热量时风扇饱和(12V),温度上升到 63.8°C — 这是散热系统物理极限
恢复阶段的稳态误差 < 0.2K,说明积分器有效
PIDControlCL 模型构建 — 创建的闭环 Simulink 模型包含:
PI 控制器(参数从 C_pi 动态获取,Kp=2.5852, Ki=0.2561)
输出限幅 [0, 12]V + 抗积分饱和
信号记录(PI 输出 V)

总结:
通过本次围绕 CPU 散热系统开展的交互式开发可以看到,Agentic AI 在有限元模型理解、多工况 Simulink 模型线性化、基于投影的平衡截断降阶、LPV 模型构建、调用 Control System Toolbox 中的 pidtune 进行 PI 控制器调参,以及顶层闭环 Simulink 模型构建、集成和仿真等环节中,均表现出一定的辅助能力。它能够为工程师提供 MATLAB/Simulink 高级算法和工具链的使用提示,在一定程度上充当交互式帮助文档和入门引导。
同时,本案例也表明,在复杂工程流程中,AI 仍然需要工程师的系统判断。对于内置函数的高效使用,例如以 operating point 数组方式向量化传递参数给 findop ;对于可视化函数的合理选择,例如直接使用 bode 处理线性系统数组;以及对于 Simulink 模块参数、偏置设置、初始条件和算法路线的把控,仍然需要工程师进行判断、引导和校正。
总体而言,将交互式 AI 辅助工程方法与 MATLAB/Simulink Agentic Toolkit 结合,可以进一步放大 MBD 工具链在建模、仿真、控制设计和验证中的专业能力。Simulink + Agentic AI 将 MBD 的工程严谨性,与 AI 的敏捷性和知识广度结合起来;而工程师的关键作用,也从具体操作进一步提升为问题定义、算法判断和系统级设计决策。
关于作者
刘海伟,MathWorks 中国
MathWorks 中国资深应用工程师,专注科学计算,数据挖掘与人工智能方向,曾就职于斯伦贝谢(北京)BGC 和金风科技,负责数值优化、预测性维护和控制优化方向的工作,在 MATLAB 数据科学、人工智能领域有多年工作经验。毕业于北京航空航天大学和法国马赛中央理工学院,获得信息与通信工程硕士和法国工程师学位。
全部0条评论
快来发表一下你的评论吧 !