模糊控制位置跟踪的SIMULINK仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能控制作业二“模糊控制位置跟踪的SIMULINK 仿真
一、题目 设被控对象的传递函数为s s s G 252500)(2+=,输入信号为方波,周期为1秒,幅值为1,(可以用Pulse Generator 模块来产生)。
1)试设计两输入单输出模糊控制器,输入为偏差E 和偏差变化率EC ,输出为控制量U ,使系统输出能实时跟踪输入信号。
2)通过仿真理解并分析E 和EC 的参数选择对系统稳态误差和动态性能的影响,这些参数包括模糊子集的个数,论域的范围等。作业中最好把不同参数下的仿真结果附上。
二、MATLAB 解决方案
1、模糊控制模块的创建
在MA TLAB 命令窗口中输入fuzzy 命令,会弹出模糊控制GUI 界面,打开隶属度函数编辑窗口,输入变量为E 和EC ,输出变量为U ,输入输出论域均设置为[-3 3],每个变量都设置NB ,NM ,NS ,ZO ,PS ,PM ,PB 七个模糊子集,每个变量的隶属度函数均如图1所示,为了使输入误差在零附近反应敏感,这一部分隶属度函数设置得比较尖。
图1 隶属度函数编辑窗口
根据如表1输入控制规则,如图2所示:
表1 控制规则
编辑完成后可以看到如图3所示的模糊输入与输出的三维示意图:
图2 控制规则输入窗口图3 输出三维示意图
2、simulink的仿真
新建一个model,搭建如图4所示的控制框图,保存为fuc2文件夹中的fuz_ctrl.mdl。其中增益模块用来控制将输入或输出与模糊控制器的论域相匹配。
图4 simulink控制框图
3、调试后的仿真结果
经过调试优化,最终得到的仿真波形如图5所示。其中Ke=3,Kec=0.06,Ku=1.
图5 最终运行结果
三、控制参数对控制结果的影响
1、论域对控制结果的影响
这里采用Ke和Kec来起到控制输入变量的论域的作用,当增大量化因子,相当于缩小了输入变量的论域,当减小量化因子时,相当于增大了输入变量的论域。在原来的基础上改变Ke,Kec的值,通过观察跟踪效果来说明论域对控制结果的影响。
首先讨论偏差E的论域对控制结果的影响:保持Kec=0.06,当Ke=4时,运行结果如图6所示:
图6 Ke=4时的运行结果
当Ke=1时的运行结果如图7所示:
图7 Ke=1时运行结果
从以上两幅图的对比可以看出,当偏差E的论域过大时,响应速度回变慢,超调会减小,当论域过小时,响应速度回变快,但会出现超调。
下面讨论偏差的变化率对控制结果的影响:保持Ke=3,当Kec=0.4时的运行结果如图8所示:
图8 Kec=0.04时的运行结果
当Kec=0.12时的运行结果如图9所示:
图9 Kec=0.12时的运行结果
从以上两图的对比可以看出,偏差的变化率的论域增大有利于提高响应时间,但会引起过大的超调,论域减小有利于减小超调,但会减慢响应速度,在实际控制中应该综合考虑以上两点。
2、模糊子集个数对控制结果的影响
本示例中设置了七个模糊子集,在同样的控制参数下,模糊子集个数为5和3时的控制结果图:其中模糊子集数为5时的仿真模型保存为文件夹fuc2_1中的fuz_ctrl2.mdl,模糊子集数为3的仿真模型保存为文件夹fuc2_2中fuz_ctrl3.mdl。
图10 模糊子集为5个是响应波形
图11 模糊子集为7个和5个时局部放大比较
图12 模糊子集个数为3时的响应波形
从上述几幅波形对比可以看到,模糊子集个数越少,其控制就越不精确,引起的误差也越大,但当模糊子集个数太大时,每一步计算花费的时间会变长,在实际设计中应综合考虑这两个因素。
四、讨论与心得
此次大作业主要利用了模糊控制的GUI 界面为simulink 创建一个论域连续的模糊控制模型,然后将其运用到实际的控制过程当中去。在刚开始时,隶属度函数和控制规则就采用常用的函数和控制规则。最初遇到的问题就是论域我都选择了[-3 3],然后仿真出来的波形根本不对,于是我查阅了相关的文献,在输入和输出的环节中都加入了一个量化因子,用示波器观察了偏差和偏差的变化率的变化范围以后,按照课本中的公式2e H L m K e e =-,2ec H L
n K ec ec =-,初步选择了Ke 和Kec ,Ku 初步选择为1,然后再调整各个量化因子,
观察各个参数对结果的影响,最后得到一个比较理想的结果。由于修改论域比较麻烦,我就采用了这种量化因子的方式对论域进行了讨论,因为这两者的效果是一样的。经过调整后得到图形后,发现在误差快为零的那一段变化不是很敏感,因此我又对隶属度函数进行了适当的修改,使得误差较小时的隶属度函数变得尖一点,使得系统对误差较小时的响应变得比较敏感,分辨率提高。总体来说,这个跟踪效果还是比较理想的。