MATLAB - 使用 MPC Designer 线性化 Simulink 模型

系列文章目录


前言

本主题介绍如何使用 MPC Designer 对 Simulink® 模型进行线性化。为此,请从包含 MPC 控制器块的 Simulink 模型打开该应用程序。本例中使用 CSTR_ClosedLoop 模型。

open_system('CSTR_ClosedLoop')

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第1张图片 

在模型窗口中,双击 MPC 控制器模块。

提示

在 MPC 控制器块参数对话框的默认条件选项卡中,可以在打开 MPC Designer 之前定义控制器采样时间和信号尺寸。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第2张图片

 在 "区块参数 "对话框中,确保 MPC 控制器字段为空,然后单击 "设计 "打开 MPC 设计器。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第3张图片

使用 MPC Designer,您可以通过线性化 Simulink 模型来定义 MPC 结构。定义初始 MPC 结构后,还可以在不同工作点对模型进行线性化,并导入线性化后的工厂。

注意

如果在 MPC 控制器字段中指定了 MATLAB® 工作区中的控制器,应用程序将导入指定的控制器。在这种情况下,MPC 结构源自导入的控制器。不过,您仍然可以对 Simulink 模型进行线性化处理,并导入线性化的工厂。

 


一、通过线性化定义 MPC 结构

本例演示了如何通过线性化 Simulink 模型在 MPC Designer 中定义工厂输入/输出结构。

在 "MPC Designer "选项卡的 "结构 "部分,单击 "MPC 结构"。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第4张图片

1.1 指定信号尺寸

在 "按线性化定义 MPC 结构 "对话框的 "MPC 结构 "部分中,如果显示的信号尺寸与模型不匹配,请单击 "更改 I/O 尺寸 "配置尺寸。由于模型中的未测量干扰或未测量输出不会输入到 MPC 控制器块,因此必须指定这些信号的尺寸。在本例中,请指定一个未测量的干扰信号。

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第5张图片

单击 "确定"。

未测量干扰 (UD) 类型已添加到 Simulink 工厂输入信号中,但未指定块路径。

1.2 选择工厂输入/输出信号

在对模型进行线性化之前,请为模型中的每个 MPC 信号类型分配 Simulink 信号线。应用程序将这些信号用作线性化输入和输出。

在 "工厂输入的 Simulink 信号 "和 "工厂输出的 Simulink 信号 "部分,会自动为操纵变量、测量输出和测量干扰定义块路径。MPC Designer 会检测这些信号,因为它们连接到 MPC 控制器模块。如果工厂有未测量的干扰或未测量的输出,请选择相应的 Simulink 信号线。

要选择信号类型,请使用 "已选 "复选框。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第6张图片

在选择信号对话框中,单击确定。

在 "按线性化定义 MPC 结构 "对话框中,所选信号类型的块路径将更新。

注意

如果模型有测量扰动,则必须将 MPC 控制器模块的 md 输入端口连接到相应工厂输入的同一信号线上。更多信息,请参阅连接测量扰动进行线性化。

 

1.3 指定工作点

在 Simulink 运行点部分,在下拉列表中选择一个运行点,在该点上对模型进行线性化。本例中选择 "模型初始条件"。

有关不同操作点选项的信息,请参阅指定操作点。

注意

如果选择了生成多个线性化工作点的选项,MPC Designer 只使用第一个工作点来定义工厂结构和对模型进行线性化。

1.4 定义结构和线性化模型

单击导入。

MPC Designer 使用指定的输入/输出信号在指定的工作点对 Simulink 模型进行线性化,并将线性化后的工厂导入应用程序右侧的 "工厂 "工作区。控制器工作区中会添加一个默认控制器,该控制器将线性化工厂作为其内部模型,并将所选工作点的输入/输出信号值作为标称值。情景工作区中还添加了一个默认模拟情景。

注意

在 MPC Designer 中创建的所有控制器都共享相同的标称值,否则就不容易比较它们的响应。因此,如果更新标称值,所有控制器都会受到影响。

二、线性化模型

定义初始 MPC 结构后,可以在不同工作点对 Simulink 模型进行线性化,并导入线性化后的工厂。这样做有助于根据建模误差验证控制器性能。

在 "MPC 设计器 "选项卡的 "导入 "部分,单击 "线性化模型"。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第7张图片 

2.1 选择工厂输入/输出信号

在 "工厂输入的 Simulink 信号 "和 "工厂输出的 Simulink 信号 "部分,输入/输出信号配置与最初定义 MPC 结构时指定的配置相同。

