该实例说明了如何在将模型预测控制器从手动操作切换到自动操作或反之切换时实现无颠簸转换。
在生产过程启动期间,在切换到自动控制之前,操作人员手动调整关键执行机构,直到工厂接近所需的操作点。如果操作不当,转移可能会造成撞击;即动器运动较大。
在本例中,您模拟一个Simulink®模型,其中包含一个单输入单万博1manbetx输出LTI工厂和一个MPC控制器模块。
模型预测控制器监控所有已知的设备信号,即使当它不在执行器的控制下。这种监测改善了其状态估计,并允许无颠簸转移到自动操作。
特别地,它显示了分机
当操作员或另一个控制器处于控制状态时,MPC块的输入信号可用于保持内部MPC状态最新。
定义线性开环动态设备模型。
num=[1];den=[1 3 2 0.5];sys=tf(num,den);
从它的阶跃响应可以看出,该装置是一个稳定的单输入单输出系统。
步骤(系统)
创建MPC控制器,指定:
植物模型
样品时间Ts
预测地平线p
控制视界米
Ts=0.5;p=15;m=2;mpcobj=mpc(sys,Ts,p,m);
-->“mpc”对象的“Weights.manufacturedVariables”属性为空。假设默认值为0.00000。-->“mpc”对象的“Weights.manufacturedVariablesRate”属性为空。假设默认值为0.10000。-->“mpc”对象的“Weights.OutputVariables”属性为空。假设违约1.00000。
定义受操纵变量的约束。
mpcobj。MV =结构(“最小值”,-1,“马克斯”,1);
指定输出调整权重。
mpcobj.Weights.Output = 0.01;
打开Simulin万博1manbetxk模型。
mdl =“mpc_bumpless”;开放式系统(mdl)
在此型号中,已使用以下控制器参数设置将MPC控制器块配置为无颠簸传输。
的外部操纵变量参数。此参数通过添加分机
导入到块。
的使用外部信号启用或禁用优化被选中。该参数增加一个转换
用于关闭控制器优化计算的导入。
要实现无扰动传输,设备和控制器的初始状态必须相同,本例中的设备和控制器就是如此。但是,如果系统的初始条件不匹配,可以将控制器的初始状态设置为设备初始状态。为此,请提取mpcstate
对象,并设置植物的初始状态。
stateobj = mpcstate (MPC1);stateobj。工厂= x0;
在哪里x0
是初始设备状态的向量。然后,设置控制器初始状态将MPC控制器块的参数设置为stateobj
.
为了模拟手动和自动操作之间的切换,开关模块发送1或0来控制开关。当它发送0时,系统处于自动模式,MPC控制器模块的输出输出到工厂。否则,系统将处于手动模式,操作员指令块的信号将发送到工厂。
在这两种情况下,实际的设备输入反馈给控制器分机
输入,除非设备输入饱和为-1或1。控制器持续监控设备输出并更新其对设备状态的估计,即使在手动操作时也是如此。
该模型还给出了优化切换选项。当系统切换到手动操作时,一个非零信号进入转换
输入控制器块。该信号关闭控制器的优化计算,从而减少计算工作量。
在Simulink中模拟线性对象模型的闭环控制。万博1manbetx
sim (mdl)
-->将“mpc”对象的“Model.Plant”属性转换为状态空间。-->将模型转换为离散时间。-->假设添加到测量输出通道#1的输出干扰为集成白噪声。-->“mpc”对象的“Model.noise”属性为空。假设每个测量输出通道上都存在白噪声。
前90个时间单元,切换信号为0,使系统在自动模式下运行。在此期间,控制器平稳地驱动被控对象的输出从其初始值0,到所需的参考值-0.5。
控制器状态估计器默认具有零初始条件,这在仿真开始时是合适的。因此,在启动阶段没有任何阻碍。一般来说,在切换到自动模式之前,让系统在手动模式下运行足够长的时间,使控制器获得准确的状态估计。
在时间90,开关信号变为1。此更改将系统切换为手动操作,并将操作员命令发送至工厂。同时,进入控制器开关输入端口的非零信号关闭优化计算。当优化关闭时,MPC控制器块传递电流分机
信号到控制器输出。
一旦进入手动模式,操作员命令将10个时间单位的被操纵变量设置为-0.5,然后设置为0。植物输出图显示的开环响应之间的时间90和180,当控制器失活。
在时间180时,系统切换回自动模式。因此,设备输出平稳地返回到参考值,控制器输出中出现类似的平稳调整。
要在没有操纵变量反馈的情况下检查控制器行为,请修改模型,如下所示:
删除进入系统的信号分机
和开关港口
MPC控制器块的。
删除单元延迟块和进入其输入端口的信号线。
对于MPC Controller块,请清除外部操纵变量和使用外部信号启用或禁用优化参数。
要以编程方式执行这些步骤,请使用以下命令。
删除_行(mdl,“开关/1”,“单位延迟/ 1”)删除_行(mdl,“单位延迟/ 1”,“MPC控制器/ 3”);delete_block ([mdl/单位的延迟]); 删除_行(mdl,“切换/ 1”,“MPC控制器/ 4”); 设置参数([mdl“/MPC控制器”],“mv_inport”,“关”); 设置参数([mdl“/MPC控制器”],“开关输入端口”,“关”);
调整响应图的限制,并模拟模型。
set_param ([mdl' / Yplots '],“Ymin”,'-1.1~-0.1')设置参数([mdl' / Yplots '],“Ymax”,'2~1.1')设置参数([mdl“/MVplots”],“Ymin”,'-0.6~-0.5')设置参数([mdl“/MVplots”],“Ymax”,'1.1~1.1')sim卡(mdl)
对于前90个时间单位,系统的行为与原始情况相同。
当系统在90时刻切换到手动模式时,植物的行为与之前相同。然而,控制器试图将设备保持在设定值上。因此,它的输出会增加,最终达到饱和,如控制器输出所示。由于控制器假设这个输出将被发送到工厂,它的状态估计就会变得不准确。因此,当系统在180时刻切换回自动模式时,在植物输出中有一个很大的凸起。
这样的碰撞会在工厂内产生较大的执行机构运动。通过从手动操作平稳过渡到自动操作,模型预测控制器消除了这种不必要的运动。
bdclose(mdl)