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

2023-12-20 00:28

本文主要是介绍MATLAB - 使用 MPC Designer 线性化 Simulink 模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录


前言

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

open_system('CSTR_ClosedLoop')

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

提示

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

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

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

注意

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


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

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

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

1.1 指定信号尺寸

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

 

单击 "确定"。

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

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

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

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

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

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

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

注意

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

1.3 指定工作点

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

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

注意

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

1.4 定义结构和线性化模型

单击导入。

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

注意

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

二、线性化模型

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

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

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 模型中指定的初始条件作为操作点对模型进行线性化,请选择模型初始条件。

 

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

3.2 在仿真快照时间线性化


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

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

 

单击确定。

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

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

3.3 计算稳态工作点


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

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

单击 "开始修剪"。

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

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

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

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


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

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

单击 "拍摄快照"。

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

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

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

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

3.5 选择现有运行点


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

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

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

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

3.6 选择多个工作点


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

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

 

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

单击确定。

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

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

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

3.7 查看/编辑运行点


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

 

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

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

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

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

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

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

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


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

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

4.1 正确的 MD 连接

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

不正确的 MD 连接

 

这篇关于MATLAB - 使用 MPC Designer 线性化 Simulink 模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/514238

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存