这个例子展示了如何在Simulink®中控制具有输入饱和的双积分器装置。金宝app
将工厂模型定义为双积分器(输入是被操纵的变量,输出是被测量的输出)。
Plant = tf(1,[1 0 0]);
创建采样周期为0.1秒的控制器对象,预测视界为10步,控制视界为3步。
Mpcobj = mpc(plant, 0.1, 10,3);
- - - >“权重。“mpc”对象的“ManipulatedVariables”属性为空。假设默认值为0.00000。- - - >“权重。“mpc”对象的“ManipulatedVariablesRate”属性为空。假设默认值为0.10000。- - - >“权重。“mpc”对象的OutputVariables属性为空。假设默认值为100000。
因为您没有指定要由控制器最小化的二次成本函数的权重,所以它们的值被假定为默认值(被操纵变量为0,被操纵变量为0.1,输出变量为1)。此外,在这一点上,MPC问题仍然是不受约束的,因为您还没有指定任何约束。
指定执行器饱和限制作为被操纵变量的约束。
mpcobj。MV = struct(“最小值”, 1“马克斯”1);
金宝appSimulink是一个用于多域系统仿真的图形框图环境。您可以连接表示动态系统的块(在本例中是工厂和MPC控制器)并模拟闭环。
%检查是否安装了Simul金宝appink,否则显示一条消息并返回如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (需金宝app要Simulink来运行这个例子)返回结束
打开已有的Simulink模型进行闭环仿真。金宝app工厂模型由两个串联的积分器块实现。采用变步长ode45积分算法计算连续时间环路行为。MPC控制器块被配置为使用工作区mpcobj
对象作为控制器。被操纵的变量以及输出和参考信号。输出信号也由To-Workspace块保存。
mdl =“mpc_doubleint”;open_system (mdl)
在Simulink中模拟线性工厂模型的闭环控制。金宝app请注意,在模拟开始之前,工厂模型在mpcobj
转换为离散状态空间模型。默认情况下,控制器使用卡尔曼滤波器设计器作为观测器,假设每个装置输出都有白噪声干扰。
sim (mdl)你也可以通过按“运行”按钮来模拟。
——>转换“模型”。将“mpc”对象的“属性”植入状态空间。——>将模型转换为离散时间。假设没有干扰添加到测量输出通道#1。——>”模式。“mpc”对象的“噪声”属性为空。假设每个测量输出通道存在白噪声。
闭环响应显示出良好的设定值跟踪性能,因为工厂输出在大约2.5秒后跟踪其参考。如预期的那样,被操纵的变量保持在预定义的约束中。
关闭打开的Simulink模型金宝app,不保存任何更改。
bdclose (mdl)