模糊控制详细讲解实例文档格式.docx
- 文档编号:18046514
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:12
- 大小:63.46KB
模糊控制详细讲解实例文档格式.docx
《模糊控制详细讲解实例文档格式.docx》由会员分享,可在线阅读,更多相关《模糊控制详细讲解实例文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略实际EC和E输入值若超出论域范围,则取相应的端点值。
3.模糊控制规则
由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表:
表1:
E/EC和U语言值隶属度向量表
-3
-2
-1
1
2
3
NB
0.5
P0
NM
P1
NS
P2
ZO
P3
PS
P4
PM
P5
PB
P6
设置模糊规则库如下表:
表2:
模糊规则表
U
E
EC
——
PSd
PS「
ZOd
NS*
3.模糊推理
由模糊规则表3可以知道输入E与EC和输出U的模糊关系,这里我取两个例子做模糊推理如下:
if(EisNB)and(ECisNM)then(UisPB)
那么他的模糊关系子矩阵为:
R1RE1REC2住1
Rec2P1(0,1,0.5,0,,0)17,Ru1P0(1,0.5,0,
0)17
Re1Rec2(1,0.5,0,,0)T(0,1,0.5,0,,0)0
77
RE1EC2(0,1,°
.5,0,0,0,0,0,0.5,0.5,0,,0)149
RiRe1ec2Rj1(0,1,0.5,,0)(1,0.5,0,,0)
if(EisNVBorNB)and(ECisNVB)then
(Uis
PVB)
其中,RE1P0(1,0.5,0,
0)17,即表1中NB对应行向量,同理可以得到,
R2RE1REC1住1
结果略
按此法可得到27个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如
下:
RRiR2R(i1,2,,27)
由R可以得到模拟量输出为:
U(EEC)oR
4.
u(Zij))
去模糊化
由上面得到的模拟量输出为1x7的模糊向量,每一行的行元素对应相应的离散变量乙,则可通过加权平均法公式解模糊:
21
U(Zij)Zj
U冷(ij1,2,,21)u(Zj)
i0
从而得到实际刹车控制量的精确值u。
油门控制:
油门控制采用增量式PID控制,即:
u(k)u(k1)(kpkikd)e(k)(kp2kd)e(k1)kje(k2)R1=dikaer(R1_,49,P6,7);
只需要设置kp、ki
kd三个参数即可输出油门控制量
、程序实现及参数调节
R2_=dikaer(xbing(P2,P3),7,P0,7);
R2_=reshape(R2_,1,49);
R2=dikaer(R2_,49,P5,7);
R3_=dikaer(P0,7,P1,7);
R3_=reshape(R3_,1,49);
R3=dikaer(R2_,49,P6,7);
R4_=dikaer(xbing(P1,P2),7,P1,7);
R4_=reshape(R4_,1,49);
R4=dikaer(R4_,49,P5,7);
R5_=dikaer(P3,7,P1,7);
R5_=reshape(R5_,1,49);
R5=dikaer(R5_,49,P4,7);
R6_=dikaer(xbing(P0,P1),7,P2,7);
R6_=reshape(R6_,1,49);
R6=dikaer(R6_,49,P5,7);
R7_=dikaer(xbing(P2,P3),7,P2,7);
R7_=reshape(R7_,1,49);
R7=dikaer(R7_,49,P4,7);
R8_=dikaer(P0,7,P3,7);
R8_=reshape(R8_,1,49);
R8=dikaer(R8_,49,P5,7);
R9_=dikaer(xbing(P1,P2),7,P3,7);
R9_=reshape(R9_,1,49);
R9=dikaer(R9_,49,P4,7);
R10_=dikaer(P3,7,P3,7);
R10_=reshape(R10_,1,49);
R10=dikaer(R10_,49,P3,7);
R11_=dikaer(xbing(P0,P1),7,P4,7);
R11_=reshape(R11_,1,49);
R11=dikaer(R11_,49,P4,7);
P45=xbing(P4,P5);
R12_=dikaer(xbing(P2,P3),7,P45,7);
R12_=reshape(R12_,1,49);
R12=dikaer(R12_,49,P3,7);
R13_=dikaer(P0,7,P5,7);
R13_=reshape(R13_,1,49);
R13=dikaer(R13_,49,P4,7);
R14_=dikaer(P1,7,P5,7);
R14_=reshape(R14_,1,49);
R14=dikaer(R14_,49,P3,7);
P01=xbing(P0,P1);
R15=dikaer(R15_,49,P3,7);
R16_=dikaer(P3,7,P6,7);
R16_=reshape(R16_,1,49);
R16=dikaer(R16_,49,P2,7);
R17_=dikaer(P4,7,P0,7);
R17_=reshape(R17_,1,49);
R17=dikaer(R17_,49,P4,7);
R18_=dikaer(xbing(P5,P6),7,P0,7);
R18_=reshape(R18_,1,49);
R18=dikaer(R18_,49,P3,7);
R19_=dikaer(xbing(P4,P5),7,P1,7);
R19_=reshape(R19_,1,49);
R19=dikaer(R19_,49,P3,7);
R20_=dikaer(P6,7,xbing(P1,P2),7);
R20_=reshape(R20_,1,49);
R20=dikaer(R20_,49,P2,7);
P23=xbing(P2,P3);
R21_=dikaer(P4,7,xbing(P23,P4),7);
R21_=reshape(R21_,1,49);
R21=dikaer(R21_,49,P3,7);
R22_=dikaer(P5,7,xbing(P23,P4),7);
R22_=reshape(R22_,1,49);
R22=dikaer(R22_,49,P2,7);
R23_=dikaer(P6,7,xbing(P3,P4),7);
R23_=reshape(R23_,1,49);
R23=dikaer(R23_,49,P1,7);
R24_=dikaer(P4,7,P5,7);
R24_=reshape(R24_,1,49);
R24=dikaer(R24_,49,P2,7);
R25_=dikaer(P5,7,P5,7);
R25_=reshape(R25_,1,49);
R25=dikaer(R25_,49,P1,7);
R26_=dikaer(P6,7,xbing(P6,P5),7);
R26_=reshape(R26_,1,49);
R26=dikaer(R26_,49,P0,7);
R27_=dikaer(xbing(P4,P5),7,P6,7);
R27_=reshape(R27_,1,49);
R27=dikaer(R27_,49,P1,7);
m=[R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17,R18,R19,R20,R21,R22,R
23,R24,R25,R26,R27];
R=bingji(m);
(%*************初始化参^量
e=0;
ec=0;
y_1=0;
y_2=0;
u=0;
u_1=0;
u_2=0;
u_3=0;
e_1=0;
e_2=0;
Eswith=10;
throttle_仁0;
brake_1=0;
x=[000];
ts=0.001;
sys=tf(1,[1,2,1],'
inputdelay'
0.5);
dsys=c2d(sys,ts,'
zoh'
);
[num,den]=tfdata(dsys,'
v'
fork=1:
1:
40000
%****************^^制系•^统
time(k)=k*ts;
if(k<
25000)
vd(k)=40;
else
vd(k)=0;
end
y(k)=-den
(2)*y_1-den(3)*y_2+num
(2)*u_1+num(3)*u_2;
e=vd(k)-y(k);
ec=e-e_1;
u_3=u_2;
u_2=u_1;
u_1=u;
y_2=y_1;
y_1=y(k);
x
(1)=e;
x
(2)=(e-e_1)/ts;
x(3)=x(3)+e*ts;
油门PID控制
刹车控制
(%*******************************
kp=0.42;
Ti=30;
Td=0.0018;
ki=kp*ts/Ti;
kd=kp*Td/ts;
dthrottle=kp*x
(1)+kd*x
(2)+ki*x(3);
throttle=u_1+dthrottle;
if(throttle>
2000)
throttle=2000;
(%****************************
%/********压缩输入变量*****%
E=lisan(-50,50,3,e);
EC=lisan(-20,20,3,ec);
%/*********计算实际输入变量隶属度向量*****%
E_R
(1)=lbell(E,1,4,-3);
E_R
(2)=trig(E,-3,-2,0);
E_R(3)=trig(E,-3,-1,1);
E_R(4)=trig(E,-2,0,2);
E_R(5)=trig(E,-1,1,3);
E—R(6Hmg(Eo23=E—R(7Hrbe__m143)-ECIR(1H_be__(EC-14w「EC—R(2Hs.g(EC-w「29EC—R(3Hs.g(Ecm=EC—R(4Hmg(EC「2o2=EC—R(5Hs.g(ECx-1-3)-EC—R(6Hmg(ECo23「ECIR(7Hrbe__(EC-143=进¥
¥
Kl聶輻巨殆
UIR1udikaer(EIR-7mCIR-7=
UIR1ureshape(UIR1-1-49=
UIR2=jdikaer(UIR1-49R7X
UIR"
max(UIR2=
UILHmean(UIR)-
0一0-*********
brake卩f=san(—150-150-3-UIL)-
el2"
el1-
elld
0一0***********************
if(eAO)
if((eyEswifh)=ahros-el1$0))
if(fhroh-ec'
lhro注ell)
fhro注ellllhroh-e
ullhro注e
Q(kH匸
w(kHq
e-se
fhro注euq
if(fhroh-ellHHO)brake—1Hbrakeunbrakew(k)£
Q(kHq
e-sefhro注euqfhro注ellllhro注w
ullhro注w
Q(k)=u;
W(k)=O;
if(e~=0)
if(brake_仁=0)throttle_1=throttle;
u=throttle;
W(k)=0;
brake=0;
brake_1=brake;
u=brake;
Q(k)=0;
(%********************
M(k)=u;
(%******************************
if(time(k)<
=0.5)u=0;
elseu=M(k-0.5/ts);
endend
(%**********
画图
figure
(1);
plot(time,vd,'
r'
time,y,xlabel('
time(s)'
ylabel('
vd,y'
legend('
?
di
figure
(2);
plot(time,Q,'
'
linewidth'
2);
xlabel('
u'
figure(3);
plot(time,W,'
figure(4);
plot(time,N,'
b'
time£
"
s£
'
e'
程序说明:
仿真分加速和加速两个阶段,加速阶段主要应用油门控制,加速阶段主要由刹车控制。
加速过程中,调节PID的三个参数kp、Ti、Td,调节过程中不难发现,kp越大调节时间越长,Ti越小稳态误差越大,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模糊 控制 详细 讲解 实例