切换控制器在线和离线无颠簸转移
此示例显示如何在将模型预测控制器从手动切换到自动操作时获取无闷丧油传输,反之亦然。
特别是,它展示了如何使用EXT.MV输入信号的MPC块,以保持内部MPC状态的最新时,操作员或另一个控制器在控制中。
定义植物模型
线性开环动态对象模型如下:
Num = [1 1];Den = [1 3 2 0.5];sys =特遣部队(num穴);
MPC控制器设计
使用工厂模型,采样时间和视野创建MPC控制器。
t = 0.5;%采样时间p = 15;%预测地平线m = 2;%控制地平线mpcobj = mpc (sys, Ts, p、m);
- - - >“权重。“mpc”对象的“操纵变量”属性为空。假设默认的0.00000。- - - >“权重。“mpc”对象的“操纵变量率”属性为空。假设默认的0.10000。- - - >“权重。“mpc”对象的OutputVariables属性为空。假设默认的1.00000。
定义操作变量上的约束。
mpcobj。MV =结构(“最小值”, 1“马克斯”1);
更改输出权重。
mpcobj.Weights.Output = 0.01;
为了实现无力转移,植物和控制器的初始状态必须是相同的,这是工厂和控制器在此示例中的情况。但是,如果系统的初始条件不匹配,则可以将控制器的初始状态设置为工厂初始状态。为此,提取mpcstate
对象,并设置植物的初始状态。
stateobj = mpcstate (MPC1);stateobj。工厂= x0;
在哪里x0
是初始植物状态的向量。然后,在MPC控制器块对话框中,设置初始控制器状态来stateobj
.
使用仿真软件模拟®金宝app
要运行此示例,需要Simulink®。金宝app
如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (“金宝app运行这个例子需要Simulink(R)。”)返回结束
在Simulink中对线性被控对象模型进行闭环控制仿真。金宝app在这个模型中,在MPC控制器块对话框中,MPC控制器属性指定为mpcobj
.
mdl =“mpc_bumpless”;open_system (mdl) sim (mdl)
- - - >转换”模型。“mpc”对象的“植物”属性到状态空间。——>将模型转换为离散时间。——>假设添加到测量输出通道1的输出干扰为综合白噪声。——>”模式。不ise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
不使用外部MV信号进行模拟
没有使用外部MV信号,MPC控制器不再能够提供无颠簸的传输,因为内部控制器状态没有被正确估计。
delete_line (mdl“开关/ 1”,“单位延迟/ 1”);delete_line (mdl“单位延迟/ 1”,“MPC控制器/ 3”);delete_block ([mdl/单位的延迟]);delete_line (mdl“切换/ 1”,“MPC控制器/ 4”);set_param ([mdl“/ MPC控制器”),“mv_inport”,“关闭”);set_param ([mdl“/ MPC控制器”),“switch_inport”,“关闭”);set_param ([mdl' / Yplots '),“Ymin”,“1 ~ -0.1”(mdl) set_param (' / Yplots '),“Ymax”,' 3 ~ 1.1 '(mdl) set_param (' / MVplots '),“Ymin”,“-1.1 ~ 5”(mdl) set_param (' / MVplots '),“Ymax”,“1.1 ~ 10”) sim (mdl)
现在从手动到自动控制的过渡就不那么顺利了。注意时间= 180和200之间的大“凸点”。
bdclose (mdl)
这个话题有用吗?