设计MPC控制器万博1manbetx
本例介绍了如何在Simulink中设计连续搅拌反应器(CSTR)的模型预测控制器万博1manbetx®使用MPC设计师.
这个例子要求万博1manbetxSimulink控制设计™软件通过线性化非线性Simulink模型来定义MPC结构。万博1manbetx
如果你没有万博1manbetxSimulink控制设计软件,你必须先创建一个货币政策委员会
MATLAB中的对象®工作区。有关更多信息,请参见使用MPC设计器设计控制器而且在命令行设计MPC控制器.
装运箱模型
本文描述了连续搅拌反应器(CSTR)的非线性模型装运箱模型.在模型中,输入被安排在向量中u(t),详情如下。
u1- - - - - -C房颤,进料流中试剂A的浓度,单位为kmol/m3.
u2- - - - - -Tf,进料流的温度,单位为K
u3.- - - - - -Tc,夹套冷却剂的温度,单位为K
而状态变量被排列在向量中x(t).
x1- - - - - -C一个,反应器中试剂A的浓度,单位为kmol/m3.
x2- - - - - -T,反应器内的温度,单位为K
控制目标是保持残留浓度,C一个,在其标称设定点通过调整冷却剂温度,Tc.饲料浓度的变化,C房颤,进料温度,Tf,引起CSTR反应紊乱。
反应堆温度,T,通常是测量的。然而,对于这个例子,忽略反应器温度,并假设残余浓度是直接测量的。
打开Simulin万博1manbetxk模型。
open_system (“CSTR_ClosedLoop”)
连接实测扰动信号
在Simuli万博1manbetxnk模型窗口中,双击MPC控制器块。
在“块参数”对话框中,在一般选项卡,选择实测扰动(md)复选框。
点击应用要添加医学博士
控制器块的输入端口。
在Simuli万博1manbetxnk模型窗口中,连接进料温度块输出到医学博士
输入端口。
线性化Simulin万博1manbetxk模型
在本例中,您从内部线性化Simulink模型万博1manbetxMPC设计师,这需要万博1manbetxSimulink控制设计软件有关更多信息,请参见使用MPC设计器线性万博1manbetx化Simulink模型.
如果你没有万博1manbetxSimulink控制设计软件,你必须先创建一个货币政策委员会
对象中指定该控制器对象MPC控制器块。
打开MPC设计师,打开MPC控制器方块,点击设计.
在MPC设计师,在MPC设计师选项卡,在结构部分中,点击MPC结构.
在“通过线性化定义MPC结构”对话框中控制器采样时间节,指定采样时间0.1
.
在MPC结构部分中,点击更改I/O大小将未测扰动和实测扰动信号维度相加。
在MPC块信号大小对话框中,指定每种类型的输入/输出通道的数量。
点击好吧.
在“通过线性化定义MPC结构”对话框中万博1manbetx植物输入的Simulink信号节,应用程序添加一行不可测扰动(UD).
被操纵的变量、被测量的扰动和被测量的输出已经被分配到它们各自的Simulink信号线,这些信号线连接到万博1manbetxMPC控制器块。
在万博1manbetx植物输入的Simulink信号部分,选择不可测扰动(UD)行,单击选择信号.
控件中的输出信万博1manbetx号进料浓度块。
信号被高亮显示,其块路径被添加到“选择MPC输入通道信号”对话框中。
在“选择MPC输入通道信号”对话框中,单击好吧.
在“通过线性化定义MPC结构”对话框中万博1manbetx植物输入的Simulink信号表,块路径对未测扰动信号进行更新。
在本例中,将Simulink模型线性化到一个稳态平衡工作点,其中残余浓万博1manbetx度为2 kmol/m3..要计算这样的工作点,添加CA
信号作为修剪输出约束,并指定其目标约束值。
在“Simul万博1manbetxink模型”窗口中,选择所连接的信号线CA
输出端口装运箱块。
在应用程序选项卡上,单击线性化管理.然后,在线性化选项卡,在插入分析点画廊,在修剪部分中,选择配平输出约束.
的CA
信号现在可以用来定义计算模型稳态工作点的输出规格。
在“通过线性化定义MPC结构”对话框中万博1manbetxSimulink工作点部分,在创建下拉列表,选择调整模型.
在“修剪模型”对话框中,在输出选项卡上的复选框已知的列频道- 1
并指定价值的2
.
此设置限制在工作点搜索期间输出信号的值为已知值。
点击开始削减.
项中指定的特征在模型的状态输入空间中找到一个点的优化进程将打开Trim进度查看器窗口州,输入,输出选项卡。在优化过程结束后,关闭修剪进度窗口以及修剪模型对话框。
在“通过线性化定义MPC结构”对话框中万博1manbetxSimulink工作点节,计算的工作点,op_trim1 (MPC_OP_Workspace)
,被添加到下拉列表中并选中。
在万博1manbetxSimulink工作点部分中,点击编辑.
在“编辑”对话框中,在状态选项卡,在实际dx列中,接近零的导数值表示计算的工作点处于稳态。
将Simulink模型的初始状态设置为万博1manbetx实际值列,单击初始化模型.这样做可以使您以后在计算的工作点上模拟Simulink模型,而不是在默认的模型初始条件万博1manbetx下。
在“初始化模型”对话框中,单击好吧.
在设定模型初始条件时,MPC设计师将工作点导出到MATLAB工作区。此外,在“Simulink万博1manbetx配置参数”对话框中,在数据导入/导出部分,它选择输入而且初始状态参数,并配置它们以使用导出工作点中的状态和输入。
若要重置模型初始条件(例如,如果删除导出的工作点),请清除输入而且初始状态参数。
关闭“编辑”对话框。
在“通过线性化定义MPC结构”对话框中,将Simulink模型线性化,并将线性化的模型导入万博1manbetxMPC设计师通过点击进口.
在左侧的数据浏览器部分,应用程序添加了以下项目。
线性化和离散化的植物模型
植物
默认MPC控制器
mpc1
使用线性化的植物作为内部预测模型创建默认模拟场景
scenario1
定义输入/输出通道属性
在MPC设计师选项卡,在结构部分中,点击I / O属性.
在“输入和输出通道规格”对话框中,单击的名字列时,为每个输入和输出通道指定有意义的名称。
在单位列,为每个信号指定适当的单位。
的名义价值对于每个信号,是计算工作点上相应的稳态值。
点击好吧.
定义干扰抑制模拟场景
控制器的主要目标是保持残留浓度C一个的名义价值2
kmol / m3..为此,控制器必须同时拒绝测量和未测量的扰动。
在MPC设计师选项卡,在场景部分中,选择编辑场景>scenario1.
在“模拟场景”对话框中,单击参考信号(所有输出的设定点)表,在信号下拉列表选择常数使输出设定值保持在其标称值。
在测量的干扰表,在信号下拉列表,选择一步.
指定一个步骤大小的10
一步时间的0
.
点击好吧.
在数据浏览器下,场景,点击scenario1
.点击scenario1
第二次,并重新命名MD_reject
.
在场景部分中,点击情节场景>新场景.
在“模拟场景”对话框中,单击无边无际的干扰表,在信号下拉列表,选择一步.
指定一个步骤大小的1
一步时间的0
.
点击好吧.
在数据浏览器下,场景、重命名NewScenario
来UD_reject
.
排列输出响应图
为了更容易地查看调优结果,可以安排图区域,以同时显示两个场景的Output Response图。
右击输入图标签栏并选择封闭输入图.
绘图显示区域更改为只显示输出的绘图。
右击输出图标签栏并选择瓷砖都>上/下.
绘图显示区域变为显示MD_reject:输出TAB位于上方的绘图区域,而UD_reject:输出Plot在较低的Plot区域。
调整控制器性能
在调优选项卡,在地平线部分,指定预测地平线的20.
和一个控制层的5
.
的输出响应根据新的视界值更新绘图。
使用默认的控制器约束和权重配置。
在性能调优部分,将闭环性能右滑块,这导致更严格的控制输出和更积极的控制移动。拖动滑块直到MD_reject:输出响应在不到3秒内达到稳态。
拖动状态估计向右滑动,这导致更积极的未测量的干扰抑制。拖动滑块直到UD_reject:输出响应在不到3秒内达到稳态。
更新万博1manbetx控制器调优模型
在分析部分中,选择出口控制器>仅更新块.应用程序导出调优控制器mpc1
到MATLAB工作空间。在Simuli万博1manbetxnk模型中MPC控制器块将被更新以使用导出的控制器。
模拟未测干扰抑制
在Simuli万博1manbetxnk模型窗口中,在模拟选项卡中,改变停止时间来5
秒。
模型初始条件设置为用于线性化的标称工作点。
若要模拟时间为零时进料浓度的单位阶跃,请打开进料浓度块并增加其恒定值参数从10
来11
.
在Simuli万博1manbetxnk模型窗口中,打开浓度范围并运行模拟。要缩放图的垂直轴,请单击范围图工具栏中的垂直缩放按钮。
输出响应类似于UD_reject响应,但沉降时间约长1秒。不同的结果是由于不匹配的线性植物之间使用MPC设计师仿真和Simulink中的非线性植物模型。万博1manbetx
模拟实测扰动抑制
为了模拟测量的干扰抑制,首先返回进料浓度块的标称值10
.
为了模拟进料温度在零时的阶跃变化,打开进料温度块并增加其恒定值参数从300
来310
.
运行模拟,然后缩放图的垂直轴。
输出响应类似于MD_reject来自MPC设计师模拟。