使用MPC设计控制器

article/2025/11/9 10:50:44

这个例子展示了如何使用MPC设计器设计连续搅拌釜式反应器(CSTR)的模型预测控制器。

 

一、 CSTR 模型

    下面的微分方程表示了涉及放热反应的连续搅拌釜式反应器(CSTR)的线性化模型:

                                                        

    其中

    输入为 :

        CAi -料流中试剂A浓度(kgmol/m3)

        Tc -反应堆冷却剂温度(℃)

    输出为:

         T -反应堆温度(℃)

         CA -产品流中试剂A残留浓度(kgmol/m3)

    质数项,如C 'A,表示偏离模型线性化时的名义稳态条件。

                                                                 

   试剂浓度的测定常常很困难。对于本例,假设:

            —— Tc是一个被操纵的变量。

            —— CAi是一种不可测的扰动。

            —— T是一个测量的输出。

            —— CA是一个未测量的输出。

 

该模型用状态方程描述为

                                                                 

                                                          

 

   在这个例子中,冷却剂的温度从标称值开始有一个有限的±10度的范围,并且每个样品周期的变化速率为±4度。

   创建CSTR系统的状态空间模型:

A = [-0.0285 -0.0014; -0.0371 -0.1476];
B = [-0.0850 0.0238; 0.0802 0.4462];
C = [0 1; 1 0];
D = zeros(2,2);
CSTR = ss(A,B,C,D);

 

 

二、导入平台并定义MPC结构

mpcDesigner

在  MPC Designer 选项卡的 Structure 部分中,单击 MPC Structure 

在  Select a plant model or an MPC controller 中,选择CSTR模型。

由于CSTR是一个稳定的连续时间LTI系统,MPC设计器将控制器采样时间设置为0.1 Tr,其中Tr为CSTR的平均上升时间。对于本例,在指定MPC控制器采样时间字段中,输入采样时间为1。

默认情况下,所有工厂输入都定义为操作变量,所有工厂输出都定义为测量输出。在  Assign plant i/o channels 部分,指定输入和输出通道指数,例如:

—— 第一个输入,冷却剂温度,是一个控制变量。

—— 第二个输入,饲料浓度,是一个无法测量的干扰。

—— 第一个输出,反应堆温度,是一个测量的输出。

—— 第二个输出,反应物浓度,是一个未测量的输出。

                               

单击Define and Import

应用程序将CSTR植物导入Data Browser。以下资料亦已加入Data Browser:

      mpc1       —— 使用sys作为内部模型创建的默认MPC控制器。

    scenario1 —— 默认模拟场景。

应用程序运行默认的模拟场景,并更新输入响应和输出响应图。

一旦定义了MPC结构,就不能在当前MPC设计器会话中更改它。要使用不同的通道配置,请启动应用程序的新会话。

 

三、定义输入和输出通道属性

在 MPC Designer 选项卡上,选择 I/O Attributes.。

在“输入和输出通道规范”对话框的“名称”列中,为每个输入和输出通道指定一个有意义的名称。

在单位列中,可以选择为每个通道指定单位。

由于状态空间模型是使用与标称工作点的偏差来定义的,因此将每个输入和输出通道的标称值设置为0。

将每个通道的比例因子 Scale Factor 保持为默认值1。

                            

点击OK.

输入响应和输出响应图标签更新以反映新的信号名称和单元。

 

四、配置模拟场景

        在  MPC Designer 选项卡的 Scenario 部分中,单击Edit Scenario > scenario1.。

        在  Simulation duration  对话框中,将模拟持续时间增加到30秒。

        在 Reference Signals  表中,在第一行中,指定步长为2,时间为5。

        在 Signal 列的第二行中,选择一个常量引用以将浓度设定值保持在标称值。

                              

默认的场景被配置为模拟反应器温度T在5秒内发生2度的台阶变化。

单击OK

响应图更新以反映新的模拟场景配置。

在 Data Browser 的  Scenarios 部分中,双击 Scenario1,并将该场景重命名为stepT

 

