在多个操作点调度控制器

如果你的工厂是非线性的,控制器设计在特定目标区域进行操作可以在其他地区表现不佳。补偿的一种常见方式是创建多个控制器,每个控制器设计用于的操作条件的特定组合。然后,您可以在实时条件更改控制器之间进行切换。欲了解更多信息,请参阅获得预定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;%壁挂位置是2=-10;

为质量不接触时创建状态空间模型;即当质量M1型被自由移动。

A1=[0 1;-k1/M1-b1/M1];b1=[0;-1/M1 k1*yeq1/M1];C1=[1 0];D1=[0];sys1=ss(A1,b1,C1,D1);sys1=setmpcsignals(sys1,'中压'1,'总经理',2);

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

A2=[0 1;-(k1+k2)/(M1+M2)-(b1+b2)/(M1+M2)];b2=[0;-1/(M1+M2)(k1*yeq1+k2*yeq2)/(M1+M2)];C2=[1 0];D2=[0];sys2=ss(A2、b2、C2、D2);sys2=setmpcsignals(sys2,'中压'1,'总经理',2);

对于这两种型号:

  • 各国所处的位置和速度M1型.

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

  • 输出是M1型.

设计MPC控制器

设计每个工厂的车型之一MPC控制器。两个控制器是除了它们的内部预测模型是相同的。

定义相同的采样时间,Ts公司,预测范围,第页,以及控制范围,,两个控制器。

TS = 0.2;P = 20;M = 1;

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

MPC1=mpc(sys1,Ts,p,m);MPC2=mpc(sys2,Ts,p,m);
-->“那”权重.操纵变量“mpc”对象的属性为空。假设默认值为0.00000。-->“那”权重。操纵变量日期“mpc”对象的属性为空。假设默认值为0.10000。-->“那”权重。输出变量“mpc”对象的属性为空。假设默认值为1.00000。-->“那”权重.操纵变量“mpc”对象的属性为空。假设默认值为0.00000。-->“那”权重。操纵变量日期“mpc”对象的属性为空。假设默认值为0.10000。-->“那”权重。输出变量“mpc”对象的属性为空。假设默认值为1.00000。

限定用于操作变量的约束。由于所施加的力不能改变方向,设置下限为零。此外,设置变化的输入力的最大速率。这些约束是两个控制器是相同的。

MPC1.MV =结构('最小',0,'最大',30岁,'RateMin',-10,'RateMax',10);MPC2.MV = MPC1.MV;

模拟增益调度控制器

使用MPC控制器封锁。

打开Simulin金宝appk模型。

MDL ='mpc_switching';开放式系统(mdl)

在该模型中,地下M1子系统模拟块的运动M1型,无论是自由移动还是连接到平方米.大众M2子系统模拟质量M2的当它被自由移动的运动。模式选择和速度复位子系统坐标群众的碰撞和分离。

该模型包含开关逻辑,用于检测M1型平方米是相同的。将得到的开关信号连接到所述转换多个MPC控制器块的输入端口,并控制哪个MPC控制器处于活动状态。

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

y1initial=0;y2initial=10;

要指定增益调度控制器,请双击“多个MPC控制器”块。在“块参数”对话框中,将控制器指定为控制器名称的单元数组。通过将每个控制器的状态指定为{ '[],'[]“}.

点击好 啊.

运行模拟。

sim卡(mdl)
-->将模型转换为离散时间。-->假设被测输出信道#1的输出干扰为积分白噪声。-->“那”模型噪声“mpc”对象的属性为空。假设每个测量输出通道上有白噪声。-->将模型转换为离散时间。-->假设被测输出信道#1的输出干扰为积分白噪声。-->“那”模型噪声“mpc”对象的属性为空。假设每个测量输出通道上有白噪声。-->将模型转换为离散时间。-->假设被测输出信道#1的输出干扰为积分白噪声。-->“那”模型噪声“mpc”对象的属性为空。假设每个测量输出通道上有白噪声。

要查看仿真结果,请打开信号范围。

open_system([MDL“/信号”])

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

碰撞移动M1型远离它的设定值和MPC2很快返回组合群众的参考点。

在随后的基准信号转变,当群众分离和碰撞多元MPC控制器块之间切换MPC1MPC2因此。其结果是,组合的群众中迅速沉降到参考点。

与单MPC控制器的比较

为了证明使用两个MPC控制器此应用程序的好处,模拟仅使用系统MPC2.

改变MPC1匹配MPC2.

MPC1保存=MPC1;MPC1=MPC2;

运行模拟。

sim卡(mdl)

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

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

MPC1回到原来的配置。

MPC1=MPC1保存;

建立明确的MPC控制器

为了减少在线计算量,你可以为每个操作条件明确MPC控制器,并使用实现增益定明确的MPC控制多个显式MPC控制器封锁。有关明确的MPC控制器的更多信息,请参阅显式MPC.

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

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

范围= generateExplicitRange(MPC1);

指定控制器状态范围。都MPC1MPC2包含以下状态:

  • 质量的位置和速度M1型.

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

如果可能的话,利用你对工厂的知识来定义状态范围。例如,第一个状态对应于M1型,范围在-10到10之间。

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

定义基于估计状态的范围明确MPC控制器状态范围。

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

限定用于参考信号的范围内。选择比所述更小的参照范围M1型位置范围。

范围.Reference.Min=-8个;range.Reference.Max范围.Reference.Max=8个;

使用所定义的MV约束指定控制变量范围。

range.manipledvariable.Min范围.manipledvariable.Min=0;range.manipledvariable.Max范围.manipledvariable.Max=30个;

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

量程测量干扰最小值=0.9;量程测量干扰最大值=1.1分;

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

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

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

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

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

验证明确MPC控制器

在实现增益调度显式MPC之前,验证每个显式MPC控制器的性能是一个很好的实践。例如,要比较MPC1expMPC1使用模拟每个控制器的闭环响应SIM卡.

r=[零(30,1);5*1(160,1);-5*1(160,1)];[Yimp,Timp,Uimp]=sim(mpc1350,r,1);[是xp,Texp,Uexp]=sim(expmpc1350,r,1);
-->将模型转换为离散时间。-->假设被测输出信道#1的输出干扰为积分白噪声。-->“那”模型噪声“mpc”对象的属性为空。假设每个测量输出通道上有白噪声。

比较两个控制器的工厂输出和操作变量序列。

图副区(2,1,1)图(TIMP,Yimp,“b-”,Texp,是xp,'R--')网格xlabel公司('时间')伊拉贝尔('输出')标题('显式MPC验证')传说('隐式MPC','显式MPC')子地块(2,1,2)图(Timp,Uimp,“b-”,文本,Uexp,'R--')网格伊拉贝尔('中压')xlabel公司('时间')

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

如果隐性和显性控制器的响应不匹配,调整明确MPC范围,并创建一个新的明确的MPC控制器。

模拟增益调度显式MPC

为了实现增益定明确的MPC控制,更换多个MPC控制器与多个明确MPC控制器块阻塞。

扩展模型='mpc_switching_explicit';open_system(expModel)

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

点击好 啊.

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

运行模拟。

SIM(expModel)

要查看仿真结果,请打开信号范围。

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

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

bdclose('所有')

另见

|

相关主题