模糊PID控制器设计.docx

上传人:b****2 文档编号:1335848 上传时间:2022-10-20 格式:DOCX 页数:9 大小:18.43KB
下载 相关 举报
模糊PID控制器设计.docx_第1页
第1页 / 共9页
模糊PID控制器设计.docx_第2页
第2页 / 共9页
模糊PID控制器设计.docx_第3页
第3页 / 共9页
模糊PID控制器设计.docx_第4页
第4页 / 共9页
模糊PID控制器设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

模糊PID控制器设计.docx

《模糊PID控制器设计.docx》由会员分享,可在线阅读,更多相关《模糊PID控制器设计.docx(9页珍藏版)》请在冰豆网上搜索。

模糊PID控制器设计.docx

模糊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参数自整定控制器设计

控制器结构:

模糊化

由PID各个参数对系统的影响得到:

(a)当误差|e|较大时,说明误差的绝对值较大,不论误差的变化趋势如何,都应该考虑控制器的Kp取较大值,以提高响应的快速性;而为防止因为|ec|瞬时过大,kd应该取较小的值;为控制超调,ki也应该取值很小。

(b)当误差|e|在中等大小时,为保证系统的相应速度并控制超调,应减小Kp,Ki值应增大,Kd应适中。

(c)当误差|e|较小时,为保证系统具有良好的稳态特性,应加大Kp、Ki的取值,同时为避

免产生振荡,Kd的取值应该和|ec|联系起来。

模糊PID控制根据系统运行的不同状态,考虑KpKi、Kd三者的关联,根据工程经验设

计模糊整定这三个参数,选择输入语言变量为误差e和偏差变化率ec,语言变量值取{NB,

NMNS0,PS,PM,PB}七个模糊值;选择输出语言变量为△©,△Ki,△Kd语言变量值

也取{NB,NMNS0,PS,PM,PB}七个模糊值,建立△©,△Ki,△Kd的模糊规则。

设计模糊控制器

在MATLAB命令空间输入fuzzy,弹出对话框,然后进行设置,如图:

设置为两输入三输出结构。

根据经验设置输入输出的隶属度函数都为:

设置完隶属度函数后,按照上述三个模糊规则表格设置模糊规则,如图

设置完毕后,保存文件“”至磁盘,留给仿真调用,生成的文件为:

[System]

Name='zhinengkongz'

Type='mamdani'

Version=

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

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

354

(1):

1

354

(1):

1

264

(1):

1

274

(1):

1

547

(1):

1

443

(1):

1

355

(1):

1

255

(1):

1

265

(1):

1

275

(1):

1

177

(1):

1

447

(1):

1

446

(1):

1

256

(1):

1

266

(1):

1

265

(1):

1

175

(1):

1

177

(1):

1

系统仿真

设控制对象为:

G(s)=25/s^2+6s+25

通过程序(含注释)仿真如下:

clearall;

clc;

FIS模糊控制器

a=readfis('zhinengkongz');%读取设定的

54,

55,

56,

57,

61,

62,

63,

64,

65,

66,

67,

71,

72,

73,

74,

75,

76,

77,

3、

ts=;

抽样时间为1MS

sys=tf(25,[1,6,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=;Ki0=2;Kd0=1;

fork=1:

5000;%time(k)=k*ts;

r(k)=1;%fpid=evalfis([e1,ec1],a);%Kp(k)=Kp0+fpid

(1);%Ki(k)=Ki0+fpid

(2);

构造系统G(s)=25/s^2+6s+25

离散化

得到系数

仿真5S

输入阶跃信号

模糊推理

得到新的参数

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1