五、配置控制器范围

      在 Tuning 选项卡的 Horizon 部分中,指定预测层 Prediction horizon  为15,控制层 Control horizon 为3。

响应图更新以反映新视野。输入响应曲线显示,被操纵变量的控制行为违反了所需的冷却剂温度约束。

 

六、定义输入约束

   在  Design 部分中,单击 Constraints 

   在 Constraints 对话框中,在“输入约束”部分,分别在“最小”列和“最大”列中输入冷却剂温度上限和下限。

  指定 RateMin 和 RateMax 列中的更改速率限制。

                                       

    点击OK

        输入响应图显示了受约束的操作变量控制操作。即使有约束的变化率,冷却剂温度也会在三个控制区间内迅速上升到其最大限度。

 

七、指定控制器调谐权值

       在  Tuning  选项卡的 Design 部分,单击 Weights

       在输入权值表  Input Weights 中,将操作变量(MV)的速率权值 Rate Weight 增加到0.3。增加MV速率权值会惩罚控制器优化成本函数中MV的较大变化。

       在Output Weights表中,保留默认的权重值。默认情况下,所有未度量的输出都没有权值。

       由于只有一个被操纵的变量,如果控制器试图在特定的设定值处保持两个输出,一个或两个输出的响应将显示稳态误差。由于控制器忽略了重量为零的输出的设定值,因此将浓度输出重量设置为零允许反应器温度设定值跟踪,稳态误差为零。

                                        

        点击OK

       输入响应图显示了更保守的控制操作,这会导致更慢的输出响应。

 

八、消除输出超调

        假设应用程序在输出响应中要求零超调。在“Performance Tuning 选项卡上,将闭环性能滑块

Closed-Loop-Performance 向左拖动,直到输出响应 Output Response 没有超调。将这个滑块向左移动,同时增加了控制器

的操纵变量速率权值,并减少了输出变量权值,从而产生一个更健壮的控制器。

 

      当您使用闭环性能滑块调整控制器 Closed-Loop Performance 调优权重时,MPC设计器不会更改您在权重对话框中指定的权重。相反,滑块控制一个调整因子,该调整因子与用户指定的权重一起用于定义实际的控制器权重。

      当滑块居中时,这个因子为1;它的值随滑块向左移动而减小,随滑块向右移动而增大。权重因子乘以操作变量和输出变量权重, 并从weights对话框中除操作变量速率权重。

     若要查看实际控制器权重,请将控制器导出到MATLAB®工作区,并查看导出控制器对象的权重属性。

 

九、测试控制器干扰抑制

 

     在过程控制应用中,干扰抑制往往比设定值跟踪更为重要。模拟控制器对进料浓度未测扰动的阶跃变化的响应。

     在MPC Designer选项卡的Scenario部分,单击Plot Scenario > New Scenario

     在“模拟场景”对话框中,将模拟持续时间 Simulation duration 设置为30秒。

     在未测量扰动表 nmeasured Disturbances 中,在信号下拉列表中,选择 Step

     在时间列中,指定一个5秒的步骤时间。

                             

       点击OK

      该应用程序向数据浏览器添加了新的场景,并创建了相应的输入响应和输出响应图。

      在数据浏览器 Data Browser  scenarios 部分中,双击 NewScenario,并将其重命名为distReject

                               

      在输出响应图中,控制器将反应器温度T返回到预期的接近其设定值的值。然而,所需的控制措施会导致输出浓度CA增加到6 kgmol/m3。

 

