基于模糊控制和PID结合的简单倒立摆系统MATLAB仿真

目录

 

1 倒立摆小车模型搭建

2倒立摆传递函数模型实现

3 控制系统仿真设计

3.1 仿真模型

3.2 控制系统搭建过程

3.2.1 PID控制器设计

3.2.2 模糊PID控制器设计


1 倒立摆小车模型搭建

倒立摆小车模型参考了《MATLAB建模与仿真》一书中的P342,主要参数为M=0.98kg、m=0.4kg、b=0.15N/(m.s)、I=0.005kg.m2、l=0.4m、g=9.8N/kg.其具体含义如图1-1所示。

            1-1倒立摆小车模型

通过模型看到,当摆杆夹角远远小于1弧度时,可以进行近似处理,从而令cosθ=-1sinθ=-φdt2=0

可得微分方程如图1-2所示。

1.2倒立摆小车微分方程

然后可以建立起以摆杆角度为输出量,给予小车的推力为输入量的传递函数模型,如图1-3所示

1-3倒立摆小车传递函数模型

2倒立摆传递函数模型实现

我采用的是MATLAB R2017b,通过脚本文件编写了GetPendulum函数,输入小车质量,摆杆质量和摆杆长度即可得到倒立摆的传递函数。具体的代码如图2-1所示,调用过程如图2-2所示。

2-1 GetPendulum函数代码

 

2-2 GetPendulum函数调用

3 控制系统仿真设计

3.1 仿真模型

基于模糊调参的PID倒立摆控制系统仿真模型如图3-1所示,其中红色框部分为模糊控制和可调参数的PID控制,蓝框部分为单一的PID控制,通过一个阶跃信号产生扰动,可以在二种控制方案之间进行对比实验,这里的模糊控制器选用带Ruleviewer功能的模块,可以在仿真时看到控制规律。同时也方便后面对规则进行调试更改。

3-1 基于模糊调参的PID倒立摆控制系统

3.2 控制系统搭建过程

3.2.1 PID控制器设计

3-2 PID控制器参数
3-2 PID控制下的输出响应

3.2.2 模糊PID控制器设计

3-3 新建模糊控制规则

在命令行输入fuzzy即可打开模糊控制器的规则设置界面,如图3-3所示,我们可以在这里创建输入变量,输出变量和规则库。我选择的是第一个,Mamdani类型,然后可以开始控制器的设计。

3-4 控制器基本设置

如图3-4所示,为控制器的基本设置,输入变量有两个,一个是摆杆角度,一个是角度的变化率,输出变量为三个,分别对应PID的三个参数,左侧可以看到去模糊化的方法为重心法。中间就是我们的规则库。点击可以进入详细的配置界面,各变量具体设置如下图所示:

3-5 输入变量基本设置

如图3-5所示,左侧为角度变量的取值范围和隶属度函数,右侧为角度对应时间的变化率,这里我的范围规定都是-5到5之间,隶属度函数是三角形,实际使用时要根据输入量的具体情况,串入一个Gain模块,设置我们的比例因子,使输入范围在设置值之间。  

3-6 输出变量基本设置

输出变量的设置如图3-6所示,同样采用三角形隶属度函数,P的范围设置为110-120,I的范围设置为115-125,D的范围设置为80-90,通过不同的输入值,可以相应选择不同的PID参数。点击图3-4中间的模块可以进入规则库编辑界面,如图3-7所示,可见,当角度和角度变化率都在mf2这个位置时,PID三个参数输出为mf2,按照这样的方式,建立起完整的规则库。

3-7 规则库的基本设置

 

3-8 建好的规则库

4 仿真结果与分析

4-1 模糊控制状态实时预览

如图4-1所示,可以在仿真过程中实时预览输入输出量,很直观的看到隶属度函数是如何对整个模糊空间进行切割的,又是如何根据重心法得出精确解的。

如图4-2所示,为阶跃输出响应曲线,其中红色表示PID控制曲线,黑色表示模糊控制和PID结合的控制曲线,通过图可以看到,PID有很大的超调量,但趋于稳定的速度更快,模糊控制曲线更为平缓,且比PID控制更接近稳定值。

当采用随机信号发生器作为干扰的激励源时,其响应曲线如图4-3所示,可以看到,传统的PID控制器基本已经失效了,完全随着激励而变化,但黑色线代表的模糊控制器,还可以保持住一定的稳定性。所以,通过实现可以知道,模糊控制PID更适用于环境参数容易变化的场合。

 

4-2 阶跃响应和随机信号响应

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章