主要内容

在运行时更新约束

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

运行时约束更新支持代码生成。金宝app

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

您可以在运行时更新工厂输入和输出信号的界限。为此,首先在设计MPC控制器时定义初始信号界限。有关更多信息,请参阅指定约束.如果没有为给定信号指定初始边界,则无法在运行时约束该信号。

要在命令行模拟期间更新信号界限,请在每个控制间隔内设置相应的属性mpcmoveopt.呼叫前对象MPCMOVE.mpcmoveadaptive, 或者mpcmoveMultiple.更新:

  • 操作变量下界和上界,设置MVMinmvmax.属性分别。

  • 输出变量的下界和上界,设置outputmin.OutputMax属性分别。

您还可以在Simulink中更新运行时的输入和输出界限金宝app®MPC控制器自适应MPC控制器,多个MPC控制器块。下表列出了边界、它们的关联块端口,以及为启用端口而选择的块参数。

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

将信号连接到这些端口,该端口指定每个变量的界限的运行时值。如果有多个操作变量或输出变量,请将向量信号连接到相应端口。例如,如果有三个输出变量,则将三元素向量信号连接到yminymax.港口。如果在控制器对象中无约束,则忽略连接的信号值。

小费

对于您设置的任何约束-inf.在整个预测地平线(均匀)或单独的预测地平线上(时变)横跨整个预测地平线(时变),相应的变量在运行时保持不受约束;也就是说,您无法修改它。

但是,您可以保持变量无约束,以便不扭曲您的离线控制器设计,同时保持在线添加约束的能力。为此,请在创建控制器时设置绑定到大值。不使用最大浮点数作为大的价值,因为这样做会导致运行时的数值问题。然后,您可以在运行时修改约束。

如果在控制器对象中定义时变约束,新的边界将应用于预测视界中的第一个有限值。所有随后的预测层值调整以保持在预测层内的相同剖面;也就是说,它们的变化量是一样的。

例如,请参见运行时的输入和输出界限

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

您可以在运行时更新混合输入/输出约束。有关这些约束的更多信息,请参阅限制输入和输出的线性组合.增益计划的MPC控制器不支持此功能。金宝app

您可以在模拟期间更新以下约束矩阵:

  • E.-操纵变量约束常数

  • F- 受控输出约束常数

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

  • S.- 测量的扰动约束常数

方法定义初始约束setconstraint命令。您不能在运行时添加额外的约束。

为了在命令行模拟期间更新混合输入/输出约束,在每个控制间隔中设置定制财产的mpcmoveopt.呼叫前对象MPCMOVE.mpcmoveadaptive.指定定制作为一个结构E.FG,S.字段。将每个字段指定为一个数组,其尺寸与使用指定的初始约束数组相匹配setconstraint

要在Simulink仿真期间更新混合输入/输出约束,请选择金宝app自定义约束你的参数MPC控制器自适应MPC控制器堵塞。这样做补充说E.FG,S.块的输入端口。的S.输入端口只有在控制器测量扰动时才添加。

将矩阵信号连接到指定每个阵列运行时值的这些端口。如果您定义E.FG, 或者S.在你的MPC控制器中,你必须连接一个信号到相应的输入端口,并且该信号必须与控制器中指定的数组具有相同的尺寸。如果数组没有在控制器对象中定义,则使用一个大小正确的零矩阵。

有关更新自适应MPC控制器的混合输入/输出约束的示例,请参见使用自适应模型预测控制避免避免

也可以看看

|||

相关的话题