SLTUNER.
界面要调整增益预定的控制系统,您必须制作Simulink万博1manbetx®模型线性化到与设计点的各种操作条件相对应的LTI模型阵列。因此,在获得如上所述的线性植物模型的家庭之后用于增益预定控制器调整的工厂模型,您必须将其与之相关联SLTUNER.
与您的Simulink模型接口。万博1manbetx为此,您将使用块替换导致SLTUNER.
用线性模型替换模型的植物子系统。此过程在内部构建了一个可调闭环模型的系列SLTUNER.
界面。
假设您在设计网格中的每个操作点中获得了一系列线性工厂模型。在最直接的情况下,满足以下条件:
阵列中的线性模型完全对应于模型中的工厂子系统。
除了要调整的元素之外,模型中的其他内容不随时间变化而变化。
对于Simu万博1manbetxlink模型MDL.
含有植物子系统G
和线性模型阵列GART.
代表设计点网格的工厂,以下命令创建一个SLTUNER.
界面:
blocksubs = struct('名称'那'mdl / g'那'价值',GAR);st0 = sltuner('mdl',{'kp'那'ki'},blocksubs);
ST0.
包含一系列闭环线性型号,每个型号在设计点处线性化,每个都有相应的线性设备插入G
。如果'kp'
和'ki'
是您想要调整的增益计划(例如查找表),可以使用可调谐增益曲面参数化,如上所述参数化增益计划,并调整它们。
在其他情况下,您在Simulink模型中的植物子系统可能与植物子系统完全相同的线性化阵列。万博1manbetx或者,您可能需要更换与运行条件不同的模型的其他部分。在这种情况下,在构建正确的块替代方面需要更多的护理。以下部分突出了几个此类案例。
例如,考虑以下图示的模型。
该模型具有一个内循环,具有比例仅增益预定控制器。控制器由查找表表示kp_in.
和产品块prod
。外环包括PI控制器,PI控制器具有由查找表表示的增益预定的比例和积分系数kp.
和ki.
。所有增益计划都取决于相同的调度变量α
。
假设您想要调整内部环路增益计划kp_in.
外环打开。为此,您可以获得一系列线性模型杜松子酒
从输入你
输出{q,alpha}
。此模型数组具有错误的I / O尺寸,可用作块替换G
。因此,你必须“垫”杜松子酒
额外的输出尺寸。
garr = [0;杜松子酒];blocksubs1 = struct('名称'那'mdl / g'那'价值',GAR);
此外,您可以通过更换外循环的所有效果不同的PID控制器块与系统在所有操作条件下线性化为零。由于此块有三个输入,请用3输入,单输出零系统更换。
blocksubs2 = struct('名称'那'MDL /不同的PID控制器'那'价值',ss([0 0 0]));
使用那些块替换,以下命令创建一个SLTUNER.
您可以使用的接口调整内部环路增益计划。
st0 = sltuner('mdl'那'kp_in');st0.blocksubstitutions = [blocksubs1;blocksubs2];
看到这个例子HL-20自动驾驶仪中的角速率控制对于另一个情况,其中植物本身以外的几个元素被块替换所取代。
接下来,假设您已经调整了内循环增益计划,并获得了数组kp_in_tuned.
,价值观kp_in.
对应于每个设计点(每个值α
你在植物中线性化)。也假设你有一个新的GART.
这是完整的植物你
到{y,q,alpha}
用调谐的内环关闭,关闭。要调整外环增益计划,您必须使用阵列替换产品块kp_in_tuned.
。值得注意的是,更换注入点,产品块prod
,而不是查找表kp_in.
。更换产品块有效地将其转换为不同的增益。此外,您必须归零产品块的第一个输入以删除查找表的效果kp_in.
。
prodsub = [0 ss(kp_in_tuned)];blocksubs1 = struct('名称'那'mdl / prod'那'价值',prodsub);blocksubs2 = struct('名称'那'mdl / g'那'价值',GAR);st0 = sltuner('mdl',{'kp'那'ki'});st0.blocksubstitutions = [blocksubs1;blocksubs2];
模型的一部分的下图突出了另一个方案,您可能需要替换与调度变量不同的块。假设调度变量是α
,以及您模型的某个信号,一个信号你
被除以α
。
为了保证SLTUNER.
在所有值的所有值都正确地线性化α
在设计网格中,您必须通过一系列线性模型替换它,每个模型α
价值。此块相当于发送你
通过1 /α
:
因此,您可以使用以下块替换SLTUNER.
界面,在哪里alpharrid.
是一系列的α
设计点的值。
divsub = ss [(1 / alpharrid),0] blocksub = struct('名称'那'mdl / div-by-alpha'那'价值',divsub);st0.blocksubstitutions = [st0.blocksubstutions;blocksubs]
模型数组中的每个条目Divsub.
将其第一个输入分为相应的条目alpharrid.
,并零的第二个输入。因此,这种替换给出了所需的结果y = U / Alpha
。
有时,您拥有的线性模型数组不是您要替换的模型部分的精确替换。例如,考虑以下说明三个输入一个输出子系统。
假设您有一系列线性化模型GART.
对应G
。您可以为整个子系统配置块替换g_full.
通过构造再现平均三个输入效果的替代模型,如下所示:
GSUB = GARR * [1/3 1/3 1/3];blocksubs = struct('名称'那'mdl / g_full'那'价值',GSUB);
有时,您可以通过使用零填充输入或输出来解决I / O尺寸中的不匹配,如图所示多个块替换。在其他情况下,您可能需要执行其他模型算法,使用命令系列
那回馈
, 要么连接
建立合适的替代品。
如果您的Simulink模型中的工厂由AN万博1manbetx表示LPV系统,创建时仍必须执行块替换SLTUNER.
用于调整增益计划的界面。SLTUNER.
无法直接读取线性模型阵列LPV系统堵塞。但是,如果它对应于您正在调整的设计点对应,则可以使用块中指定的线性模型数组。例如,假设你的工厂是一个LPV系统堵塞,lpvplant.
,它指定模型数组Plantarray.
。您可以配置块替换lpvplant.
如下:
blocksubs = struct('名称'那'mdl / lpvplant'那'价值',Plantarray);