智能控制作业_模糊自适应PID控制

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模糊自适应PID 控制的Matlab 仿真设计研究

姓名:陈明

学号:201208070103

班级:智能1201

一、 模糊控制思想、PID 控制理论简介:

在工业生产过程中,许多被控对象受负荷变化或干扰因素很多基于模糊自适

应控制理论, 设计了一种模糊自适应PID 控制器, 具体介绍了这种PID 控制器的控制特点及参数设计规则, 实现PID 控制器的在线自整定和自调整。通过matlab 软件进行实例,仿真表明, , 提高控制系统实时性和抗干扰能力,易于实现.便于工程应用。 1.1 模糊控制的思想:

应用模糊数学的基本理论和方法, 控制规则的条件、操作用模糊集来表示、并把这些模糊控制规则以及有关信息, 诸如PID 控制参数等作为知识存入计算机知识库, 然后计算机根据控制系统的实际情况(系统的输入, 输出) , 运用模糊推理。

1.2 PID 算法:

u(t)=k p * e(t)+k i * ∫e(t)t 0

dt +k d *de(t)dt

= k p *e(t)+ k i *∑e i (t) + k d * e c (t)

其中, u (t) 为控制器输出量, e(t) 为误差信号, e c (t)为误差变化率, k p , k i , k d 分别

为比例系数、积分系数、微分数。

然而,课本中,为了简化实验难度,只是考虑了kp ,ki 参数的整定。

1.3 模糊PID 控制器的原理图:

二、基于Matlab的模糊控制逻辑模块的设计

关于模糊逻辑的设计,主要有隶属函数的编辑,参数的选型,模糊规则导入,生成三维图等观察。

2.1 模糊函数的编辑器的设定:

打开matlab后,在命令窗口输入“fuzzy”,回车即可出现模糊函数编辑器,基本设置等。基于课本的实验要求,我选的是二输入(e, e c)二输出(k p ,k i)。需要注意的是,在命名输入输出函数的时候,下标字母需要借助下划线的编辑,即e_c 能够显示为e c。

2.2四个隶属函数的N, Z, P 函数设定:

在隶属函数的设定中,N 选用的是基于trimf(三角形隶属函数) , Z是基于zmf(Z型隶属函数),P是基于smf(S型隶属函数)。

分别设定二输入(e, e c)二输出(k p ,k i)每个函数的N、Z、P的选型,以及取值范围,实际的参数范围。并且,模糊计算的连接词运算 And Method取

min , Or Method取max, 蕴含推理Implication取min,输出合成运算Aggregation

取max, 去模糊化运算 Defuzzification取centroid(重心法)。

这些都完成后,即可。下图以输入e为例:

2.3 添加模糊规则:

在FIS Editor菜单栏下的Edit中打开“Rules”,即可进行规则的添加,依照课本9条抹灰规则,添加完成后,如下:

2.4 模糊规则的视图观察,以及输入输出的的三维图

2.4.1观察模糊规则的视图:

在e, e c的视图上,可以明显的发现各有一条红线,这条红线就是用于调节这两个参数,当参数变化时,k p,k i的值也会随之变。

这样很容易观察输入参数的变化导致输出参数的变化。

2.4.2 输出e, e c及k p,k i的多维图:

2.4.2.1:

输入e, e c对k p的控制:

输入e, e c=none对k p的控制:

因为e c在试验中,值比较小,忽略考虑后,对k p的最终值影响不大,可以看出与课本上实验得出的k p=2.67 基本是差不多的,验证了实验

的正确性。

2.4.2.2:

输入e, e c对k i的控制

输入e, e c=none对k i的控制:

因为e c在试验中,值比较小,忽略考虑后,对k i的最终值影响不大,可以看出与课本上实验得出的k i=0.08基本是差不多的,验证了实验的正确性。

2.5 fis文件的保存

这一步看似很简单,不必太在意,但是个人觉得这一步很重要。因为,一

般大家保存文件都是,把文件保存在某个文件夹里面,这无可厚非,绝大多数情况也是这样的。包括在一般的matlab编程中,保存文件也是保存在matlab可以“识别”的空间里面(一般是matlab自己建好的文件夹,或者是在系统文档里面,其他地方基本会出问题)。

然而,对于这个模糊控制器fis文件,更加要注意的是需要”To Workspace”

而不是“To file”(大多数情况我们存matlab文件是“To file”)。我之前也一直是这么保存、打开fis文件。然而,在下面的第三步中“基于Matlab 的Simulink Library 的控制器”,需要用到fis逻辑,并且在命令窗口也能够把这个fis文件读入(或者也叫加载吧,但是命令是 readfis,“读入”更直接)也没问题,不报错。然而,就算在编译仿真的时候老是通过不了,主要

错误就是找不到那个fis文件(“未定义函数或变量”),然而在命令窗口是明明可以读取的。如下图所示:

报的错误是:

Error evaluating parameter 'fis' in 'Fuzzy_Logic_Controller/fuzzpid'

Caused by:

Undefined function or variable 'fuzzpid'.

控制器的逻辑装载有问题:

刚开始,实在找不出问题,就去论坛上去搜搜帖子,也有几个人遇到此问题,不是沉贴多年的僵尸贴就是随便顶的。不过,有一个用户提到过存储的路径问题,也就是存储到Workspace还是File的。这里的workSpace,个人觉得和Eclipse(Java, Android常用开发平台)有点不一样。我这个工程,Matlab Fuzzy Tool box控制器的逻辑设计(fis文件)与Matlab中 Simulink Library 都是分开建立的,但是感觉关联性比较强,和后者Eclipse平台的工作空间每个工程关联性比较弱,个人这么理解。

三、基于Matlab的Simulink Library 的控制器

3.1 添加“Fuzzy Controller”

相关文档
最新文档