一旦定义了结构,就不能更改信号类型和尺寸。不过,对于每种信号类型,您可以从 Simulink 模型中选择不同的信号线。所选线路必须与当前 MPC 结构中定义的线路具有相同的尺寸。

2.2 指定操作点

在 Simulink 操作点部分的下拉列表中,您可以选择对模型进行线性化的操作点。

有关不同操作点选项的信息,请参阅指定操作点。

2.3 线性化模型和导入工厂

如果单击 "导入"(Import),MPC Designer 将在定义的工作点上对 Simulink 模型进行线性化,并将线性化工厂、默认控制器和默认仿真场景添加到右侧的应用程序工作区中,如前所述的 "通过线性化定义 MPC 结构 "对话框中的 "导入"(Import)按钮。

如果选择 "同时使用选定工作点更新标称值 "选项,则应用程序控制器工作区中所有控制器 的标称值都将使用该工作点信号值进行更新。

如果选择了为线性化生成多个工作点的选项(请参阅指定工作点),应用程序将在所有指定的 工作点上对模型进行线性化。线性化后的设备将按照定义相应工作点的顺序添加到 "设备 "工作区中。如果选择更新标称值,程序将使用第一个工作点的信号值。

三、指定操作点


在 "通过线性化定义 MPC 结构 "对话框或 "线性化 Simulink 模型 "对话框的 "Simulink 操作点 "部分的下拉列表中,可以选择或创建用于模型线性化的操作点。有关查找稳态工作点的更多信息,请参阅关于工作点(Simulink 控制设计)和根据规范计算稳态工作点(Simulink 控制设计)。

3.1 选择模型初始条件


要使用 Simulink 模型中指定的初始条件作为操作点对模型进行线性化,请选择模型初始条件。

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第8张图片

 

模型初始条件是 MPC Designer 中线性化的默认工作点。

3.2 在仿真快照时间线性化


要在指定的仿真快照时间对模型进行线性化,请选择在仿真快照时间线性化。当您知道模型在某个仿真时间后达到平衡状态时,在快照时间进行线性化非常有用。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第9张图片

在输入快照时间以线性化对话框中,在模拟快照时间字段中输入一个或多个模拟快照时间。以矢量形式输入多个快照时间。

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第10张图片

单击确定。

如果输入了多个快照时间,并且之前在 "按线性化定义 MPC 结构 "对话框中选择了 "按线性化"(并单击 "导入 "按钮),则 MPC Designer 将仅使用第一个快照时间对 Simulink 模型进行线性化:

  • 通过线性化定义 MPC 结构 "对话框,MPC Designer 将仅使用第一个快照时间对 Simulink 模型进行线性化。MPC 控制器的标称值是使用该快照的输入/输出信号值定义的。
  • 在线性化 Simulink 模型对话框中,MPC Designer 在所有指定的快照时间对模型进行线性化。线性化后的工厂模型将按照快照时间数组中指定的顺序添加到数据浏览器中。如果您选择了 "使用选定工作点更新标称值 "选项,标称值将使用第一个快照的输入/输出信号值进行设置。

3.3 计算稳态工作点


要使用数值优化方法计算出符合规格的稳态运行点,请从创建列表中选择修整模型。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第11张图片

 在 "修整模型 "对话框中,输入您希望找到工作点的稳态值规格。您可以指定状态、输入信号和输出信号的值。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第12张图片

单击 "开始修剪"。

此时将打开 "修剪进度查看器 "窗口,显示在模型的状态-输入空间中找到一个具有状态、 输入和输出选项卡中指定特征的点的优化进度。优化过程结束后,关闭修剪进度窗口和修剪模型对话框。

MPC Designer 将根据给定的规格创建一个工作点。计算出的操作点将添加到 Simulink 操作点下拉列表中并被选中。

有关如何指定稳态工作点搜索条件的示例,请参阅根据规格计算稳态工作点(Simulink 控制设计)。

3.4 在仿真快照时间计算工作点


要使用仿真快照计算工作点,请选择 "获取仿真快照"。当您知道模型在一定的仿真时间后达到平衡状态时,使用仿真快照计算的工作点对模型进行线性化会特别有用。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第13张图片

在输入快照时间线性化对话框中,在模拟快照时间字段中输入一个或多个模拟快照时间。以矢量形式输入多个快照时间

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第14张图片 

单击 "拍摄快照"。

MPC Designer 对 Simulink 模型进行仿真。在每个快照时间,模型的当前状态都会被用来创建一个操作点,并将其添加到下拉列表中进行选择。

