主要内容

在运行时更新约束

为了补偿运行条件的变化,您可以在运行时更新工厂输入和输出的约束。您可以更新饱和限制的输入和输出信号,以及线性混合输入/输出约束。

运行时约束更新支持代码生成。万博1manbetx

在运行时更新输入和输出信号的边界

您可以在运行时更新植物输入和输出信号的边界。要做到这一点,首先在设计MPC控制器时定义初始信号边界。有关更多信息,请参见指定的约束.如果未指定给定信号的初始界限,则无法在运行时约束该信号。

要在命令行模拟期间更新信号边界,在每个控制间隔中,设置mpcmoveopt对象在调用之前mpcmovempcmoveAdaptive,或mpcmovemultiple.更新:

  • 操纵可变下限和上限,设置MVMIN.MVMax属性,分别。

  • 输出变量下限和上限,设置OutputMinoutputmax.属性,分别。

您还可以在Simulink中在运行时更新输入和输出边界万博1manbetx®为了MPC控制器自适应MPC控制器, 和多个MPC控制器块。下表列出了界限,其关联的块端口和块参数,以选择启用端口。

界限 端口名称 块参数
被操纵变量的下限 um 较低的MV限制
操纵变量的上界 umax 上层MV限制
输出变量的下界 ymin 低OV限制
输出变量的上界 ymax 上ov限制

将信号连接到这些指定每个变量边界的运行时值的端口。如果有多个操纵变量或输出变量,将矢量信号连接到相应的端口。例如,如果有三个输出变量,将一个三元素向量信号连接到yminymax港口。如果一个变量在控制器对象中是不受约束的,那么连接的信号值将被忽略。

提示

对于任何你设置的约束要么INF.,无论是在整个预测视界(均匀)还是在单个预测视界步长(时变),相应的变量在运行时保持不受约束;也就是说,您不能修改它。

然而,您可以保持变量不受约束,以避免扭曲离线控制器设计,同时保持在线添加约束的能力。为此,在创建控制器时将绑定设置为一个较大的值。不要使用realmax.作为大值,因为这样做会在运行时导致数值问题。然后,您可以在运行时修改约束。

如果在控制器对象中定义时变的约束,则将新界限应用于预测视界中的第一个有限值。所有后续的预测地平线值都适用于在预测地平线上保持相同的轮廓;也就是说,它们的数量相同。

例如,看到在运行时改变输入和输出边界

在运行时更新混合输入/输出约束

您可以在运行时更新混合输入/输出约束。有关这些约束的更多信息,请参见输入与输出线性组合的约束.增益计划MPC控制器不支持此功能。万博1manbetx

你可以在你的模拟过程中更新以下约束矩阵:

  • E- 操纵变量约束常数

  • F-受控输出约束常数

  • G-混合输入/输出约束常数

  • 年代-测量的扰动约束常数

为此,首先使用初始约束定义初始约束setConstraint.命令。您无法在运行时添加其他约束。

要在命令行模拟期间更新混合输入/输出约束,在每个控制间隔中设置CustomConstraint财产的财产mpcmoveopt对象在调用之前mpcmove要么mpcmoveAdaptive.指定CustomConstraint作为一种结构EFG, 和年代字段。将每个字段指定为具有尺寸与使用的初始约束阵列匹配的阵列setConstraint.

要在Simulink仿真中更新混合输入/输出约束,请选择万博1manbetx自定义约束你的参数MPC控制器要么自适应MPC控制器块。这样做增加了EFG, 和年代输入端口到块。这年代仅当您的控制器具有测量的干扰时,才会添加输入端口。

将矩阵信号连接到指定每个数组的运行时值的这些端口。如果你定义EFG,或年代在MPC控制器中,您必须将信号连接到相应的输入端口,并且该信号必须具有与控制器中指定的数组具有相同的尺寸。如果在控制器对象中未定义数组,请使用具有正确尺寸的零矩阵。

有关更新自适应MPC控制器的混合输入/输出约束的示例,请参阅基于自适应模型预测控制的避障

另请参阅

|||

相关话题