这个例子演示了如何在模型预测控制器从手动切换到自动操作或反之亦然的情况下获得无凸模切换。
在启动制造过程中,在切换到自动控制之前,操作员手动调整关键执行机构,直到工厂接近所需的操作点。如果操作不正确,转移可能会导致肿块;这是一个大的致动器动作。
在本例中,您将模拟一个Simulink®模型,该模型包含一个单输金宝app入单输出LTI工厂和一个MPC控制器块。
模型预测控制器监视所有已知的植物信号,即使它不在执行器的控制范围内。这种监视改进了它的状态估计,并允许将故障转移到自动操作。
特别是,它展示了如何ext.mv
当操作员或另一个控制器处于控制中时,MPC块的输入信号可用于使内部MPC状态保持最新。
定义线性开环动态工厂模型。
num = [1 1];den = [1 3 2 0.5];sys =特遣部队(num穴);
从阶跃响应可以看出,该装置是一个稳定的单输入单输出系统。
步骤(系统)
创建MPC控制器,指定:
工厂模式
样品时间Ts
预测地平线p
控制层米
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;
打开Simulin金宝appk模型。
mdl =“mpc_bumpless”;open_system (mdl)
在这个模型中,MPC控制器块已经配置为使用以下控制器参数设置进行无保险杠传输。
的外部操纵变量参数被选中。此参数允许通过添加ext.mv
输入到block。
的使用外部信号来启用或禁用优化被选中。此参数添加开关
输入用于关闭控制器的优化计算。
为了实现无保险杠传输,您的工厂和控制器的初始状态必须相同,本例中的工厂和控制器就是这种情况。但是,如果系统的初始条件不匹配,则可以将控制器的初始状态设置为工厂初始状态。要这样做,请提取mpcstate
对象,并设置植物的初始状态。
stateobj = mpcstate (MPC1);stateobj。工厂= x0;
在哪里x0
是初始植物状态的向量。然后,设置初始控制器状态MPC控制器块的参数stateobj
。
为了模拟手动和自动操作之间的切换,切换块发送1或0来控制一个开关。当它发送0时,系统处于自动模式,MPC控制器块的输出到工厂。否则,系统处于手动模式,操作员指令块发出的信号进入工厂。
在这两种情况下,实际的植物输入反馈给控制器ext.mv
输入,除非植物输入在-1或1饱和。控制器不断监视工厂的输出并更新其对工厂状态的估计,即使在手动操作时也是如此。
该模型还显示了优化切换选项。当系统切换到手动操作时,非零信号进入开关
控制器块的输入。信号关闭了控制器的优化计算,减少了计算量。
在Simulink中模拟线性工厂模型的闭环控制。金宝app
sim (mdl)
- - >转换”模型。将“mpc”对象的“属性”设置为状态空间。——>转换模型离散时间。——>假设被测输出通道1的输出干扰为集成白噪声。- - >”模型。“mpc”对象的“噪音”属性为空。假设每个测量的输出通道上都有白噪声。
前90个时间单元的切换信号为0,使系统处于自动运行状态。在此期间,控制器平稳地将被控工厂的输出从其初始值0驱动到所需的参考值-0.5。
控制器状态估计器的默认初始条件为零,这在模拟开始时是适当的。因此,在启动时没有颠簸。一般情况下,系统在手动模式下运行足够长的时间,使控制器在切换到自动模式之前获得准确的状态估计。
在时间90时,开关信号变为1。此更改将系统切换为手动操作,并向工厂发送操作员命令。同时,进入控制器开关端口的非零信号关闭优化计算。当优化被关闭时,MPC控制器块将当前ext.mv信号传递给控制器输出。
在手动模式下,操作员命令将操作变量设置为-0.5,以10个时间单位,然后设置为0。当控制器失活时,工厂输出曲线显示开环响应在乘以90到180之间。
在时间180,系统切换回自动模式。结果,工厂的输出平稳地返回到参考值,控制器的输出也发生了类似的平稳调整。
为了在不需要操纵变量反馈的情况下检验控制器行为,对模型进行如下修改:
删除输入的信号ext.mv
和开关港口
MPC控制器块的。
删除单元延迟块和进入其端口的信号线。
对于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.1 ~ -0.1的(mdl) set_param (' / Yplots '),“Ymax”,“2 ~ 1.1”(mdl) set_param (' / MVplots '),“Ymin”,-0.6 ~ -0.5的(mdl) set_param (' / MVplots '),“Ymax”,1.1 ~ 1.1的)sim (mdl)
对于前90个时间单位,系统的行为与原始情况相同。
当系统在时间90切换到手动模式时,工厂行为与之前相同。但是,控制器试图将工厂保持在设定值。因此,它的输出增加,并最终饱和,正如控制器输出所示。由于控制器假定该输出将进入工厂,因此其状态估计将变得不准确。因此,当系统在180时刻切换回自动模式时,工厂的产量会有很大的提升。
这样的撞击会在工厂内部产生巨大的致动器运动。模型预测控制器通过平滑地从手动操作过渡到自动操作,消除了这些不必要的动作。
bdclose (mdl)