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

news2024/11/25 7:12:22

系列文章目录


前言

本主题介绍如何使用 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 连接

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1321374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解 SBOM (软件物料清单)

近年来,开源软件在开发中的采用激增,目前已占已构建软件的高达 90%。它在全球公司中的受欢迎程度源于成本节约和产品上市时间的加快。然而,在集成开源软件组件时,有一个关键的方面需要考虑。 Synopsys 报告84% 的商业和专有代码库…

未来十年,人工智能就业方向及前景如何?

人工智能(AI)是一个快速发展的领域,对于未来的就业方向和前景有着巨大的影响。以下是一些可能的发展趋势和就业前景: 1、增长趋势:人工智能正在全球范围内经历巨大的增长,预计在未来十年内将继续保持这一趋…

rn报错 run react-native-start,rn真机报错bug解决

错误信息 这个问题是因为手机和电脑没有链接起来需要实行通讯 ADB ADB (Android Debug Bridge) ,译作 安卓调试桥 ,一个能让你 与Android设备进行通信 的 命令行工具 。 你可以通过它,在命令行输入命令控制Android设备,或者查看…

【map】【单调栈 】LeetCode768: 最多能完成排序的块 II

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 排序 map 区间合并 题目 给你一个整数数组 arr 。 将 arr 分割成若干 块 ,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 返回…

【Spring】11 EnvironmentAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将着重介绍一个与环境(Environment)相关…

uniapp 预览图片

preImg(index){let urls []this.images.map((item,i) > {if(indexi){urls.unshift(item.file_path)}else{urls.push(item.file_path)}})uni.previewImage({urls})}

探索关系:Python中的Statsmodels库进阶

目录 写在开头1. 多元线性回归场景介绍 2. Logistic回归2.1 Logistic回归的概念2.2 应用案例2.2.1 建立模型和预测2.2.2 模型结论2.2.3 模型优化 3. 时间序列分析3.1 时间序列分析中的应用3.2 利用Statsmodels进行简单的时间序列分析 写在最后 写在开头 在数据分析的旅程中&am…

【react】原理简介

一、setState() 的说明 1.1 更新数据 setState() 是异步更新数据的注意:使用该语法时,后面的 setState() 不要依赖于前面的 setState()可以多次调用 setState() ,只会触发一次重新渲染 1.2 推荐语法 推荐:使用 setState((sta…

C++内存布局

温故而知新,本文浅聊和回顾下C内存布局的知识。 一、c内存布局 C的内存布局主要包括以下几个部分: 代码段:存储程序的机器代码。.数据段:存储全局变量和静态变量。数据段又分为初始化数据段(存储初始化的全局变量和…

深入解析Guava范围类(Range)

第1章:范围类Range的重要性 大家好,我是小黑,今天咱们聊聊一个在Java编程世界里非常实用但又被低估的角色——Guava库中的Range类。你知道吗,在处理涉及到数值范围的问题时,Range类就像是咱们的救星。不论是判断某个数…

Redis设计与实现之订阅与发布

目录 一、 订阅与发布 1、 频道的订阅与信息发送 2、订阅频道 3、发送信息到频道 4、 退订频道 5、模式的订阅与信息发送 ​编辑 6、 订阅模式 7、 发送信息到模式 8、 退订模式 三、订阅消息断连 1、如果订阅者断开连接了,再次连接会不会丢失之前发布的消…

SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?

SiLM5350MDBCA-DG是一款适用于IGBT、MOSFET的单通道 隔离门极驱动器,具有10A拉电流和10A灌电流驱动能 力。提供内部钳位功能,可单独控制 上升时间和下降时间。 在 SOP8 封 装 中 具 有 3000VRMS 隔 离 耐 压 ( 符 合 UL1577)。 与…

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 注意:约束是作用于表中字段上…

使用 GBASE南大通用 ADO.NET

GBASE南大通用ADO.NET(全称是 .NET Framework Data Provider For GBase)提 供给.NET 应用程序访问 GBase 数据库、获取数据、管理数据的一套完整的解决 方案。 GBASE南大通用 ADO.NET 的四个核心类及若干功能类具有以下功能:  建立和管…

喜报|亚数荣获“2023物联网场景应用品牌企业”奖项

12月5日至6日,以“物联中国 数智雄安”为主题的“千企雄安行:2023物联网产业品牌大会”在雄安新区举办。 大会由雄安新区管理委员会、中关村发展集团股份有限公司、物联中国团体组织联席会主办,雄安新区投资促进服务中心、北京物联网智能技术…

layui框架实战案例(25):table组件筛选列记忆功能

即点击当前表格右上角筛选图标后,对表头进行显示隐藏勾选,再刷新页面依然保留当前筛选状态。 要实现layui表格组件的筛选列记忆功能,可以采取以下步骤: 存储筛选数据:当用户进行筛选操作时,将筛选的数据…

leecode-LCR 017. 最小覆盖子串(golang版本)

leecode最小覆盖字串 leecode链接地址 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。 如果 s 中存在多个符合条件的子字符串,返回任意一个。 题解 func minWindow(…

电脑屏幕怎么调大小?分享4个实用操作!

“我最近在使用电脑时总感觉电脑屏幕看起来不太对劲,好像字体被刻意放大了,看起来很不舒服,想问问有什么方法可以解决这个问题吗?” 电脑屏幕的正常显示是我们使用电脑的重要前提之一。如果电脑屏幕设置或显示不正确,会…

微信Windows版-无效的WeChatWin.dll文件,错误码126

更新的微信Windows最新版本,突然有一天打开微信提示“无效的WeChatWin.dll文件 错误码 ErrorCode:126,点击“确定”下载最新版本”。 卸载重新安装跟到windows目录下替换WeChatWin.dll皆无效 该解决方案适用于Windows系统:Windows7、Windows10、Windows…

ModuleNotFoundError: No module named ‘openai.error‘

ModuleNotFoundError: No module named ‘openai.error’ result self.fn(*self.args, **self.kwargs) File “H:\chatGPTWeb\chatgpt-on-wechat\channel\chat_channel.py”, line 168, in _handle reply self._generate_reply(context) File “H:\chatGPTWeb\chatgpt-on-wec…