为操纵变量设置目标
当操纵变量多于输出时,假设静态增益矩阵是满秩的,控制器可以使用许多不同的操纵变量值的可能组合达到输出空间中的任何给定稳态点。
在这种情况下,出于经济或操作原因,您可以选择为某些操作变量设置目标值和一些相应的非零成本函数权重(直到操作变量相对于输出数量的多余数量)。其余的操作变量可以获得跟踪稳态输出空间中的任何点所需的值。
这个例子展示了如何为一个有两个输入和一个输出的工厂设计一个模型预测控制器,对两个被操纵变量中的一个具有目标设定值。
定义植物模型
线性工厂模型有两个输入和一个输出。将植物定义为传递函数,将其转换为状态空间,指定初始状态,并提取植物矩阵以供以后在Simulink模型中使用。金宝app
Plant = ss(tf({[3 1],[2 1]},{[1 2*.]3 1],[1 2*。5 1]}));X0 = [0 0 0 0]';A =植物。A;B = plant.B;C = plant.C;D =植物。D;
MPC控制器设计
创建一个具有采样时间的MPC控制器0.4
S,预测和控制的视界20.
而且5
步骤,分别。
Mpcobj = mpc(plant,0.4,20,5);
- - - >“权重。属性为空。假设默认值为0.00000。- - - >“权重。属性为空。假设默认为0.10000。- - - >“权重。OutputVariables属性为空。假设默认值为1.00000。
为操作变量和输出指定权重。
mpcobj.weights. controlled = [0.3 0];%重量差MV#1 -目标#1Mpcobj.weights.manipulatedrate = [0 0];Mpcobj.weights.output = 1;
为被操纵的变量率定义约束。
mpcobj。MV = struct(“杀鼠灵”{-0.5, -0.5},“RateMax”{0.5, 0.5});
为一个被操纵的变量设定目标
指定目标设定点U = 2
对于第一个被操纵的变量。
mpcobj.MV (1) .Target = 2;
使用Simulink进行模拟金宝app
定义模型名称并打开Simulink模型。金宝app注意输出参考是一个方波。然后模拟模型,使用sim卡
命令。
mdl =“mpc_utarget”;open_system (mdl) sim (mdl);
——>转换模型到离散时间。假设添加到测量输出通道#1的输出扰动是集成白噪声。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。
第一个图显示,第一个操纵变量在大约6秒后达到其设定值,而植物输出达到其参考值。
bdclose (mdl)%关闭Simulink模金宝app型