为了补偿运行条件的变化,您可以在运行时更新工厂输入和输出的约束。您可以更新饱和限制的输入和输出信号,以及线性混合输入/输出约束。
运行时约束更新支持代码生成。万博1manbetx
您可以在运行时更新植物输入和输出信号的边界。要做到这一点,首先在设计MPC控制器时定义初始信号边界。有关更多信息,请参见指定的约束.如果未指定给定信号的初始界限,则无法在运行时约束该信号。
要在命令行模拟期间更新信号边界,在每个控制间隔中,设置mpcmoveopt
对象在调用之前mpcmove
,mpcmoveAdaptive
,或mpcmovemultiple
.更新:
操纵可变下限和上限,设置MVMIN.
和MVMax
属性,分别。
输出变量下限和上限,设置OutputMin
和outputmax.
属性,分别。
您还可以在Simulink中在运行时更新输入和输出边界万博1manbetx®为了MPC控制器,自适应MPC控制器, 和多个MPC控制器块。下表列出了界限,其关联的块端口和块参数,以选择启用端口。
界限 | 端口名称 | 块参数 |
---|---|---|
被操纵变量的下限 | um |
较低的MV限制 |
操纵变量的上界 | umax |
上层MV限制 |
输出变量的下界 | ymin |
低OV限制 |
输出变量的上界 | ymax |
上ov限制 |
将信号连接到这些指定每个变量边界的运行时值的端口。如果有多个操纵变量或输出变量,将矢量信号连接到相应的端口。例如,如果有三个输出变量,将一个三元素向量信号连接到ymin
和ymax
港口。如果一个变量在控制器对象中是不受约束的,那么连接的信号值将被忽略。
提示
对于任何你设置的约束负
要么INF.
,无论是在整个预测视界(均匀)还是在单个预测视界步长(时变),相应的变量在运行时保持不受约束;也就是说,您不能修改它。
然而,您可以保持变量不受约束,以避免扭曲离线控制器设计,同时保持在线添加约束的能力。为此,在创建控制器时将绑定设置为一个较大的值。不要使用realmax.
作为大值,因为这样做会在运行时导致数值问题。然后,您可以在运行时修改约束。
如果在控制器对象中定义时变的约束,则将新界限应用于预测视界中的第一个有限值。所有后续的预测地平线值都适用于在预测地平线上保持相同的轮廓;也就是说,它们的数量相同。
例如,看到在运行时改变输入和输出边界.
您可以在运行时更新混合输入/输出约束。有关这些约束的更多信息,请参见输入与输出线性组合的约束.增益计划MPC控制器不支持此功能。万博1manbetx
你可以在你的模拟过程中更新以下约束矩阵:
E
- 操纵变量约束常数
F
-受控输出约束常数
G
-混合输入/输出约束常数
年代
-测量的扰动约束常数
为此,首先使用初始约束定义初始约束setConstraint.
命令。您无法在运行时添加其他约束。
要在命令行模拟期间更新混合输入/输出约束,在每个控制间隔中设置CustomConstraint
财产的财产mpcmoveopt
对象在调用之前mpcmove
要么mpcmoveAdaptive
.指定CustomConstraint
作为一种结构E
,F
,G
, 和年代
字段。将每个字段指定为具有尺寸与使用的初始约束阵列匹配的阵列setConstraint.
.
要在Simulink仿真中更新混合输入/输出约束,请选择万博1manbetx自定义约束你的参数MPC控制器要么自适应MPC控制器块。这样做增加了E
,F
,G
, 和年代
输入端口到块。这年代
仅当您的控制器具有测量的干扰时,才会添加输入端口。
将矩阵信号连接到指定每个数组的运行时值的这些端口。如果你定义E
,F
,G
,或年代
在MPC控制器中,您必须将信号连接到相应的输入端口,并且该信号必须具有与控制器中指定的数组具有相同的尺寸。如果在控制器对象中未定义数组,请使用具有正确尺寸的零矩阵。
有关更新自适应MPC控制器的混合输入/输出约束的示例,请参阅基于自适应模型预测控制的避障.
mpcmove
|mpcmoveAdaptive
|mpcmoveexplict.
|setConstraint.