实验目的:现有被控对象一:G(s)=1/(s2+2s+1)
被控对象二:G(s)=K /【(T1s+1)(T2s+1) 】
试设计一个模糊控制系统来实现对它的控制,并完成以下任务:
任务一:通过仿真分析模糊控制器的参数的变化(主要讨论控制器解模方法和量化因子的变化)对系统性能的影响。
任务二:在控制器参数一定的情况下改变被控对象的参数,分析对象参数变化时fuzzy controller的适应能力。
任务三:在控制器参数一定的情况下改变被控对象的结构,分析对象结构变化时fuzzy controller的适应能力。
实验分析:要完成以上任务应分两个步骤:一设计模糊控制器,二用matlab的模糊逻辑
工具箱建立模糊推理系统,并在simulink中实现对模糊系统的仿真。接下来就以对象一为例说明模糊控制系统的仿真。
一、模糊控制器的设计
模糊控制器的设计步骤为:
1、选择控制器的输入输出:选择误差e及误差变化量ec为输入, u作为输出用于控制对象,这样模糊控制器具有二输入一输出的结构。 2、模糊集及论域的定义:
z 输入e的模糊子集为{NB NM NS NO PO PS PM PB} z 输入ec和输出u的模糊子集均为{NB NM NS ZO PS PM PB} z e的论域为{-6 -5 -4 -3 -2 -1 -0 +0 1 2 3 4 5 6 } z ec的论域为{-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 } z u的论域为{-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 } 我们选择三角形作为隶属度函数的形状, e的隶属度函数如下图所示:
1
图1-1
ec的隶属度函数如下图所示:
图1-2
u的隶属度函数如下图所示
2
图1-3
3、确定模糊控制规则,模糊规则表如下: NB NM NS ZO PS PM PB ec u e NB NM NS NB NB NB NB NM ZO ZO NB NB NB NB NM ZO ZO NM NM NM NM ZO PS PS NO NM NM NS ZO PS PM PM PO NM NM NS ZO PS PM PM PS PB NS NS ZO PM PM PM PM ZO ZO PM PB PB PB PB 表1-1
4、选择输入输出变量的量化因子:这里暂时选定输入输出的量化因子Ke=Kc=Ku=1,接下来的仿真过程还可以调整。
5、 择模糊规则前提交的方法为min,模糊推理方法为min,而反模糊化方法可以在仿真过
程中设置。
PM ZO ZO PM PB PB PB PB 二、对模糊系统进行仿真
模糊控制系统的控制框图为:
3
图1-4
matlab提供的simulink软件包可对控制系统进行仿真。仿真分两步:一是在fuzzy logic工具箱中建立模糊推理系统(FIS),二是在simulink中建立完整的模糊控制系统并进行仿真分析。
1、在fuzzy logic工具箱中建立模糊推理系统
模糊逻辑工具箱提供了图形用户界面(GUI)和命令行方式两种方式,但总的来说用GUI工具建立模糊逻辑推理系统更容易些,接下来将介绍GUI方式的使用。
(1)、fuzzy logic工具箱由5个主要的GUI工具来建立、编辑和观察模糊推理系统,这5个工具为:
FIS编辑器:用于定义并编辑整个系统的输入、输出个数以及推理、解模的方法。 隶属函数编辑器:用于定义并编辑每个变量模糊子集的隶属函数。 模糊规则编辑器:用于编辑规则列表
模糊规则观察器和输出曲面观察器:用于观察模糊推理系统,值得注意的是观察器是只读工具。
这5个GUI工具之间能相互作用并交换信息,任何一个都能对工作区和磁盘进行读写。接下来就以上面给出的系统为例说明工具箱的使用。
z matlab的命令窗口键入fuzzy,系统就打开了FIS编辑器(也可以点击命令窗口左下角
的start菜单,然后选择toolbox下的fuzzy logic,再在fuzzy logic下选择FIS editor viewer便可以打开FIS编辑器),FIS编辑器的界面如下所示:
4
图1-5
z 系统在默认值状态下给出了mamdani型控制器,如果要设计一个sugeno控制器,在file
菜单下的new file中选sugeno即可。
z 在edit菜单下的add variable中选择input添加一个输入变量,使推理系统成为一个二输
入单输出的系统。
z 单击input1的图标使之变成当前变量,并且可以在该界面右下区的current variable的
name框中改变变量名为e。同理也可以改变input2、output的变量名为ec和u。 z 在该界面的左下区域可以选择模糊交、模糊并、模糊推理、反模糊化的方法。这里我们
可以初选“交”方法为min,推理方法为min,聚类方法为max,反模糊化方法为mom。当我们在simulink中仿真时还可以选择不同的反模糊化方法进行比较。
(2)、在FIS编辑器的edit菜单下,选择membership function可以进入隶属函数编辑器。(也可以双击FIS编辑器的输入或输出变量进入隶属函数编辑器),隶属函数编辑器如下所示:
5
图1-6
z 单击输入变量e使之成为当前变量
z 在edit菜单下选择add mfs弹出对话框用于定义变量e的隶属度函数的类型和语言变量
的个数,用同样的方法按前面的设计定义ec、u的隶属度函数的类型和语言变量的个数。 z 选择一个变量作为当前变量,在该界面的左下区域的current variable中设置该变量的范
围和显示范围
z 在该界面的隶属函数图形区选中一条隶属函数曲线为当前隶属函数,并在界面的右下区
的current membership function定义各隶属函数的名称、类型和参数。修改隶属函数的参数可以改变隶属函数的形状,但也可以用鼠标拖动隶属函数的方法来改变隶属函数的形状和位置。
(3)、在membership function编辑器的edit菜单下选择rules进入规则编辑器
6
图1-7
z 在connection框中选择推理前提的关系and
z 选择输入输出变量的语言值,并单击add rule按钮添加规则,也可单击delete rule或
change rule删除或修改规则,直到把所有的规则输入完后为止。
在以上三个界面的任何一个file菜单下选择export to workspace或export to disk进入存储对话框就可以将建立的推理系统保存在当前工作空间或磁盘中,这样模糊推理系统就建立起来了。在任一个编辑器的view菜单下选择rule或surface就可以进入模糊规则和模糊推理的观察器。
2、用simulink仿真模糊系统 (1)、模糊控制器和simulink的连接
z 在命令窗口中键入simulink打开simulink库,并建立一个仿真模型
z 在simulink库中打开fuzzy logic toolbox,选择fuzzy logic controller,并将之拉到仿真模
型中
z 双击仿真模型中的fuzzy logic controller进入block parameters的对话框,并在文本框中
7
输入保存在工作空间的模糊推理系统的名称(如果模糊控制推理系统仅保存在磁盘上,则应先将该FIS存在工作空间,这样才能使控制器和仿真模型连接起来)
这样就完成了模糊控制器和simulink的连接,然后从simulink库中选其它的模块按图1-4的方式建立起一个完整的模糊控制系统。 (2)、对系统进行仿真,完成前面规定的三个任务
任务一:通过仿真分析模糊控制器的参数的变化(主要讨论控制器解模方法和量化因
子的变化)对系统性能的影响。
模糊控制器通常可以调节的参数是控制器的反模糊化方法、模糊规则前提并、交的方法、模糊推理的方法以及控制系统中输入输出变量的量化因子。在这里只仿真不同的反模糊化方法、不同的Ke、Kc、Ku对系统的影响 A)、分析不同的反模糊化方法对系统性能的影响 fuzzy logic工具箱提供了以下几种反模糊化的方法 centroid: centroid of area method bisector: bisector of area method mom: mean of maximum method som: smallest of maximum method lom: largest of maximum method
现要求其它参数不变,且设置Ke=9、Kc=5、Ku=8,仿真步长为0.01s,以下是取不同的解模方法时的仿真图:
z 解模方法为bisector时系统响应为:
图1-8
8
z 解模方法为mom时系统响应为:
图1-9
z 解模方法为som时系统响应为:
图1-10
9
z 解模方法为lom时系统响应为:
图1-11
由以上四种反模糊方法的仿真结果可以看出:在参数为Ke=9、Kc=5、Ku=8的情况下,最适合该系统的反模糊方法为bisector。 B)、分析不同的量化因子对系统性能的影响
我们根据上面的仿真结果选择bisector为反模糊化方法,分析各量化因子对系统性能的影响: z Ke的影响
当Ke=9、Kc=5、Ku=8时系统响应图为图1-8,性能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.95s。
当Ke=1、Kc=5、Ku=8时系统响应图为:
10
图1-12
性能指标为:系统可达到稳定状态,且稳态误差为0.07;系统的动态响应速度变慢,当t=9s时,系统输出为0.9。
当Ke=0.5、Kc=5、Ku=8时系统响应图为:
图1-13
从图可以看出系统的稳态误差更大,动态响应速度更慢。
总结:根据以上三组数据可以得出:当Ke减小时,系统的稳态误差增大,同时系统的动态响应速度变慢;反之则会提高系统的动态响应时间和稳态精度。
11
实验任务一:请根据以上的数据重新仿真一下,看Ke
的变化对系统性能的影响是否如此?然后仍以G(s)=1/(s2+2s+1) 为被控对象,按照同样的方法仿真并分析Kc、Ku的变化对系统性能的影响。
任务二:在控制器参数一定的情况下改变被控对象的参数,分析在对象参数发生变化时,
fuzzy controller的适应能力。
现在把对象一写成K /【(T1s+1)(T2s+1)】 的形式,则仿真结果如下:
z 当对象G(s)=1/(s2+2s+1)=1/【(s+1)(s+1)】时,仿真结果为图1-8所示,系统的性
能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.95s。 z 当对象G(s)=1/【(4s+1)(s+1)】时,系统的响应如图所示:
图1-14
系统的性能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.88s。 z 当对象G(s)=1/【(0.4s+1)(s+1)】时,系统的响应如图所示:
12
图1-15
系统的性能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为2s。 z 当对象G(s)=1/【(4s+1)(2s+1)】时,系统的响应如图所示:
图1-16
13
系统的性能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.8s。
总结:由以上四组数据可以得出在对象参数发生变化时,系统的响应基本不变,由此可以看出该模糊控制器对对象参数的变化有很好的适应能力。
实验任务二:仍使用以上设计的模糊控制器,被控对象为:
G(s)=K /【(T1s+1)(T2s+1)】 ,被控对象的参数有以下四组: 第一组参数: G(s)=20/【(1.2s+1)(4s+1)】 第二组参数: (s)=20/【(0.4s+1)(4s+1)】 第三组参数: G(s)=20/【(2s+1)(4s+1)】 第四组参数: G(s)=20/【(2s+1)(8s+1)】
请根据由任务一得到的Ke、Kc、Ku的变化对系统性能影响的规律,选择第一组参数作为被控对象参数,调试出适合该系统的最佳的Ke、Kc、Ku和反模糊化方法;并在你调出的最佳的Ke、Kc、Ku状态下,将对象参数分别变成第二、三、四组的参数,仿真出结果,并分析fuzzy controller的适应能力。
任务三:在模糊控制器参数一定的情况下改变被控对象的结构,分析对象结构变化时
fuzzy controller的适应能力。
z 当对象结构为G(s)= 1/【(s+1)(s+1)】时,系统的响应图为图1-8所示,系统的性
能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.95s。 z 当对象结构为G(s)= 1/【s(s+1)】时,系统的响应图为:
14
图1-17
有图可以看出系统的性能指标为:系统可达到稳定状态,且稳态误差为0;系统的动态响应时间为1.8s。
z 当对象结构为G(s)= 1/(s+1)时,系统的响应图为:
图1-18
从图可以分析出系统始终处于振荡状态,不能达到稳定。
15
z 当对象结构为G(s)= 1/【(s+1)(s+2)(s+3)】时,系统的响应图为:
图1-19
由图可以分析出在这种结构下,系统也是处于轻微的振荡状态,但我们可以通过调节系统的量化因子使系统重新稳定。
z 当对象结构为G(s)= 1/【s(s+1)(s+2)】时,系统的响应图为:
图1-20
16
从图分析可得系统经过振荡最终可以达到稳定,这是由于对象中存在积分环节的原因。
总结:由以上四组数据可以得出在对象结构发生变化时,系统的响应发生了振荡,由此可以看出该模糊控制器对对象结构的变化适应能力适应能力不是很强,但我们可以加入积分环节改善系统的性能。
实验任务三:仍保持你在前面得到的量化因子
Ke、Kc、
Ku不变,取被控对象为: G(s)=20/【(1.2s+1)(4s+1)】,把对象的结构分别变成一阶系统、三阶系统时,仿真系统的响应,分析fuzzy controller的适应能力。
17
因篇幅问题不能全部显示,请点此查看更多更全内容