增量式PID控制算法的MATLAB仿真.docx

上传人:b****6 文档编号:5951447 上传时间:2023-01-02 格式:DOCX 页数:19 大小:16.97KB
下载 相关 举报
增量式PID控制算法的MATLAB仿真.docx_第1页
第1页 / 共19页
增量式PID控制算法的MATLAB仿真.docx_第2页
第2页 / 共19页
增量式PID控制算法的MATLAB仿真.docx_第3页
第3页 / 共19页
增量式PID控制算法的MATLAB仿真.docx_第4页
第4页 / 共19页
增量式PID控制算法的MATLAB仿真.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

增量式PID控制算法的MATLAB仿真.docx

《增量式PID控制算法的MATLAB仿真.docx》由会员分享,可在线阅读,更多相关《增量式PID控制算法的MATLAB仿真.docx(19页珍藏版)》请在冰豆网上搜索。

增量式PID控制算法的MATLAB仿真.docx

增量式PID控制算法的MATLAB仿真

增量式PID控制算法的MATLAB仿真

PID控制的原理

在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,

简称PID控制,又称PID调节。

PID控制器问世至今已有近70年历史,它以其

结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的

其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,

这时应用PID控制技术最为方便。

即当我们不完全了解一个系统和被控对象,或

不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。

PID控制,

实际中也有PI和PD控制。

PID控制器就是根据系统的误差,利用比例、积分、

微分计算出控制量进行控制的。

一、题目:

用增量式PID控制传递函数为G(s)的被控对象

G(s)=5/(s^2+2s+10),

用增量式PID控制算法编写仿真程序(输入分别为单位阶跃、正弦信号,

采样时间为1ms,控制器输出限幅:

[-5,5],仿真曲线包括系统输出及误差

曲线,并加上注释、图例)。

程序如下

{

U(n)K{[(n)(n1)]

二、增量式PID原理

T

T

(n)[(n)2(n1)(n2)]}

D

T

T

O

P

I

U(k)=u(k)+U(k-1)

{

i()

nn

U(n)K[(n)(n1)]KnKd[(n)2

(1)

(2)]

O

P

U(k)=u(k)+U(k-1)

注:

U(k)才是PID控制器的输出

三、分析过程

1、对G(s)进行离散化即进行Z变换得到Z传递函数G(Z);

2、分子分母除以z的最高次数即除以z的最高次得到;

3、由z的位移定理Z[e(t-kt)]=z^k*E(z)逆变换得到差分方程;

4、PID编程实现

1

d

y

dt

yT

P:

△y=Kp*△εI:

D:

T

Ddt

I

由于是仿真采样此处为增量式PID控制故按照以下程序实现PID控制:

x

(1)=error-error_1;

%CalculatingP

x

(2)=error-2*error_1+error_2;%CalculatingD

x(3)=error;

%CalculatingI

四、程序清单

clearall;

closeall;

ts=0.001;

sys=tf(5,[1,2,10]);

dsys=c2d(sys,ts,'z');

[num,den]=tfdata(dsys,'v');

u_1=0.0;u_2=0.0;

y_1=0.0;y_2=0.0;

x=[0,0,0]';

error_1=0;

error_2=0;

fork=1:

1:

10000

time(k)=k*ts;

S=2;

ifS==1

kp=6;ki=45;kd=5;

rin(k)=1;

%StepSignal

elseifS==2

kp=10;ki=0.1;kd=15;

%SineSignal

rin(k)=0.5*sin(2*pi*k*ts);

end

du(k)=kp*x

(1)+kd*x

(2)+ki*x(3);

%PIDController

u(k)=u_1+du(k);

%Restrictingtheoutputofcontroller

ifu(k)>=5

u(k)=5;

end

ifu(k)<=-5

u(k)=-5;

end

%Linearmodel

yout(k)=-den

(2)*y_1-den(3)*y_2+num

(2)*u_1+num(3)*u_2;

error(k)=rin(k)-yout(k);

%Returnofparameters

u_2=u_1;u_1=u(k);

y_2=y_1;y_1=yout(k);

x

(1)=error(k)-error_1;

%CalculatingP

x

(2)=error(k)-2*error_1+error_2;%CalculatingD

x(3)=error(k);

error_2=error_1;

error_1=error(k);

end

%CalculatingI

figure

(1);

plot(time,rin,'b',time,yout,'r');

xlabel('time(s)'),ylabel('rin,yout');

figure

(2);

plot(time,error,'r')

xlabel('time(s)');ylabel('error');

 

调节过程如下:

1.首先调节ki=kd=0,调节比例环节kp,从小到大直至临界稳定。

2.调节ki,依次增大直到等幅振荡为止。

3.调节kd,逐渐增大直至临界振荡。

4.再把各个环节都加入系统进行微调各环节增益。

1

0.9

0.8

0.7

0.6

t

u

o

0.5

0.4

0.3

0.2

0.1

0

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=1,ki=0,kd=0;

1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=3,ki=0,kd=0

1.4

1.2

1

0.8

t

u

o

y

n

i

r

0.6

0.4

0.2

0

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=0,kd=0

1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

kp=9,ki=0,kd=0

1

0.9

0.8

0.7

0.6

t

u

o

0.5

0.4

0.3

0.2

0.1

0

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

kp=7,ki=0,kd=0

1.4

1.2

1

0.8

0.6

0.4

0.2

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=15,ki=0

1.4

1.2

1

0.8

t

u

o

y

n

i

r

0.6

0.4

0.2

0

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=30,ki=0

1.4

1.2

1

0.8

0.6

0.4

0.2

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=45,ki=0

1.4

1.2

1

0.8

t

u

o

y

n

i

r

0.6

0.4

0.2

0

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=50,kd=0

1.4

1.2

1

0.8

0.6

0.4

0.2

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=45,kd=1

1.4

1.2

1

0.8

t

u

o

y

n

i

r

0.6

0.4

0.2

0

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=45,kd=3

1.4

1.2

1

0.8

0.6

0.4

0.2

0

t

u

o

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

Kp=6,ki=45,kd=5

按照顺序调节后的波形如上图,没有达到理想的波形,不知道为什么,去掉限幅和if的选

择条件改参数后得到下图:

1.6

1.4

1.2

1

t

u

o

0.8

0.6

0.4

0.2

0

y

n

i

r

0

1

2

3

4

5

6

7

8

9

10

time(s)

此时kp=150;ki=0.132.;kd=2400

用simulink仿真如下,此时kp=6,ki=45,kd=5,这种效果比较好,但不知道怎么用

程序来实现这种比较好的效果。

结论:

通过这次作业,学习了一些PID的知识,但是还是有很多疑问没有解决,

不是很会调参数,而且用相同参数程序仿真出来的图形和simulink仿出来的图形

不一样,这一个还没有得到解决,还需要后面更多的学习。

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

当前位置:首页 > 自然科学

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

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