主要内容

在多个操作点调度控制器

如果您的设备是非线性的,设计用于在特定目标区域运行的控制器在其他区域的性能可能较差。一种常见的补偿方法是创建多个控制器,每个控制器针对特定的操作条件组合而设计。然后,随着条件的变化,您可以在控制器之间实时切换。有关详细信息,请参阅增益计划MPC.

以下示例显示了如何为此目的协调多个模型预测控制器。

植物模型

这个工厂有两块,M1平方米,连接到两个弹簧。弹簧常数为的弹簧k1拉质量M1右边是一个弹簧,弹簧常数为k2拉质量平方米操纵变量是一个拉力质量M1左侧,如下图中的红色箭头所示。

两个质量块自由移动,直到碰撞为止。碰撞是非弹性的,质量粘在一起,直到作用力的变化将它们分开。因此,系统有两种不同动力学的运行条件。

控制目标是使M1跟踪参考信号,如上图中的蓝色三角形所示。仅跟踪M1和一个接触式传感器可用于反馈。

定义模型参数。

M1=1;%群众M2=5;k1=1;%弹簧常数k2=0.1;b1=0.3;%摩擦系数b2=0.8;yeq1=10;%壁挂式位置yeq2=-10;

为体量不接触时(即体量不接触时)创建状态空间模型M1他行动自如。

A1=[01;-k1/M1-b1/M1];b1=[00;-1/M1 k1*yeq1/M1];C1=[10];D1=[00];sys1=ss(A1,b1,C1,D1);sys1=setmpcsignals(sys1,“MV”1.“MD”,2);

创建体量连接时的状态空间模型。

A2=[01;-(k1+k2)/(M1+M2)-(b1+b2)/(M1+M2)];B2=[0;-1/(M1+M2)(k1*yeq1+k2*yeq2)/(M1+M2)];C2=[10];D2=[0];sys2=ss(A2,B2,C2,D2);sys2=setmpcsignals(sys2,“MV”1.“MD”,2);

对于这两种型号,以下选项:

  • 状态是物体的位置和速度M1.

  • 输入为作用力,即操纵变量(MV)和弹簧常数校准信号,即测量的扰动(MD)。

  • 输出是输出的位置M1.

MPC控制器的设计

为每个对象模型设计一个MPC控制器。除内部预测模型外,两个控制器完全相同。

定义相同的采样时间,Ts,预测范围,P,和控制地平线,M,用于两个控制器。

Ts=0.2;p=20;m=1;

为每个工厂模型创建默认MPC控制器。

MPC1=mpc(sys1,Ts,p,m);MPC2=mpc(sys2,Ts,p,m);
-->“mpc”对象的“Weights.manufacturedVariables”属性为空。“mpc”对象的“Weights.manufacturedVariablesRate”属性为空。“mpc”对象的“Weights.OutputVariables”属性为空。“mpc”对象的“Weights.OutputVariables”属性为空。“mpc”对象的“Weights.manufacturedVariables”属性为空。假设默认值为1.00000。-->“mpc”对象为空。假设默认值为0.00000。-->“mpc”对象的“Weights.manufactedVariablesRate”属性为空。“mpc”对象的“Weights.OutputVariables”属性为空。假设默认值为1.00000。

为操纵变量定义约束。由于施加的力不能改变方向,因此将下限设置为零。另外,设置输入力的最大变化率。这两个控制器的约束相同。

MPC1.MV=struct(“敏”,0,“马克斯”,30,“RateMin”,-10,“RateMax”,10); MPC2.MV=MPC1.MV;

模拟增益调度控制器

使用MPC控制器

打开Simulin万博1manbetxk模型。

mdl=“mpc_切换”; 开放式系统(mdl)

在模型中,质量M1子系统模拟质量的运动M1,无论是在自由移动还是连接到平方米。质量M2子系统模拟质量M2自由移动时的运动。模式选择和速度重置子系统协调质量的碰撞和分离。

该模型包含开关逻辑,用于检测M1平方米都是一样的。产生的开关信号连接到转换输入多个MPC控制器块,并控制哪个MPC控制器处于活动状态。

指定每个体量的初始位置。

y1initial=0;y2initial=10;

要指定增益计划控制器,请双击“多个MPC控制器”块。在“块参数”对话框中,将控制器指定为控制器名称的单元格数组。通过将状态指定为,将每个控制器的初始状态设置为各自的标称值{'[],'[]'}.

点击好啊.

运行模拟。

sim卡(mdl)
-->将模型转换为离散时间。-->假设添加到测量输出通道#1的输出干扰为积分白噪声。-->“mpc”的“模型噪声”特性对象为空。假设每个测量输出通道上存在白噪声。-->将模型转换为离散时间。-->假设添加到测量输出通道#1的输出干扰为集成白噪声。-->“mpc”的“模型噪声”属性对象为空。“mpc”对象的“model.noise”属性为空。“mpc”对象的“model.noise”属性为空。“mpc”对象的“model.noise”属性为空。“mpc”对象的“model.noise”属性为空。“mpc”对象的“model.noise”属性为空。

要查看模拟结果,请打开信号范围。

开放式系统([mdl“/信号”])

开始MPC1移动质量M1至参考设定点。大约13秒时,平方米碰撞M1.开关信号从1变为2,从而将控制切换为MPC2.

碰撞移动M1远离其设定点和MPC2快速将组合质量返回到参考点。

在随后的参考信号转换过程中,当质量分离和碰撞时,多个MPC控制器块之间切换MPC1MPC2因此,组合质量迅速沉降到参考点。

与单个MPC控制器的比较

为了演示在该应用程序中使用两个MPC控制器的好处,只需使用MPC2.

改变MPC1相配MPC2.

MPC1save=MPC1;MPC1=MPC2;

运行模拟。

sim卡(mdl)

当群众没有联系时,,MPC2施加过大的力,因为它需要更大的质量。这种激进的控制行为会产生振荡行为。一旦质量连接起来,控制性能就会提高,因为控制器就是针对这种情况设计的。

或者,改变MPC2相配MPC1当质量块连接时,会导致控制动作迟缓,沉降时间长。

设置MPC1返回其原始配置。

MPC1=MPC1保存;

创建显式MPC控制器

为了减少在线计算工作量,您可以为每个操作条件创建显式MPC控制器,并使用多显式MPC控制器有关显式MPC控制器的更多信息,请参阅显式MPC.

要创建显式MPC控制器,首先定义控制器状态、输入信号和参考信号的工作范围。

使用相应的传统控制器创建显式MPC范围对象,MPC1.

范围=generateExplicitRange(MPC1);

指定控制器状态的范围。两者MPC1MPC2包含以下方面的国家:

  • 质量的位置和速度M1.

  • 来自默认输出干扰模型的积分器。

如果可能,利用您对工厂的了解来定义状态范围。例如,第一个状态对应于M1,其范围介于-10和10之间。

当状态与物理参数(例如输出扰动模型状态)不对应时,设置状态变量的范围可能会很困难。在这种情况下,使用典型参考和扰动信号的模拟收集范围信息。对于此系统,您可以激活可选的东部州立大学多个MPC控制器块的输出端口,并使用示波器查看估计状态。模拟控制器响应时,使用覆盖预期工作范围的参考信号。

根据估计的状态范围定义显式MPC控制器的状态范围。

range.State.Min(:)=[-10;-8;-3];range.State.Max(:)=[10;8;3];

定义参考信号的范围。选择一个小于当前值的参考范围M1位置范围。

range.Reference.Min=-8;range.Reference.Max=8;

使用定义的MV约束指定操纵变量范围。

range.manufacturedVariable.Min=0;range.manufacturedVariable.Max=30;

定义测量的干扰信号的范围。由于测量的干扰是恒定的,请在恒定值周围指定一个小范围,1..

range.measuredDistributance.Min=0.9;range.measuredDistributance.Max=1.1;

创建一个显式MPC控制器,该控制器对应于MPC1使用指定的范围对象。

expMPC1=生成explicitmpc(MPC1,范围);
发现/未勘探区域:4/0

创建一个显式MPC控制器,该控制器对应于MPC2. 自从MPC1MPC2在相同的状态和输入范围内操作,并且具有相同的约束,可以使用相同的范围对象。

expMPC2=生成explicitmpc(MPC2,范围);
发现/未勘探区域:5/0

通常,不同控制器的显式MPC范围可能不匹配。例如,控制器可能具有不同的约束或状态范围。在这种情况下,为每个控制器创建单独的显式MPC范围对象。

验证显式MPC控制器

在实现增益调度的显式MPC之前,最好先验证每个显式MPC控制器的性能MPC1expMPC1,使用模拟.

r=[0(30,1);[5*1(160,1);-5*1(160,1)];[Yimp,Timp,Uimp]=sim(mpc1350,r,1);[Yexp,Texp,Uexp]=sim(expmpc1350,r,1);
-->将模型转换为离散时间。-->假设添加到测量输出通道#1的输出干扰为集成白噪声。-->“mpc”对象的“model.noise”属性为空。假设每个测量输出通道上存在白噪声。

比较两个控制器的设备输出和操纵变量序列。

图子地块(2,1,1)图(Timp、Yimp、,“b-”,Texp,Yexp,“r——”)网格在…上xlabel(‘时间’)伊拉贝尔(“输出”)头衔(“显式MPC验证”)传奇(“隐式MPC”,“显式MPC”)子地块(2,1,2)地块(Timp、Uimp、,“b-”,Texp,Uexp,“r——”)网格在…上伊拉贝尔(“MV”)xlabel(‘时间’)

隐式和显式控制器的闭环响应和操纵变量序列匹配。类似地,您可以验证expMPC2反对MPC2.

如果隐式和显式控制器的响应不匹配,请调整显式MPC范围,并创建新的显式MPC控制器。

模拟增益调度显式MPC

要实现增益调度的显式MPC控制,请将多个MPC控制器块替换为多个显式MPC控制器块。

扩展模型=“mpc\u切换\u显式”;开放式系统(EXP模型)

要指定显式MPC控制器,请双击“多个显式MPC控制器”块。在“块参数”对话框中,将控制器指定为控制器名称的单元数组。通过将状态指定为,将每个控制器的初始状态设置为各自的标称值{'[],'[]'}.

点击好啊.

如果之前验证了显式MPC控制器,则替换和配置多个显式MPC控制器块应产生与多个MPC控制器块相同的结果。

运行模拟。

sim卡(expModel)

要查看模拟结果,请打开信号范围。

开放式系统([expModel“/信号”])

增益调度显式MPC控制器提供与增益调度隐式MPC控制器相同的性能。

bdclose(“全部”)

另见

|

相关话题