模糊控制程序实例

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

5.226模糊控制器设计实例

1、单输入模糊控制器的设计

【例5.12】已知某汽温控制系统结构如图 5.10所示,采用喷水减温进行控制。设计单输入模糊控

制器,观察定值扰动和内部扰动的控制效果。

图5.10单回路模糊控制系统

按表5-2确定模糊变量E U的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e、控制量u 的实际论域:e u [ 1.5,1.5],则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m所示,仿真结果如图5.11所示。

设温度偏差e、控制量u的实际论域:e u [ 1.5,1.5],选择e、u的等级量论域为

E U { 3, 2, 1,0, 1, 2, 3}

量化因子K 2 3

1.5 ( 1.5)

选择模糊词集为{NB,NS,ZO,PS,PB},根据人的控制经验,确定等级量E,U的隶属函数曲线如图

5-8所示。根据隶属函数曲线可以得到模糊变量E、U的赋值表如表5-3所示。

图5-8 E, U的隶属函数曲线

依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E为0,说明温度接近希望值,喷水阀保持不动;

若误差明温度低于希望值,应该减少喷水;

若误差明温度高于希望值,应该增加喷水。

若采用数学符号描述,可总结如下模糊控制规则:

若E负大,则U正大;

若E负小,贝U U正小;

若E为零,则U为零;

若E正小,则U负小;

若E正大,则U负大。

写成模糊推理句:

if E=NB then U=PB

if E=NS then U=PS

if E=Z0 then U=Z0

if E=PS then U=NS

if E=PB then U=NB

由上述的控制规则可得到模糊控制规则表,如表5-4所示。

模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域旦到控制量论域的模糊关系R。

按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R:

R E U

(NB E PB U)U(NS E PS U)U(Z0E Z0U)U(PS E NS U)U(PB E NB U )

计算模糊关系矩阵R的子程序如F_Relation_1.m 所示。

0 0 0 0

0 0.5 1.0 0 0

0 0

0.5 0.5 0.5

0 0 0.5 0.5 1.0 0.5 0 R 0

0 0.5 1.0 0.5 0 0 0

0.5 1.0 0.5 0.5 0 0

0.5 0.5 0.5 0 0 0 0 1.0 0.5 0

由此,可以得到各种输入时,模糊控制器的输出: 单输入时: U EoR 例如:单输入时,设e 1.2,根据前面的等级量划分原则,其等级量

E PS [0 0 0 0 1 0.5 0]。根据式(5-5)可以得到:

0.5 1.0

双输入时:

三输入时:

U (E EC) R U (E EC ECC) R

(5-5) (5-6) (5-7)

E 1,由表5-2可以查出

0 0 0 0 0.5 0.5 0.5

0 0 0.5 0.5 1.0 0.5 0

U 0 0 0 0 1 0.5 0 0 0 0.5 1.0 0.5 0 0

0 0.5 1.0 0.5 0.5 0 0

0.5 0.5 0.5 0 0 0 0

1.0 0.5 0 0 0 0 0

[0.5 0.5 1.0 0.5 0.5 0 0]

其模糊决策子程序如F_Deduce_1.m所示。

%单输入时模糊决策子程序F_Deduce_1.m

fun ction FU=F_Deduce_1(fe,R, ne,nu)

for i=1: nu

for j=1: ne

if fe(j)

else

feu(j)=R(j,i);

end

end

FU(i)=max(feu);

end

图5.11单输入模糊控制器的控制效果

从上述的仿真结果可以看到,定值扰动时系统可以达到稳定,但是有很大的静差,不能满足

工程上的要求,究其原因是,模糊控制器实质上是一个具有继电器型非线性特性的控制器(如图 5.11中所示的u ),没有积分作用,对于有自平衡对象一定会产生静差,而且系统极容易产生震荡。 从图5.11就可看出,虽然设计的模糊控制器对定值扰动是稳定的,但对于内扰并不能使其稳定。

if Me(i,j)>Me(i-1,j);Fi=i;e nd;% end

U=F_Deduce_1(Me(Fi,:),R, ne, nu);% %加权平均法判决控制器的输岀 Su=O;S=O; for i=-UM:UM

得到模糊语言值

调用模糊决策子程序

Su=Su+i*U(i+UM+1);S=S+U(i+UM+1); end

u=Ku*Su/S+ur; (%***************

仿真计算被控对象 ********************

x(1)=A1*x(1)-1.1*B1*u; x(2)=A1*x(2)+B1*x(1); x(3)=A1*x(3)+B1*x(2); x(4)=A1*x(4)+B1*x(3); y1(k)=x ⑷; u1(k)=u; t(k)=k*DT;

if t(k)>800;ur=0.5;e nd;%800 秒后加入内扰

end Plot(t,y1) hold on; plot(t,u1,'--')

相关文档
最新文档