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 连接

 

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

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

相关文章

Vue中英文翻译小结

背景:时局艰难,后端开发被强制写了vue,这不有个需求是中英文翻译,特此记录下,该怎么个翻译法子。 先引入全局的路由国际化文件,zh.js 和 en.js 1.关于插值表达Button里面 {{ $t(reinsop.common.back) }} …

LazyIDA源码阅读

LazyIDA是一款IDA插件,项目地址GitHub - L4ys/LazyIDA: Make your IDA Lazy! 外部引用 from __future__ import division from __future__ import print_function from struct import unpack import idaapi import idautils import idcfrom PyQt5.Qt import QAppli…

vue中的事件修饰符、表单双向数据绑定和计算属性

目录 一、事件修饰符 二、表单双向数据绑定 模拟双向数据绑定(双向数据绑定底层原理) 三、计算属性 计算属性和methods方法区别? 计算属性和watch区别? 一、事件修饰符 stop 阻止事件冒泡 prevent 阻止事件默认行为 ca…

Linux线程——互斥锁

概念 互斥量(mutex)从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本,OSPF的版本号。对于OSPFv2来说,其值为2。Type1字节类型,OSPF报文的类型,有下面几种类型: 1:Hello报文;● 2:DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍: FMVSS是美国《联邦机动车安全标准》,由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准,旨在提高机动车的安全性能,减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法,源码安装,但是我一直 make install失败显示没有权限 然后选择放弃,然后随便试了一下方法 2,成功 方法 1 方法 2 pip3 install screen结果:

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组,指纹和密码安全存储,云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4,支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境: 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖: apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录: mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

计算机网络:物理层(编码与调制)

今天又学会了一个知识,加油! 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch,你可能需要检查它的序列号或IMEI号,来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上,按下手表表面的数字皇冠以打开应用程序网格或列表。…

【设计模式--行为型--访问者模式】

设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…

晶体管的工作状态判断和工作条件

晶体管是模拟电路中基础的器件,对于电子工程师来说,了解晶体管工作的条件和判断晶体管的工作状态都是非常基础的,本文将带大家一起学习或回顾一下。 一、晶体管工作的条件 1.集电极电阻Rc: 在共发射极电压放大器中,…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解(基本操作)》我们讲解了HPM6750 GPIO相关内容,在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏,片上外设模块必须依赖时…

爱普生手机打印助手Epson Smart Panel下载分享

新一代智能打印Epson Smart Panel为您提供一站式打印服务,人性化装机助手,智能联网,快速开启远程微信打印,全新交互式设计,打印体验焕新升级; 根据手机不同可选下列不同下载方式: 人性化智能装机…

《每天一分钟学习C语言·一》

1、转义字符:\n换行,\t前进一个tab键,\b退格键 2、八进制前面有0,%o或者%#o表示八进制,十六进制前有0X,%0x或者%#0x表示十六进制 3、%u打印无符号数,%g显示小数,类似于%f&#xff…

LibreNMS:从docker出发

引言 LibreNMS 是一个免费开源的网络监控和自动化工具,用于监视网络设备、服务器和应用程序的性能和状态。它提供了一个集中的管理平台,帮助管理员实时监控和管理整个网络基础设施。 以下是 LibreNMS 的一些主要特点和功能: 自动发现&#…

TikTok矩阵玩法分享,如何建立TikTok矩阵?

矩阵是在 TikTok 上非常常见的营销方式,很多卖家想要通过矩阵化运营快速涨粉。但要想做好TikTok矩阵,需要有明确的方向和计划。下面东哥我将分享一些做TikTok矩阵的玩法,帮助大家更好地搭建自己的TikTok矩阵。 了解TikTok矩阵 TikTok矩阵是一…

同时获取el-select的label和value

ui如下: 需求如下: 在点击确认的时候,将id和name都传给一个接口,但是ui只用展示name,name用v-model绑定给input框,但是id不知道怎么传给后端。 解决方法如下: vue中elementUi的el-select同时…

JVM-9-Class类文件的结构

Java技术能够一直保持着非常良好的向后兼容性,Class文件结构的稳定功不可没。 Class文件是一组以8个字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中。 Class文件格式采用一种类似于C语言结构体的伪结构来存储数据&#xff0c…