主要内容

Gain-Scheduled隐式和显式MPC控制质量弹簧系统

这个例子展示了如何使用一个多块MPC控制器和一个多块明确MPC控制器来实现增益调度MPC控制非线性植物。

系统描述

该系统是由两个群众M1平方米分别连接到两个弹簧k1和k2。假定完全非弹性碰撞。力F质量M1是拉,这是操纵变量。目标是使质量M1的立场y1跟踪给定参考r。

动力学是双重的:当群众分离,M1自由地移动。否则,M1平方米一起移动。我们假设只有M1位置和接触传感器可用于反馈。后者是用来触发开关MPC控制器。注意物体的位置和速度平方米不可控。

/ - - - - - - \ k1 | | F < M1 | - - - | - - - - - / \ / \ / \ - - - - - - - - - - - - -[| |墙| | | | - - - / | | | | k2 \ - / / - - - - - \ | |墙| |)——/ \ / \ / \ - - - - - - - - - - - - - - - - - - - | M2 | | | | | \——/ | | | | | | - - - - - yeq2 - - - - - - - - - - - - - - - - - - y1 - - - - - - y2 - - - - - - - - - - - - - - - - - yeq1 - - - - - > y轴

提出的模型是一个简化版的模型[1]。

模型参数

M1 = 1;%的质量M2 = 5;%的质量k1 = 1;%弹簧常数k2 = 0.1;%弹簧常数b1 = 0.3;%摩擦系数b2 = 0.8;%摩擦系数yeq1 = 10;%墙山的位置yeq2 = -10;%墙山的位置

工厂模式

植物状态方程模型对于这个例子有以下输入和输出信号:

  • 状态:位置和速度的质量M1

  • 被控变量:拉力F

  • 测量干扰:常数的价值1弹簧力的调整正确的价值

  • 测量输出:大规模的位置M1

定义的状态空间模型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,“医学博士”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,“医学博士”2);
- - >如果未指定的输入信号是操纵变量。

MPC控制器设计

指定控制器样品时间Ts,预测地平线p和控制的地平线

t = 0.2;p = 20;m = 1;

设计的第一个MPC控制器质量时的情况M1分离平方米

MPC1 = mpc (sys1 Ts p、m);MPC1.Weights。OV = 1;
- - >“权重。ManipulatedVariables”属性的“mpc”对象是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性的“mpc”对象是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性的“mpc”对象是空的。假设默认的1.00000。

指定被控变量约束。

MPC1。MV =结构(“最小值”0,“马克斯”30岁的“杀鼠灵”,-10,“RateMax”10);

第二个MPC控制器设计时的情况M1平方米在一起。

MPC2 = mpc (sys2 Ts p、m);MPC2.Weights。OV = 1;
- - >“权重。ManipulatedVariables”属性的“mpc”对象是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性的“mpc”对象是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性的“mpc”对象是空的。假设默认的1.00000。

指定被控变量约束。

MPC2。MV =结构(“最小值”0,“马克斯”30岁的“杀鼠灵”,-10,“RateMax”10);

在仿真软件模拟获得预定的MPC®金宝app

使用多个MPC控制器模拟gain-scheduled MPC控制块,交换机之间MPC1MPC2

%这个例子中,运行仿真软件(R)是必需的。金宝app如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (仿金宝app真软件需要运行这个例子。)返回结束

开放和配置模型。

y1initial = 0;% M1的初始位置y2initial = 10;%初始位置的平方米mdl =“mpc_switching”;open_system (mdl)如果存在(“animationmpc_switchoff”,“var”(mdl) & & animationmpc_switchoff close_system (' /动画')明确animationmpc_switchoff结束

模拟模型。

open_system ([mdl' /信号'])sim (mdl) MPC1saved = MPC1;MPC2saved = MPC2;
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性的“mpc”对象是空的。假设白噪声在每个测量输出通道。- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性的“mpc”对象是空的。假设白噪声在每个测量输出通道。 -->Converting model to discrete time. -->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

在所有条件下使用两个控制器提供令人满意的性能。

重复模拟使用MPC1只有

重复仿真假设从不联系群众;也就是说,只使用控制器MPC1

MPC1 = MPC1saved;MPC2 = MPC1saved;sim (mdl)

在这种情况下,只要两个群众加入性能降低。

重复模拟使用MPC2只有

重复仿真假设大众总是接触;也就是说,只使用控制器MPC2

MPC1 = MPC2saved;MPC2 = MPC2saved;sim (mdl)

在这种情况下,性能会有所下降,当群众不同,导致控制器应用过度使用武力。

bdclose (mdl);关闭(findobj (“标签”,“mpc_switching_demo”));

设计明确的MPC控制器

减少在线计算的努力,您可以创建一个显式的MPC控制器对于每个操作条件,并实现gain-scheduled明确MPC控制使用多个明确MPC控制器。

创建一个显式的MPC控制器,首先定义控制器的操作范围,输入信号和参考信号。创建一个显式的MPC范围对象使用相应的传统控制器,MPC1

范围= generateExplicitRange (MPC1saved);

指定范围的控制器。这两个MPC1MPC2包含状态:

  • 物体的位置和速度M1

  • 一个积分器从默认输出扰动模型

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

如果可能,使用你的知识的定义范围。然而,它是很困难的,当国家不对应一个物理参数,如输出扰动模型状态。在这种情况下,使用模拟和典型的收集范围信息参考和干扰信号。对于这个系统,你可以激活可选est.state外港的多个MPC控制器,使用范围和查看估计状态。当模拟控制器响应,使用参考信号覆盖预期的工作范围。

定义参考信号的范围。选择一个小于参考值范围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 (MPC1saved、范围);
发现/未开拓的地区:4/0

创建一个显式的MPC控制器相对应MPC2。自MPC1MPC2操作在同一状态和输入范围和有相同的限制,您可以使用相同的对象范围。

expMPC2 = generateExplicitMPC (MPC2saved、范围);
发现/未开拓的地区:5/0

一般来说,不同控制器的显式的MPC范围可能不匹配。例如,控制器可能有不同的约束或国家范围。在这种情况下,创建一个单独的显式MPC范围为每个控制器对象。

验证显式MPC控制器

是一种很好的做法之前验证每一个显式的MPC控制器的性能实现gain-scheduled明确MPC。例如,比较的性能MPC1expMPC1模拟闭环响应每个控制器使用sim卡

1 r =[0(30日);5 * 1 (160 1);5 * 1 (160 1)];[Yimp, Timp Uimp] = sim (MPC1saved 350 r, 1);[Yexp Texp,单边]= sim (expMPC1,350 r 1);
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性的“mpc”对象是空的。假设白噪声在每个测量输出通道。

比较植物输出两个控制器和被控变量序列。

图次要情节(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)

运行仿真。

sim (expModel)

查看仿真结果,开放的信号范围。

open_system ([expModel' /信号'])

gain-scheduled明确MPC控制器提供相同的性能随着gain-scheduled隐MPC控制器。

引用

[1]a . Bemporad s . Di Cairano诉Kolmanovsky,和d . Hrovat”混合多体建模和控制汽车应用中,磁致动器”Proc。46 IEEE®Conf.决定和控制新奥尔良,洛杉矶,2007年。

bdclose (expModel)关闭(findobj (“标签”,“mpc_switching_demo”))

另请参阅

|

相关的话题