matlab中ode45函数的用法 matlab求解微分方程组例题( 二 )


2CSTR过程仿真控制研究
2.1控制算法
本实验采用基于四阶五级RungeKutta的PID控制算法 。四阶五级RungeKutta算法是一种求解微分方程近似解的数值方法 , 实际上是间接使用泰勒级数法的一种计算方法 。该算法精度高 , 能对误差进行抑制 。在区间[k,k+d]上用y(k)的值来估算或预测y(k+d)的值,得到预测值(k+d) , 将此预测值作为反馈信号与期望设定值进行比较得出偏差 , 作为PID控制的输入 , 依照PID控制律来设定控制器的输出 , 完成对被控对象的控制 。
MATLAB中的ode函数专门用于求解微分方程 , 而ode45表示采用四阶五级Runge-Kutta算法 , 它用四阶方法提供候选解 , 五阶方法控制误差 , 是一种自适应步长(变步长)的常微分方程数值解法 , 本实验M文件中就采用ode45求解微分方程 。
首先确定仿真的采样时间、起止时间以及每一步模型仿真的时间区间 , 并为龙格库塔算法设定初始值 。
然后初始化PID控制器 , 并设定PID参数和设定值 。经过PID参数的调整 , 得到Kc=0.03;Ti=4;Td=0.05 。
最后运用循环语句的形式编写基于四阶五级RungeKutta法的PID控制算法 。
2.2添加扰动
为模拟真实现场控制系统环境 , 这里需要添加3个扰动:物质A进料流量(QIn)扰动 , 反应器入口温度扰动(To) , 物质A进料浓度扰动(Ca0) 。
2.3控制结果
将初始值设为y0=[0;1;80.7] , 在控制系统的作用下最终达到稳定 , 如图2所示 。
上排从左至右分别表示反应器物质A浓度(被控变量) , 反应器物质B的浓度和反应器温度 , 即3个状态变量 。下排从左至右分别表示冷却剂的温度(操纵变量)和控制误差(即控制器的输入) 。可发现由于加了积分作用 , 控制系统的余差为0 , 并且控制效果较好 。
3GUI界面的设计
为了能够实时改变控制系统模型的参数 , 在程序运行过程中添加扰动 , 并使被控对象及状态变量的控制结果动态显示 , 需要添加一个GUI界面来实现这些功能 。
首先在命令窗口中键入guide , GUIDE实际上是一套MATLAB工具箱[3] 。启动GUIDE后 , 会出现GUIDE Quick Start 对话框 , 选择新建一个GUI界面 , 这里选用GUI with Axes and Menu模板 , 点击OK后进入版面设计窗口 。利用窗口左侧的工具箱可以选择需要添加的组件 , 用来输入扰动和采样时间 , 同时显示控制系统变量的数值和曲线 。完成版面设计后 , 以CSTR_GUI文件名保存 , 此时设计内容会保存在两个文件中 , 一个是FIG文件 , 一个是M文件 。GUI界面设计如图3所示 。
然后打开M文件CSTR_GUI.M , 对GUI进行编程 。设置并启动0.2 s定时器 , 
另外 , 需要编写定时器中断响应函数TimerCallback , 里面包含对界面扰动参数和采样时间的读取 , 同时实现对GUI人机界面中变量值的更新 。
4CSTR模型控制结果
设定初始值:反应器中物质A的浓度CA=2.14 mol/L , 反应器中B的浓度CB=1.05 mol/L , 反应器温度T=80.7 ℃ , 即y0=[2.14;1.05;80.7] 。
在无扰动的情况下 , 控制结果如图4 。
此时PID参数为Kc=0.03 , Ti=4 s , Td=0.05 s , 从反应器中物料A浓度曲线来看 , 控制作用响应速度快 , 超调小 , 且没有稳态误差 , 控制效果较好 。由于CSTR模型控制系统是完全用MATLAB进行仿真的 , 曲线平稳之后没有出现任何波动 , 这与实际现场控制状况不太相同 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: