如何在Simulink中不使用MPC自定义模块实现参考跟踪MPC
无自定义MPC模块的Simulink参考跟踪MPC实现方案
你之前已经搭成的调节器MPC可以直接小幅修改适配跟踪场景,核心改动仅在代价函数的偏差项:把原来对标零点的偏差,替换为对标对应时刻参考值的偏差即可,整体逻辑和你现有MATLAB跟踪代码完全对齐。
最简实现步骤
- 第一步:直接复用你现有倒立摆MPC调节器的Simulink框架,只需要新增参考轨迹生成逻辑,替换代价函数计算的部分模块
- 第二步:搭建参考轨迹生成链路:用Simulink自带的
Step/Repeating Sequence模块输出目标参考值,加一个Buffer模块设置缓存长度等于预测时域Np,每次输出Np长度的未来时刻参考序列向量,采样时间和MPC控制周期保持一致 - 第三步:修改QP问题的f向量计算:你之前调节器场景的H矩阵可以完全不用改,只需要把你MATLAB跟踪代码里的f向量计算逻辑封装成Simulink的
MATLAB Function模块即可,输入为当前状态量、Buffer输出的参考序列,输出为QP求解需要的f向量 - 第四步:约束逻辑完全复用你之前调节器的设置即可,求解QP后取控制序列第一个时刻的控制量输出给被控对象
调试注意事项
- 先把参考值设为0,运行验证效果和你之前的调节器MPC完全一致,确认代码移植没有错误
- 跟踪阶跃参考时调整权重参数:状态权重Q越大跟踪响应越快、超调风险越高,控制权重R越大控制动作越平缓、跟踪响应速度越慢
- 若需要跟踪时变参考,只需要修改参考生成模块的输出即可,MPC侧不需要额外改动
内容的提问来源于stack exchange,提问作者Unanimously
相关产品推荐
相关产品推荐

