在运行时更新约束
要补偿更改操作条件,您可以在运行时更新工厂输入和输出的约束。您可以更新输入和输出信号的饱和限制以及线性混合输入/输出约束。
运行时约束更新支持代码生成。金宝app
在运行时更新输入和输出信号上的界限
您可以在运行时更新工厂输入和输出信号的界限。为此,首先在设计MPC控制器时定义初始信号界限。有关更多信息,请参阅指定约束.如果没有为给定信号指定初始边界,则无法在运行时约束该信号。
要在命令行模拟期间更新信号界限,请在每个控制间隔内设置相应的属性mpcmoveopt.
呼叫前对象MPCMOVE.
那mpcmoveadaptive
, 或者mpcmoveMultiple
.更新:
操作变量下界和上界,设置
MVMin
和mvmax.
属性分别。输出变量的下界和上界,设置
outputmin.
和OutputMax
属性分别。
您还可以在Simulink中更新运行时的输入和输出界限金宝app®为MPC控制器那自适应MPC控制器,多个MPC控制器块。下表列出了边界、它们的关联块端口,以及为启用端口而选择的块参数。
界限 | 端口名称 | 块参数 |
---|---|---|
被操纵变量的下界 | umin |
较低的MV限制 |
操纵变量上的上限 | umax. |
上部MV限制 |
输出变量下限 | ymin |
较低的ov限制 |
输出变量上的上限 | ymax. |
上层OV限制 |
将信号连接到这些端口,该端口指定每个变量的界限的运行时值。如果有多个操作变量或输出变量,请将向量信号连接到相应端口。例如,如果有三个输出变量,则将三元素向量信号连接到ymin
和ymax.
港口。如果在控制器对象中无约束,则忽略连接的信号值。
小费
对于您设置的任何约束-inf.
或正
在整个预测地平线(均匀)或单独的预测地平线上(时变)横跨整个预测地平线(时变),相应的变量在运行时保持不受约束;也就是说,您无法修改它。
但是,您可以保持变量无约束,以便不扭曲您的离线控制器设计,同时保持在线添加约束的能力。为此,请在创建控制器时设置绑定到大值。不使用最大浮点数
作为大的价值,因为这样做会导致运行时的数值问题。然后,您可以在运行时修改约束。
如果在控制器对象中定义时变约束,新的边界将应用于预测视界中的第一个有限值。所有随后的预测层值调整以保持在预测层内的相同剖面;也就是说,它们的变化量是一样的。
例如,请参见运行时的输入和输出界限.
在运行时更新混合输入/输出约束
您可以在运行时更新混合输入/输出约束。有关这些约束的更多信息,请参阅限制输入和输出的线性组合.增益计划的MPC控制器不支持此功能。金宝app
您可以在模拟期间更新以下约束矩阵:
E.
-操纵变量约束常数F
- 受控输出约束常数G
- 混合输入/输出约束常数S.
- 测量的扰动约束常数
方法定义初始约束setconstraint
命令。您不能在运行时添加额外的约束。
为了在命令行模拟期间更新混合输入/输出约束,在每个控制间隔中设置定制
财产的mpcmoveopt.
呼叫前对象MPCMOVE.
或mpcmoveadaptive
.指定定制
作为一个结构E.
那F
那G
,S.
字段。将每个字段指定为一个数组,其尺寸与使用指定的初始约束数组相匹配setconstraint
.
要在Simulink仿真期间更新混合输入/输出约束,请选择金宝app自定义约束你的参数MPC控制器或自适应MPC控制器堵塞。这样做补充说E.
那F
那G
,S.
块的输入端口。的S.
输入端口只有在控制器测量扰动时才添加。
将矩阵信号连接到指定每个阵列运行时值的这些端口。如果您定义E.
那F
那G
, 或者S.
在你的MPC控制器中,你必须连接一个信号到相应的输入端口,并且该信号必须与控制器中指定的数组具有相同的尺寸。如果数组没有在控制器对象中定义,则使用一个大小正确的零矩阵。
有关更新自适应MPC控制器的混合输入/输出约束的示例,请参见使用自适应模型预测控制避免避免.
也可以看看
setconstraint
|MPCMOVE.
|mpcmoveadaptive
|mpcmoveExplicit