【控制理论/模型预测控制】参数受限MPC与Matlab/Simulink/C++实现
写在前面预测时域长度Np应包含对象的主要动态部分,越小越快速,不稳定,越大,实时性降低,响应越慢。控制时域长度Nc越小越慢,鲁棒性越好,越大机动性越强,稳定性降低。控制量变化权重rw越小闭环响应越快,越大说明控制量变化在优化函数占权重越大。目录1.建模2.离散化3.建立增广矩阵4.预测5.优化5.1 定义二次型优化函数5.2 变量含约束5.3 优化求解6.滚动7.Matlab仿真7.1仿真结果7.
写在前面
预测时域长度Np应包含对象的主要动态部分,越小越快速,不稳定,越大,实时性降低,响应越慢。
控制时域长度Nc越小越慢,鲁棒性越好,越大机动性越强,稳定性降低。
控制量变化权重rw越小闭环响应越快,越大说明控制量变化在优化函数占权重越大。
目录
1.建模
控制对象为二阶惯性时滞系统,传递函数为

2.离散化
采样时间间隔Δt=0.06,使用近似离散化得离散化状态空间模型


3.建立增广矩阵

4.预测
预测时域长度为Np,控制时域长度为Nc


5.优化
5.1 定义二次型优化函数
定义设定值和预测输出之间的误差函数J(cost function)为

5.2 变量含约束


5.3 优化求解
求解方法是使用Hildreth’s QP程序(约束梯度最小化算法,OPhild.m)。

6.滚动


7.Matlab仿真
7.1仿真结果
采样时间Δt=0.06s,预测时域长度Np=100,控制时域长度为Nc=7,控制量变化权重rw=0.001,参考信号r=0.1。

7.1.1 仅改变Np
Np=50,越小越快速,不稳定

7.1.2 仅改变rw
rw=0.1,控制量变化减小了,但是稳定性降低了

7.1.3 仅改变Nc
Nc=50,越大机动性越强,稳定性降低
8.Simulink仿真
8.1 仿真模型.slx文件

8.2 仿真结果


9.附不含约束和含约束的结果
控制变量不含约束时

控制变量含约束时

还有一个Np=70,Nc=2的结果

10.C++实现
函数都写完了,和simulink联合通信,bug出现在Xf的最后一行并不是y...这个bug暂时不知道咋调,明天再说吧。
锋哥优秀嗷,不加状态观测器直接给Xf最后一行赋y就行了嗷,牛的一腿!

更多推荐


所有评论(0)