模糊PID控制器设计说明.docx
- 文档编号:7678322
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:160.46KB
模糊PID控制器设计说明.docx
《模糊PID控制器设计说明.docx》由会员分享,可在线阅读,更多相关《模糊PID控制器设计说明.docx(11页珍藏版)》请在冰豆网上搜索。
模糊PID控制器设计说明
模糊PID控制器
0引言:
PID控制作为一种典型的传统反馈控制器,以其结构简单,易于实现和鲁棒性好等特点在工业过程控制中广泛应用。
但是传统PID控制器的参数需要被控对象的数学模型来进行调整,而控制过程中的滞后性、控制参数的非线性和高阶陛增加了对Kp、Ki、Kd三个参数的调整难度。
所以对确定的控制系统通过复杂的计算后,其三个参数的值在控制运行中一般是固定的,不易进行在线的调整。
而在实际的工业生产过程中,许多被控对象受到负荷变化和干扰因素的作用,其对象参数的特征和结构易发生改变,这就需要对参数进行动态的调整。
同样因为被控系统的复杂性和不确定性,其精确的数学模型难以建立,甚至无法建立模型,所以需要利用模糊控制技术等方法来解决。
模糊PID无需考虑被控系统的模型,而只根据其误差e和误差变化ec等检测数据来自适应调整Kp、Ki、Kd的值,最终使被控系统处于稳定工作态。
1、传统PID控制器:
PID参数模糊自整定是找出PID中3个参数与e和ec之间的模糊关系,在运行过不断检测e和ec,根据模糊控制原理来对3个参数进行在线修改,以满足不同e和ec时对控制参数的不同要求,而使被控对象有良好的动稳态性能。
从系统的稳定性、响应速度、超调量和稳态精度等方面来考虑Kp,Ki,Kd的作用如下:
(1)比例系数Kp的作用是:
加快系统的响应速度,提高系统的调节精度。
Kp越大,系统的响应速度越快,系统的调节精度越高,但易产生超调,甚至导致系统不稳定;Kp取值过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,使系统静态、动态特性变坏。
(2)积分作用系数Ki的作用是:
消除系统的稳态误差。
Ki越大,系统的稳态误差消除越快,但Ki过大,在响应过程的初期会产生积分饱和现象,从而引起响应过程的较大超调;若Ki过小,将使系统稳态误差难以消除,影响系统的调节精度。
(3)微分作用系数Kd的作用是:
改善系统的动态特性。
其作用主要是能反应偏差信号的变化趋势,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
2、模糊PID参数自整定控制器设计
2.1控制器结构:
2.2模糊化
由PID各个参数对系统的影响得到:
(a)当误差|e|较大时,说明误差的绝对值较大,不论误差的变化趋势如何,都应该考虑控制器的Kp取较大值,以提高响应的快速性;而为防止因为|ec|瞬时过大,kd应该取较小的值;为控制超调,ki也应该取值很小。
(b)当误差|e|在中等大小时,为保证系统的相应速度并控制超调,应减小Kp,Ki值应增大,Kd应适中。
(c)当误差|e|较小时,为保证系统具有良好的稳态特性,应加大Kp、Ki的取值,同时为避免产生振荡,Kd的取值应该和|ec|联系起来。
模糊PID控制根据系统运行的不同状态,考虑Kp、Ki、Kd三者的关联,根据工程经验设计模糊整定这三个参数,选择输入语言变量为误差e和偏差变化率ec,语言变量值取{NB,NM,NS,0,PS,PM,PB}七个模糊值;选择输出语言变量为△Kp,△Ki,△Kd语言变量值也取{NB,NM,NS,0,PS,PM,PB}七个模糊值,建立△Kp,△Ki,△Kd的模糊规则。
2.3设计模糊控制器
在MATLAB命令空间输入fuzzy,弹出对话框,然后进行设置,如图:
设置为两输入三输出结构。
根据经验设置输入输出的隶属度函数都为:
设置完隶属度函数后,按照上述三个模糊规则表格设置模糊规则,如图
设置完毕后,保存文件“zhinengkongz.fis”至磁盘,留给仿真调用,生成的文件为:
[System]
Name='zhinengkongz'
Type='mamdani'
Version=2.0
NumInputs=2
NumOutputs=3
NumRules=49
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'
[Input1]
Name='e'
Range=[-33]
NumMFs=7
MF1='nb':
'zmf',[-3-1]
MF2='nm':
'trimf',[-3-20]
MF3='ns':
'trimf',[-3-11]
MF4='zo':
'trimf',[-202]
MF5='ps':
'trimf',[-113]
MF6='pm':
'trimf',[023]
MF7='pb':
'smf',[13]
[Input2]
Name='ec'
Range=[-33]
NumMFs=7
MF1='nb':
'zmf',[-3-1]
MF2='nm':
'trimf',[-3-20]
MF3='ns':
'trimf',[-3-11]
MF4='zo':
'trimf',[-202]
MF5='ps':
'trimf',[-113]
MF6='pm':
'trimf',[023]
MF7='pb':
'smf',[13]
[Output1]
Name='kp'
Range=[-33]
NumMFs=7
MF1='nb':
'zmf',[-3-1]
MF2='nm':
'trimf',[-3-20]
MF3='ns':
'trimf',[-3-11]
MF4='zo':
'trimf',[-202]
MF5='ps':
'trimf',[-113]
MF6='pm':
'trimf',[023]
MF7='pb':
'smf',[13]
[Output2]
Name='ki'
Range=[-33]
NumMFs=7
MF1='nb':
'zmf',[-3-1]
MF2='nm':
'trimf',[-3-20]
MF3='ns':
'trimf',[-3-11]
MF4='zo':
'trimf',[-202]
MF5='ps':
'trimf',[-113]
MF6='pm':
'trimf',[023]
MF7='pb':
'smf',[13]
[Output3]
Name='kd'
Range=[-33]
NumMFs=7
MF1='nb':
'zmf',[-3-1]
MF2='nm':
'trimf',[-3-20]
MF3='ns':
'trimf',[-3-11]
MF4='zo':
'trimf',[-202]
MF5='ps':
'trimf',[-113]
MF6='pm':
'trimf',[023]
MF7='pb':
'smf',[13]
[Rules]
11,715
(1):
1
12,713
(1):
1
13,621
(1):
1
14,651
(1):
1
15,531
(1):
1
16,442
(1):
1
17,445
(1):
1
21,715
(1):
1
22,713
(1):
1
23,621
(1):
1
24,532
(1):
1
25,532
(1):
1
26,443
(1):
1
27,344
(1):
1
31,614
(1):
1
32,623
(1):
1
33,632
(1):
1
34,532
(1):
1
35,443
(1):
1
36,353
(1):
1
37,354
(1):
1
41,624
(1):
1
42,623
(1):
1
43,533
(1):
1
44,443
(1):
1
45,353
(1):
1
46,263
(1):
1
47,264
(1):
1
51,524
(1):
1
52,534
(1):
1
53,444
(1):
1
54,354
(1):
1
55,354
(1):
1
56,264
(1):
1
57,274
(1):
1
61,547
(1):
1
62,443
(1):
1
63,355
(1):
1
64,255
(1):
1
65,265
(1):
1
66,275
(1):
1
67,177
(1):
1
71,447
(1):
1
72,446
(1):
1
73,256
(1):
1
74,266
(1):
1
75,265
(1):
1
76,175
(1):
1
77,177
(1):
1
3、系统仿真
设控制对象为:
G(s)=25/s^2+6s+25
通过程序(含注释)仿真如下:
clearall;
clc;
a=readfis('zhinengkongz');%读取设定的FIS模糊控制器
ts=0.001;%抽样时间为1MS
sys=tf(25,[1,6,25]);%构造系统G(s)=25/s^2+6s+25
dsys=c2d(sys,ts,'z');%离散化
[num,den]=tfdata(dsys,'v');%得到系数
%设置系统初值
u1=0;u2=0;
y1=0;y2=0;
x=[0,0,0];
e1=0;ec1=0;
Kp0=0.3;Ki0=2;Kd0=1;
fork=1:
5000;%仿真5S
time(k)=k*ts;
r(k)=1;%输入阶跃信号
fpid=evalfis([e1,ec1],a);%模糊推理
Kp(k)=Kp0+fpid
(1);%得到新的参数
Ki(k)=Ki0+fpid
(2);
Kd(k)=Kd0+fpid(3);
u(k)=Kp(k)*x
(1)+Ki(k)*x
(2)+Kd(k)*x(3);%PID输出
y(k)=-den
(2)*y1-den(3)*y2+num
(1)*u(k)+num
(2)*u1+num(3)*u2;%系统输出
e(k)=r(k)-y(k);%计算误差
u2=u1;u1=u(k);%更新数据
y2=y1;y1=y(k);
x
(1)=e(k);%对应KP
x
(2)=x
(2)+e(k)*ts;%对应KI
x(3)=e(k)-e1;%对应KD
ec1=e(k)-e1;%重新计算ec
e1=e(k);%重新计算e
end
%打印输出
figure
(1);
plot(time,y,'g',time,r,'r');
gridon;
xlabel('time(s)');ylabel('y');
figure
(2)
plot(time,Kp,'r');
xlabel('time(s)');ylabel('Kp');
gridon;
figure(3)
plot(time,Ki,'b');
gridon;
xlabel('time(s)');ylabel('Ki');
figure(4)
plot(time,Kd,'g');
xlabel('time(s)');ylabel('Kd');
gridon;
结果显示:
输入输出对比图Kp自动调整曲线
Ki自动调整曲线Kd自动调整曲线
可以看出,系统输出具有较好的超调量和调节时间,没有稳态误差,达到了理想的效果。
4、结束语
模糊自调整PID是在常规PID算法的基础上,通过计算当前系统误差e和误差变化ec,利用模糊推理系统(FIS),查询模糊矩阵表进行参数调整,该方法实现简单、方便易用,对实际控制有重要指导意义。
同时,利用模糊逻辑工具箱设计的模糊控制器,能方便地修改输入输出的论域、模糊子集、隶属度函数及模糊控制规则等,突破了传统方法需要编制大量程序的做法。
用模糊推理的方法在动态过程中改变PID的参数,能够发挥两种控制方式的优点,克服两者的缺点,提高控制质量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模糊 PID 控制器 设计 说明