首页 > 其他分享 >m厌氧间歇发酵动态控制系统matlab仿真,对比PID控制和MPC控制

m厌氧间歇发酵动态控制系统matlab仿真,对比PID控制和MPC控制

时间:2023-04-20 23:25:24浏览次数:45  
标签:厌氧 控制器 MPC 控制 PID ts 浓度

1.算法描述

        生物发酵过程,其中稀释速率和供料基质浓度可作为操作变量。出口的细胞浓度或生物浓度、基质浓度以及产品浓度是过程的状态变量。例如在生产酒精的发酵过程中,是酵母浓度,是葡萄糖浓度,而是乙醇浓度。假设发酵培养基是单一均相生长的有机体,则广泛采用的非构造化模型较适用于非线性控制器的设计,其模型为

 

 

 

 

      这个连续发酵过程的控制目标是单位时间内生成产品细胞的数量。实际生产中,发酵罐出口物料中,酵母细胞量与基质含量和产品相比可以忽略,故控制目标可表示为

 

 

 

        PID控制器,即控制器的控制方式为P比例调整,I积分调整以及D微分调整三个部分构成,PID控制器是目前为止应用最为广泛的控制方式。PID控制器具有结构简单,性能稳定,参数设置简单等优势。PID控制器适用于各种控制对象无法进行测量获得系统参数的情况,其根据控制对象的输出和参考控制变量的输入差进行实时的调整实现对未知参数控制对象的有效控制。PID控制器由比例调整模块,积分调整模块以及微分调整模块三个部分构成,那么其输入的误差信号e(t)与输出u(t)的关系为公式6:

 

 

 

 

       MPC(Model Predictive Control),又称RHC, Receding Horizon Control,是一种进阶过程控制方法,自1980年以来开始在化工炼油等过程工业得到应用,并在经济领域开始得到应用。

 

MPC是一种多变量控制策略,其中涉及了:

 

       过程内环动态模型;控制量的历史数值;在预测区间上的一个最优值方程J。最优控制量可由以上各量求出。

 

       MPC最大的特点在于,相对于LQR控制而言,MPC可以考虑空间状态变量的各种约束,而LQR,PID等控制只能够考虑输入输出变量的各种约束。

 

MPC可应用于线性和非线性系统。

 

  在当今过程控制中,PID当然是用的最多的控制方法,但MPC也超过了10%的占有率。MPC是一个总称,有着各种各样的算法。其动态矩阵控制(DMC)是代表作。DMC采用的是系统的阶跃响应曲线,其突出的特点是解决了约束控制问题。那么是DMC是怎么解决约束的呢?在这里只给出宏观的解释,而不做详细的说明。DMC把线性规划和控制问题结合起来,用线性规划解决输出约束的问题,同时解决了静态最优的问题,一石二鸟,在工业界取得了极大的成功。

 

  MPC作用机理描述为:在每一个采用时刻,根据获得的当前测量信息,在线求解一个有限时间开环优化问题,并将得到的控制序列的第一个元素作用于被控对象。在下一个采样时刻,重复上述过程:用新的测量值作为此时预测系统未来动态的初始条件,刷新优化问题并重新求解 。

即MPC算法包括三个步骤:

(1)预测系统未来动态;

(2)(数值)求解开环优化问题;

(3)将优化解的第一个元素(或者说第一部分)作用于系统

  这三步是在每个采样时刻重复进行的,且无论采用什么样的模型,每个采样时刻得到的测量值都作为当前时刻预测系统未来动态的初始条件

  在线求解开环优化问题获得开环优化序列是MPC和传统控制方法的主要区别,因为后者通常是离线求解一个反馈控制律,并将得到的反馈控制律一直作用于系统。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

3.MATLAB核心程序

 

%发酵模型
%已知初始浓度
X0 = 0.0005; 
S0 = 0.1; 
P0 = 0;
 
 
[RX,RS,RP] = model_of_fj(X0,S0,P0);
 
 
%采样时间
ts=20
%PID的控制变量
kp=1;
ki=0.05;
kd=0.3;
 
%原系统离散化
sysc=tf([1],[60 1],'inputdelay',80);
sysd=c2d(sysc,ts,'zoh');
%得到需要的离散系统参数
[num,den]=tfdata(sysd,'v');
%PID仿真参数设定
u1=0;
u2=0;
u3=0;
u4=0;
u5=0;
 
y1=0;
y2=0;
y3=0;
e1=0;
e2=0;
es=0; 
%开始PID仿真
for k=1:500
    t(k)=k*ts;
    y(k)=-den(2)*y1+num(2)*u5;
    r(k)=1;
    e(k)=r(k)-y(k);
    es=es+e(k)*ts;
    %PID Control
    u(k)=kp*e(k)+kd*(e(k)-e1)/ts+ki*es;
    if u(k)>5
        u(k)=5;
    elseif u(k)<-5
        u(k)=-5;
    end
    u5=u4;
    u4=u3;
    u3=u2;
    u2=u1;
    u1=u(k); 
    
    e2=e1;
    e1=e(k);
