调度控制器在多个操作点
如果你的工厂是非线性,设计一个控制器操作在一个特定的目标地区可能在其他地区表现不佳。补偿的一种常见方法是创建多个控制器,每个设计为一个特定的操作条件的组合。然后您可以切换控制器实时随着情况的变化。有关更多信息,请参见Gain-Scheduled 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 = [0 1;k1 / M1 b1 / M1);B1 = [0 0;1 / M1 k1 * yeq1 / M1);C1 = [1 0];D1 = [0 0];sys1 = ss (A1, B1, C1, D1);sys1 = setmpcsignals (sys1,“MV”,1“医学博士”2);
创建一个群众连接时的状态空间模型。
A2 = [0 1;——(k1 + k2) / (M1 + M2) - (b1和b2) / (M1 + M2)];B2 = [0 0;1 / (M1 + M2) (k1 * yeq1 + k2 * yeq2) / (M1 + M2)];C2 = [1 0];D2 = [0 0];sys2 = ss (A2, B2 C2, D2);sys2 = setmpcsignals (sys2,“MV”,1“医学博士”2);
两种模型的:
州的位置和速度
M1
。输入的作用力,即被控变量(MV),和一个弹簧常数标定信号,这是一个衡量干扰(MD)。
输出的位置
M1
。
MPC控制器设计
设计一个MPC控制器为每个工厂模型。控制器都是相同的除了他们的内部预测模型。
定义相同的样本,Ts
,预测地平线,p
和控制地平线,米
两个控制器。
t = 0.2;p = 20;m = 1;
为每个工厂创建默认的MPC控制器模型。
MPC1 = mpc (sys1 Ts p、m);MPC2 = mpc (sys2 Ts p、m);
- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性是空的。假设默认的1.00000。- - >“权重。ManipulatedVariables" property is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000.
为被控变量定义的约束。由于作用力不能改变方向,设置下限为零。同时,设定一个最大变化率为输入的力。这些限制都是相同的控制器。
MPC1。MV =结构(“最小值”0,“马克斯”30岁的“杀鼠灵”,-10,“RateMax”10);MPC2。MV = MPC1.MV;
模拟Gain-Scheduled控制器
模拟控制器使用的性能MPC控制器块。
打开仿真软件模型。金宝app
mdl =“mpc_switching”;open_system (mdl)
在模型中,质量M1子系统模拟的运动质量M1
当自由移动和连接平方米
。质量M2子系统模拟的运动质量M2时自由移动。模式选择和速度重置子系统协调群众的碰撞和分离。
模型包含切换逻辑检测时的位置M1
和平方米
都是一样的。由此产生的开关信号连接到开关
多个MPC控制器块的尺寸,控制MPC控制器是活跃。
指定初始位置为每个质量。
y1initial = 0;y2initial = 10;
指定gain-scheduled控制器,双击多个MPC控制器。在块参数对话框中,指定控制器单元阵列控制器的名称。每个控制器的初始状态设置为通过指定美国作为各自的标称值{”[],“[]”}
。
点击好吧。
运行仿真。
sim (mdl)
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。 -->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property is empty. Assuming white noise on each measured output.
查看仿真结果,开放的信号范围。
open_system ([mdl' /信号'])
最初,MPC1
移动质量M1
参考定位点。13秒,平方米
碰撞与M1
。开关信号的变化从1到2,开关控制MPC2
。
碰撞的移动M1
远离其选点和MPC2
迅速返回参考点的综合质量。
在随后的参考信号转换,当群众分离和碰撞之间的多块MPC控制器开关MPC1
和MPC2
相应的行动。结果,结合群众解决快速参考点。
与单一MPC控制器
演示使用两个MPC控制器的好处对于这个应用程序,模拟系统仅使用MPC2
。
改变MPC1
匹配MPC2
。
MPC1save = MPC1;MPC1 = MPC2;
运行仿真。
sim (mdl)
当群众不联系,MPC2
过度使用武力,因为它适用于预计更大的质量。这个积极的控制作用产生振荡行为。一旦群众连接,控制性能的提高,因为控制器是专为这个条件。
另外,改变MPC2
匹配MPC1
结果控制行动缓慢和长期解决群众连接的时候。
集MPC1
回到原来的配置。
MPC1 = MPC1save;
创建显式MPC控制器
减少在线计算的努力,您可以创建一个显式的MPC控制器对于每个操作条件,并实现gain-scheduled明确MPC控制使用多个明确MPC控制器块。明确的MPC控制器上的更多信息,见明确的政策委员会。
创建一个显式的MPC控制器,首先定义控制器的操作范围,输入信号和参考信号。
创建一个显式的MPC范围对象使用相应的传统控制器,MPC1
。
范围= generateExplicitRange (MPC1);
指定范围的控制器。这两个MPC1
和MPC2
包含状态:
物体的位置和速度
M1
。一个积分器从默认输出扰动模型。
如果可能,使用你的知识的定义范围。例如,第一个状态对应的位置M1
,范围在-10和10之间。
设置一个状态变量的范围可以是困难的,当国家不对应一个物理参数,如输出扰动模型状态。在这种情况下,使用模拟和典型的收集范围信息参考和干扰信号。对于这个系统,你可以激活可选est.state
外港的多个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.ManipulatedVariable。最小值= 0;range.ManipulatedVariable。Max = 30;
定义测量扰动信号的范围。由于测量扰动是常数,在常量值指定一个较小的范围,1
。
range.MeasuredDisturbance。最小值= 0.9;range.MeasuredDisturbance。Max = 1.1;
创建一个显式的MPC控制器相对应MPC1
使用指定的对象范围。
expMPC1 = generateExplicitMPC (MPC1、范围);
发现/未开拓的地区:4/0
创建一个显式的MPC控制器相对应MPC2
。自MPC1
和MPC2
操作在同一状态和输入范围和有相同的限制,您可以使用相同的对象范围。
expMPC2 = generateExplicitMPC (MPC2、范围);
发现/未开拓的地区:5/0
一般来说,不同控制器的显式的MPC范围可能不匹配。例如,控制器可能有不同的约束或国家范围。在这种情况下,创建一个单独的显式MPC范围为每个控制器对象。
验证显式MPC控制器
是一种很好的做法之前验证每一个显式的MPC控制器的性能实现gain-scheduled明确MPC。例如,比较的性能MPC1
和expMPC1
模拟闭环响应每个控制器使用sim卡
。
1 r =[0(30日);5 * 1 (160 1);5 * 1 (160 1)];[Yimp, Timp Uimp] = sim (MPC1,350 r 1);[Yexp Texp,单边]= sim (expMPC1,350 r 1);
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。
比较植物输出两个控制器和被控变量序列。
图次要情节(2,1,1)情节(Timp Yimp,“b -”Texp Yexp,“r——”网格)在包含(“时间(s)”)ylabel (“输出”)标题(“明确的MPC验证”)传说(“隐式政策委员会”,“明确的政策委员会”次要情节(2,1,2)情节(Timp Uimp,“b -”Texp单边递减,“r——”网格)在ylabel (“MV”)包含(“时间(s)”)
闭环反应和操纵变量的隐式和显式控制器匹配序列。类似地,您可以验证的性能expMPC2
对的MPC2
。
如果隐式和显式控制器的响应不匹配,调整明确MPC范围,并创建一个新的明确的MPC控制器。
模拟Gain-Scheduled明确货币政策委员会
实现gain-scheduled明确MPC控制,取代多个MPC控制器与多个块明确MPC控制器。
expModel =“mpc_switching_explicit”;open_system (expModel)
指定明确的MPC控制器,双击多个明确MPC控制器。在块参数对话框中,指定控制器单元阵列控制器的名称。每个控制器的初始状态设置为通过指定美国作为各自的标称值{”[],“[]”}
。
点击好吧。
如果你之前验证显式MPC控制器,然后替换配置多个明确MPC控制器块应该产生相同的结果作为多个MPC控制器。
运行仿真。
sim (expModel)
查看仿真结果,开放的信号范围。
open_system ([expModel' /信号'])
gain-scheduled明确MPC控制器提供相同的性能随着gain-scheduled隐MPC控制器。
bdclose (“所有”)