十、指定浓度输出约束

        在此之前,您定义了控制器调优权值,以实现以零稳态误差跟踪反应器温度设定值的主要控制目标。这样做可以使未测量的反应堆浓度自由变化。假设当反应器浓度超过3 kgmol/m3时发生了不需要的反应。若要限制反应器浓度,请指定输出约束。

       在 Tuning 选项卡的 Design 部分中,单击 Constraints 

       在Constraints对话框中,在Output Constraints部分,表的第二行,指定一个最大的unmeasured Output (UO)值为3。

       在 Output Constraints 部分,单击Constraint Softening Settings. 。

       默认情况下,所有输出约束都是软约束,这意味着它们的MinECR和MaxECR值都大于零。为了进一步软化未测量输出(UO)约束,增加其MaxECR值。

                                        

 

      点击OK

       在输出响应曲线中,当反应器浓度CA接近3 kgmol/m3时,反应器温度T开始升高。由于只有一个被操纵变量,控制器在两个相互竞争的控制目标之间做出了妥协:温度控制和约束满足。一个较软的输出约束使得控制器能够牺牲更多的约束要求来实现改进的温度跟踪。

       由于输出约束是软的,控制器通过允许一个小的浓度约束违反来保持足够的温度控制。通常,根据你的应用程序需求,您可以尝试不同的约束设置,以实现可接受的控制目标折衷。

 

十一、导出控制器

        在 Tuning 选项卡的 Analysis 部分,单击 Export Controller 将调优后的控制器mpc1保存到MATLAB工作区。

 

十二、删除平台、控制器和场景

 

      要删除 Data Browser,中的工厂、控制器或场景,右键单击要删除的项,然后选择 Delete。您还可以单击该项并在键盘上单击Delete

    不能删除当前控制器。此外,如果一个平台或场景是唯一列出的平台或场景,则不能删除它。

    如果某个设备被任何控制器或场景使用,则不能删除该设备。

    若要删除多个平台、控制器或场景,按住Shift并单击要删除的每个项。


http://chatgpt.dhexx.cn/article/NAyMoRF7.shtml

相关文章

MPC(模型预测控制)控制小车沿轨迹移动——C++实现