如果输入多个快照时间,操作点将作为一个数组一起存储。如果您之前在 "按线性化定义 MPC 结构 "对话框中选择了 "获取仿真快照",那么现在您可以在 "按线性化定义 MPC 结构 "对话框中选择 "获取模拟快照":

通过线性化定义 MPC 结构 "对话框中选择 "获取仿真快照",则 MPC Designer 将仅使用数组中的第一个工作点对模型进行线性化。MPC 控制器的标称值是使用该工作点的输入/输出信号值定义的。

在 "线性化 Simulink 模型 "对话框中,MPC Designer 将在阵列中的所有工作点对模型进行线性化。线性化后的工厂模型将按照与操作点阵列相同的顺序添加到数据浏览器中。

3.5 选择现有运行点


在 "现有工作点 "下,选择一个先前定义的工作点,在该工作点上对 Simulink 模型进行线性化。如果下拉列表中有一个或多个先前创建的工作点,则可使用该选项。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第15张图片

如果所选工作点代表使用多个快照时间创建的工作点阵列,并且您之前从

通过线性化定义 MPC 结构 "对话框,MPC Designer 将仅使用阵列中的第一个工作点对模型进行线性化。MPC 控制器的标称值是使用该工作点的输入/输出信号值定义的。

在 "线性化 Simulink 模型 "对话框中,MPC Designer 在阵列中的所有工作点对模型进行线性化。线性化后的工厂模型将按照与操作点阵列相同的顺序添加到数据浏览器中。

3.6 选择多个工作点


要在多个现有操作点上对 Simulink 模型进行线性化,请选择在多个点上线性化。如果下拉列表中有多个先前创建的工作点,则可使用该选项。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第16张图片

在指定多个工作点对话框中,选择要对模型进行线性化的工作点。 

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第17张图片

要更改操作点顺序,请单击列表中的操作点,然后单击 "上 "或 "下 "在列表中移动突出显示 的操作点。

单击确定。

如果之前选择了多点线性化,然后单击了 "按线性化定义 MPC 结构 "对话框中的 "导入":

按线性化定义 MPC 结构 "对话框中单击 "导入",MPC Designer 将仅使用第一个指定的工作点对模型进行线性化。MPC 控制器的标称值是使用该工作点的输入/输出信号值定义的。

在 "线性化 Simulink 模型 "对话框中,MPC Designer 将在所有指定工作点对模型进行线性化。线性化后的工厂模型将按照 "指定多个工作点 "对话框中指定的顺序添加到数据浏览器中。

3.7 查看/编辑运行点


要查看或编辑所选工作点,请单击 "编辑 "按钮。

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第18张图片

 在 "编辑 "对话框中,如果您从模拟快照中创建了所选工作点,则可以编辑工作点值。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第19张图片

如果所选操作点代表一个操作点阵列,请在选择操作点下拉菜单中选择一个操作点进行查看。

如果通过修剪模型获得操作点,则只能查看操作点值。

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第20张图片

要将 Simulink 模型初始条件设置为工作点中的状态,请单击初始化模型。然后就可以在指定的工作点上模拟模型。

设置模型初始条件时,MPC Designer 会将操作点导出到 MATLAB 工作区。此外,在 Simulink 配置参数对话框的数据导入/导出部分,它还会选择输入和初始状态参数, 并将其配置为使用导出操作点中的状态和输入。

要重置模型初始条件,例如删除导出的运行点,请清除输入和初始状态参数。

四、连接测量扰动进行线性化


如果 Simulink 模型有测量干扰信号,请将其连接到相应的工厂输入端口和 MPC 控制器模块的 md 端口。如果有多个测量干扰信号,请使用矢量信号将它们连接到 MPC 控制器。正如在 "通过线性化定义 MPC 结构 "中所述,MPC Designer 会自动检测连接到 MPC 控制器模块的测量干扰,并将其设置为用于线性化的工厂输入。

由于连接到 md 端口的测量干扰被选为线性化输入,因此必须将工厂测量干扰输入端口连接到选定的信号线上,如下图所示。

4.1 正确的 MD 连接

MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第21张图片

如下图所示,如果在 Mux 块之前将工厂测量干扰输入端口连接到相应信号,则 md 端口的信号到工厂之间没有线性化路径。因此,当您使用 MPC Designer 对设备进行线性化时,测量干扰通道会线性化为零。

不正确的 MD 连接

 MATLAB - 使用 MPC Designer 线性化 Simulink 模型_第22张图片

 

 

你可能感兴趣的:(matlab,机器人,自动驾驶,ROS,最优控制,MPC,模型预测控制)