设计MPC控制器动态仿真模块
本实例介绍了如何在Simulink中设计连续搅拌式反应器(CSTR)的模型预测控制器®使用MPC设计师.
这个例子需要仿真软件控制设计™通过线性化非线性Simulink模型来定义MPC结构的软件。
如果你没有仿真软件控制设计软件方面,你必须先创建一个货币政策委员会
对象。®工作区。有关更多信息,请参见使用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,通常是测量的。然而,对于这个例子,忽略反应堆温度,并假设剩余浓度是直接测量的。
打开Simulink模型。
open_system (“CSTR_ClosedLoop”)
连接测量干扰信号
在Simulink模型窗口中,双击MPC控制器块。
在“块参数”对话框中,单击一般选项卡中,选择测量扰动(md)复选框。
点击应用添加医学博士
控制器块的输入端口。
在Simulink模型窗口中,连接进料温度块输出到医学博士
输入端口。
线性化模型模型
在本例中,您从内部线性化Simulink模型MPC设计师,这就需要仿真软件控制设计软件有关更多信息,请参见使用MPC设计器线性化Simulink模型.
如果你没有仿真软件控制设计软件方面,你必须先创建一个货币政策委员会
对象,并在MPC控制器块。
打开MPC设计师,打开MPC控制器块,然后单击设计.
在MPC设计师,在MPC设计师选项卡,结构部分中,点击MPC结构.
在“通过线性化定义MPC结构”对话框中,在控制器样品时间节,指定采样时间0.1
.
在MPC结构部分中,点击改变I / O大小将未测扰动和实测扰动信号维数相加。
在MPC块信号大小对话框中,指定每种类型的输入/输出通道的数量。
点击好吧.
在“通过线性化定义MPC结构”对话框中,在植物输入的Simulink信号部分,应用程序为其添加一行无边无际的干扰(UD).
被操纵的变量、被测量的扰动和被测量的输出已经被分配到各自的Simulink信号线,这些信号线连接到MPC控制器块。
在植物输入的Simulink信号部分中,选择无边无际的干扰(UD)行,然后单击选择信号.
在Simulink模型窗口中,单击输出信号进料浓度块。
信号被高亮显示,它的块路径被添加到选择MPC输入通道的信号对话框中。
在“选择MPC输入通道信号”对话框中,单击好吧.
在“通过线性化定义MPC结构”对话框中,在植物输入的Simulink信号表,块路径对未测干扰信号进行更新。
在本例中,将Simulink模型线性化到稳态平衡工作点,其中残留浓度为2 kmol/m3..要计算这样的操作点,添加CA
信号作为修剪输出约束,并指定其目标约束值。
在Simulink模型窗口中,选择连接到的信号线CA
接口的输出端口装运箱块。
在应用程序选项卡上,单击线性化管理.然后,在线性化选项卡,插入分析点画廊,下修剪部分中,选择削减产出约束.
的CA
信号现在可以用来定义计算模型稳态工作点的输出规格。
在“通过线性化定义MPC结构”对话框中,在仿真软件的操作点的部分,创建下拉列表中,选择调整模型.
在“修剪模型”对话框中,在输出选项卡中的复选框已知的列频道- 1
并指定一个价值的2
.
该设置将操作点搜索期间的输出信号的值限制为已知值。
点击开始削减.
控件中指定的特征在模型的状态输入空间中找到一个点的优化进展州,输入,输出选项卡。在优化过程结束后,关闭修剪进度窗口以及修剪模型对话框。
在“通过线性化定义MPC结构”对话框中,在仿真软件的操作点截面,计算运算点,op_trim1 (MPC_OP_Workspace)
,被添加到下拉列表中并选中。
在仿真软件的操作点部分中,点击编辑.
在“编辑”对话框中,在状态选项卡,实际dx列中,接近零的导数值表示计算的工作点处于稳态。
将Simulink模型的初始状态设置为实际值列,单击初始化模型.这样做可以使您稍后在计算的操作点而不是默认的模型初始条件上模拟Simulink模型。
在“初始化模型”对话框中,单击好吧.
在设置模型初始条件时,MPC设计师导出操作点到MATLAB工作区。此外,在“Simulink配置参数”对话框中,在数据导入/导出部分,它选择输入而且初始状态参数并配置它们以使用导出操作点中的状态和输入。
要重置模型初始条件,例如,如果您删除导出的操作点,请清除输入而且初始状态参数。
关闭编辑对话框。
在“通过线性化定义MPC结构”对话框中,将Simulink模型线性化,并将线性化的模型导入MPC设计师通过点击进口.
在左侧的数据浏览器部分,应用程序添加了以下项目。
线性化和离散化的植物模型
植物
默认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:输出地块位于较低的地块区域。
优化控制器性能
在调优选项卡,地平线节中,指定一个预测地平线的20.
和一个控制层的5
.
的输出响应根据新的视界值更新地块。
使用默认的控制器约束和权重配置。
在性能调优部分,拖闭环性能滑块向右,这导致更严格的控制输出和更积极的控制动作。拖动滑块直到MD_reject:输出响应在3秒内达到稳定状态。
拖动状态估计向右滑动,导致更积极的未测干扰抑制。拖动滑块直到UD_reject:输出响应在3秒内达到稳定状态。
更新动态仿真模块带有调优控制器的模型
在分析部分中,选择出口控制器>只更新块.应用程序导出调优控制器mpc1
到MATLAB工作空间。在Simulink模型中,MPC控制器块被更新以使用导出的控制器。
模拟未测干扰抑制
在Simulink模型窗口中,在模拟选项卡中,改变停止时间来5
秒。
模型初始条件设置为用于线性化的标称工作点。
若要模拟零时进料浓度的单位步长,请打开进料浓度阻塞并增加其恒定值参数从10
来11
.
在Simulink模型窗口中,打开浓度范围和运行模拟。若要缩放图的垂直轴,请单击范围图工具栏中的垂直缩放按钮。
的输出响应类似于UD_reject响应,然而,沉淀时间大约多1秒。不同的结果是由于使用的线性植物之间的不匹配MPC设计师仿真和Simulink模型中的非线性植物。
模拟实测扰动抑制
为了模拟测量的干扰抑制,首先返回进料浓度块的标称价值10
.
为了模拟在时间零点时进料温度的阶跃变化,打开进料温度阻塞并增加其恒定值参数从300
来310
.
运行模拟,然后按比例缩放绘图垂直轴。
的输出响应类似于MD_reject的反应MPC设计师模拟。