任务说明 要求如下图所示,给定一条轨迹,要求控制小车沿这条轨迹移动,同时可以适用于系统带有延时的情况。注意,本篇文章只给出部分C代码参考。 主要流程 首先用运动学自行车模型(Kinematic Bicycle Model&#xff09…

mpc模型预测控制原理详解

mpc模型预测控制原理详解 前言mpc算法步骤mpc算法推导 前言 本文是对mpc模型预测控制学习的记录,主要参照了DR_CAN老师的视频进行学习。视频专栏链接:DR_CAN老师mpc视频专栏。在这篇博客中博主也针对DR_CAN老师的讲解做了详尽的笔记和代码实现。读者可以…

模型预测控制(MPC)解析(一):模型

一、MPC简介 1.1 预测控制的日常应用 模型预测控制的设计目标是计算未来控制变量u的轨迹,以优化未来的系统输出y。优化过程在一个有限的时间窗口进行,并且利用优化时间窗口开始时的系统信息进行优化。为了理解预测控制的基本思想,以一个日常…

MPC控制

基于状态空间模型的控制 模型预测控制(MPC)简介 对基于状态空间模型的控制理解得很到位 在这里我重点讲解一下状态空间模型。那么什么是状态?输出是不是也是状态的一种?对的,输出也是一种状态&#…

MPC模型预测控制

这篇主要讲一下模型预测控制,如果对PID控制了解的同学,那效果更好。如果不了解PID控制,还是熟悉下比较好。 模型预测控制,顾名思义,基于模型,预测未来,进行控制。这个控制是基于模型的&#xf…

模型预测控制(MPC)简介

1.引言 在当今过程控制中,PID当然是用的最多的控制方法,但MPC也超过了10%的占有率。MPC是一个总称,有着各种各样的算法。其动态矩阵控制(DMC)是代表作。DMC采用的是系统的阶跃响应曲线,其突出的特点是解决…

模型预测控制算法(MPC算法)底层逻辑

目录 MPC算法的基本原理 详细解析 预测模型中需要注意的点 滚动优化需要注意的点 构造目标函数约束部分 约束部分 举例说明 复盘总结 MPC算法的基本原理 MPC 的基本原理可以分为三个步骤:预测模型、滚动优化、反馈校正 (1)预测模型…

模型预测控制(MPC)算法原理

模型预测算法是在欧美等国家兴起的应用于工业领域的一种优化控制算法。目前经过多年的发展,在工业领域、智能控制领域等都有应用。随着算法的理论的完善,其已经成为工业领域内经常使用的一种经典算法。虽然在各个领域算法的应用存在差异。但他们都遵循预…

到底什么是模型预测控制MPC(一)

1. 为什么使用MPC控制 在浏览文章的时候,很多文章都是基于MPC来做的。那么究竟什么是模型预测呢? 模型预测也可以说是一种我们熟悉的反馈控制算法,其目的就是预测出未来的输出。以一个生活中的例子引入: 在我们驾驶汽车的时候&am…

MPC控制笔记(一)

转自 我的博客 笔记参考1:Understanding Model Predictive Control(Youtube 带自动生成字幕) 笔记参考2:Understanding Model Predictive Control(B站 生肉) 一、什么是MPC模型预测控制 MPC(Model Predict Control)是一种反馈控制(feedback control)算…

PID与MPC控制方法

记录udacity–无人驾驶工程师课程中控制部分。 MPC代码和实践链接https://github.com/udacity/CarND-MPC-Quizzes 本文按照对udacity课程的理解和翻译而来 1、PID P:Proportional 比例项, 用比例项乘以误差;快速缩小误差; I&…

了解模型预测控制2--什么是模型预测控制(MPC)

本节,我们将讨论模型预测控制器的工作原理。 在控制问题中,控制器的目标是计算被控对象的输入,使得被控对象输出遵循期望的参考信号。模型预测控制器计算此输入的策略是预测未来。 这听起来像算命,但让我们看看它究竟是什么。MPC使…

模型预测控制(MPC,Model Predictive Control)

发展历史 20世纪70年代后期,一类新型的计算机控制算法出现在美法等国的工业过程领域,如动态矩阵控制(DMC,Dynamic Matrix Control)、模型算法控制(MAC,Model Algorithm Control)。1987年,首次有学者阐述了该系列算法的动因、机理及其在控制工…

MPC学习笔记(1)——原理

最近在学习M. W. Mehrez的MPC时发现了很多不了解的细节,分享一下对该算法的梳理与理解。 在自动驾驶或机器人领域中,模型预测控制(Model Predictive Control, MPC)解决的是轨迹规划的问题。其前提条件是环境地图、载体位姿已知,根据MPC算法&…

MPC 控制原理

MPC 控制原理 1 生活中的启示2 实际控制的例子参考文献 Yin 机械工程师 本文引自 一个模型预测控制(MPC)的简单实现. 1 生活中的启示 情景如下:你们团队每天早晨开一次例会,主要会议内容是你汇报工作进度,领导根据工作…

EA建模工具,介绍常用的UML图

[导读] 作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有…

uml c语言函数流程图,UML流程图模板分享

原标题:UML流程图模板分享 UML是统一建模语言,又称标准建模语言是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。在流程图中也会经常使用到,但是网上关于该主题的模板不是很多,下面是分…

软技能之UML图

软技能之UML图 工欲善其事必先利其器,程序员建模过程中需要用到的建模工具UML。 UML:Unified Modeling Language 统一建模语言。目标是以对象图的方式来描述任何类型的系统。 UML可分为两类:结构型(描述某种结构)、行…

生成C++工程的UML类图和类继承关系图

简介 在进行软件开发时,了解代码结构和关系、类之间的继承关系以及类内部的成员函数和变量定义是非常重要的。为此,我们可以使用Doxygen和Graphviz工具来生成UML类图和类集成关系图。 Doxygen是一个用于从注释的C源代码中生成文档的工具,支…

Ubuntu系统画大型UML图

一、 环境配置 1. 配置java环境(请自行查找教程) 2. 安装graphviz sudo apt install graphviz 3. 下载plantuml.jar 下载页面 下载好以后,我将其放在了~/bin/目录下面 4. 配置alias export PLANTUML_JAR_PATH~/bin/ export PLANTUML_LIM…