end
 
%DMC仿真
%建立离散的系统
gmpc=poly2tfd([1],[60 1],0,80);
%系统阶跃响应的时间
tend=20000;
mymodel=tfd2step(tend,ts,1,gmpc);
%MPC参数设定
P=5;
M=3;
ywt=[];
uwt=[1];
rmpc=[1];
%系统的仿真时间设定
tend=10000;
%建立MPC的系数矩阵
mpcM=mpccon(mymodel,ywt,uwt,M,P);
%MPC仿真
[ympc,umpc,ymmpc]=mpcsim(mymodel,mymodel,mpcM,tend,rmpc);
%MPC控制绘图

 

  

 

标签:厌氧,控制器,MPC,控制,PID,ts,浓度
From: https://www.cnblogs.com/51matlab/p/17338728.html

相关文章

  • Day 25 25.1 Scrapy框架之全站爬虫(CrawlSpider)
    Scrapy框架之全站爬虫(CrawlSpider)在之前Scrapy的基本使用当中,spider如果要重新发送请求的话,就需要自己解析页面,然后发送请求。而CrawlSpider则可以通过设置url条件自动发送请求。LinkExtractorsCrawlSpider是Spider的一个派生类。CrawlSpider与spider不同......
  • 功能强大的JavaScript引擎--SpiderMonkey
    JavaScript在浏览器中的应用几乎是尽人皆知的。实际上,JavaScript技术也可以使用在非浏览器应用程序当中,从而让应用程序具有自动的脚本功能。本文介绍了一种功能非常强大的JavaScript引擎SpiderMonkey。这个引擎是Mozilla浏览器的JavaScript引擎。该引擎接口定......
  • 基于MPC的三相变流器设计及仿真,仿真平台基于MATLAB Simulink搭建
    基于MPC的三相变流器设计及仿真,仿真平台基于MATLABSimulink搭建。内含仿真文件,源代码,设计文档,仿真图。设计文档包括建模,各部分仿真模块设计,控制算法详解。ID:65335674963764486......
  • 基于神经网络的自适应PID控制器 通过将RBF(BP)神经网络和PID控制器相结合
    基于神经网络的自适应PID控制器通过将RBF(BP)神经网络和PID控制器相结合,建立了神经网络PID控制器,采用传递函数进行系统建模,通过自动调整PID参数,实现了对方波信号的跟踪。程序有注释YID:5650652300828715......
  • MATLAB代码:基于模型预测算法的含储能微网双层能量管理模型 模型预测控制 MPC
    MATLAB代码:基于模型预测算法的含储能微网双层能量管理模型   模型预测控制 MPC关键词:储能优化模型预测控制MPC微网优化调度能量管理 参考文档:《ATwo-layerEnergyManagementSystemforMicrogridswithHybridEnergyStorageconsideringDegradationCosts》完......
  • Spider爬虫
    爬虫Spider该爬虫分为两部分,分别为Spider.py和model.pySpider.py该文件主要业务逻辑是调用Selenium来通过自动化测试的方法实现模拟人的行为来对网页进行请求,并将请求到的HTML提取为文本,为后续的数据抽取做铺地。需要的第三方工具包Selenium,scrapy,timespider.py具体实现fr......
  • 基于mpc的日前日内微网共享储能优化调度 日前优化部分&mdash;&mdash;该程序首先根据《
    基于mpc的日前日内微网共享储能优化调度日前优化部分——该程序首先根据《电力系统云储能研究框架与基础模型》上面类似方法,首先根据每个居民的实际需要得到响应储能充放电功率,然后优化得到整体的储能充放电功率情况。日内滚动mpc跟踪部分——采用《基于MPC的微电网并网优化调度......
  • Pid、Uid、Tid
    一.Pidprocess 进程id,一个pid对应一个进程,每次杀死进程,再重新启动程序,系统都会赋予一个新的pid,一般情况下一个应用程序对应一个pid,但一个应用程序也可以有多个pid二.Uid用户id,如果你是root,那么你的uid就是0,0为最高权限,可以通过pid找到这个进程的uid,每个不同的应用程序都有一......
  • 基于模型预测控制(mpc)的车辆换道,车辆轨迹跟踪,换道轨迹为五次多项式
    基于模型预测控制(mpc)的车辆换道,车辆轨迹跟踪,换道轨迹为五次多项式,matlab与carsim联防控制YID:1550680497837661......
  • windows-根据进程名获取进程pid,定时监控多个进程性能并写入csv文件
    #!/usr/bin/python#-*-coding:utf-8-*-importsysimporttimeimportpsutildefget_pid(name):pids=psutil.process_iter()forpidinpids:if(pid.name()==name):return(pid.pid)defwrite_csv(p,pidnum,pidname):cu......