当前位置:文档之家› 基于模糊控制和PID控制自主车辆速度跟踪控制(含MATLAB仿真程序)

基于模糊控制和PID控制自主车辆速度跟踪控制(含MATLAB仿真程序)

基于模糊控制和PID控制自主车辆速度跟踪控制(含MATLAB仿真程序)
基于模糊控制和PID控制自主车辆速度跟踪控制(含MATLAB仿真程序)

一、设计原理

设计思想:油门控制采用增量式PID 控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。

选择规则:首先定义速度偏差-50 km/h ≤e (k )≤50km/h ,-20≤ec= e (k )- e (k-1)≤20,阀值e swith =10km/h 。

若:e (k )<0① e (k )>- e swith and throttlr_1≠0 选择油门控制

② 否则:先将油门控制量置0,再选择刹车控制 若:0

1.确定模糊语言变量

e 基本论域取[-50,50],ec 基本论域取[-20,20],刹车控制量输出u 基本论域取[-30,30],这里我将这三个变量按照下面的公式进行压缩离散化:

)]2

(2[

b

a x a

b n y +--= 其中,],[b a x ∈,n 为离散度。

e 、ec 和u 均取离散度n=3,离散化后得到三个量的语言值论域分别为:

E=EC=U={-3,-2,-1,0,1,2,3}

其对应语言值为{ NB,NM,NS,ZO, PS,PM,PB } 2.确定隶属度函数

E/EC 和U 取相同的隶属度函数,边界选取钟形隶属度函数,中间取三角形隶属度函数,即:

E EC U

(,5,1)(,3,2,0)(,3,1,1)u (,2,0,2)(,1,1,3)(,0,2,3)(,1,5)g x trig x trig x trig x trig x trig x g x ∧∧--??--?

?--?

=-??-?

??

?

说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略。实际EC 和E 输入值若超出论域范围,则取相应的端点值。

3.模糊控制规则

由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表:

表1:E/EC 和U 语言值隶属度向量表

设置模糊规则库如下表:

表2:模糊规则表

3.模糊推理

由模糊规则表3可以知道输入E 与EC 和输出U 的模糊关系,这里我取两个例子做模糊推理如下:

if (E is NB) and (EC is NM) then (U is PB)

那么他的模糊关系子矩阵为:

1211U EC E R R R R ??=

其中,711)0,,0,5.0,1(0?== P R E ,即表1中NB 对应行向量,同理可以得到,712)0,,0,5.0,1,0(1?== P R EC , 711)0,,0,5.0,1(0?== P R U

7

72

10000

000000005.05.00005.010)0,,0,5.0,1,0()0,,0,5.0,1(?????????

???

??

???=?=?

T

EC E R R 49121)0,,0,5.0,5.0,0,0,0,0,0,5.0,1,0(?= EC E R

7

49121100000

000

5.05.00005.0100

000

)0,,0,5.0,1()0,,5.0,1,0(????????????

??

???=?=?=

T

U EC E R R R if (E is NB or NM) and (EC is NB) then (U is PB)

21

211()E E EC U R R R R R =??,结果略。

按此法可得到27个关系子矩阵,对所有子矩阵取并集得到模糊关系矩阵如下:

)27,,2,1(21 ==i R R R R i

由R 可以得到模拟量输出为:

()U E EC R =?

4.去模糊化

由上面得到的模拟量输出为1×7的模糊向量,每一行的行元素(u (z ij ))对应相应的离散变量z j ,则可通过加权平均法公式解模糊:

21

210

()(1,2,

,21)()

ij

j

i ij

i u z

z u i j u z

===

==∑∑

从而得到实际刹车控制量的精确值u 。 油门控制:

油门控制采用增量式PID 控制,即:

)2()1()2()()()1()(-+---++++-=k e k k e k k k e k k k k u k u d d p d i p

其中k i =kp ×ts/Ti ,d k =kp ×Td/ts 只需要设置p k 、Ti 、Td 三个参数即可输出油门控制量。

二、调整参数

按照上述算法流程,应用MATLAB 进行仿真实现,在参数调试过程中采用如下方法:

首先将油门和刹车分开进行调整参数,最后再将调整好的参数写入总程序中调整。

1.油门PID 参数调节

油门只需要调整kp 、Ti 、Td 三个参数,根据经验,首先令Ti 、Td 为0,kp 由0逐渐增大,在增大kp 的过程可知,kp 越大系统调节时间越短并趋于稳定,在达到一定程度后,继续增大系统将出现波动。

time(s)

v d ,y

time(s)

v d ,y

kp=0.1

kp=0.4

time(s)

v d ,y

kp=0.9

调节Ti 的过程发现,Ti 对系统稳定性影响并不大,将Ti 由10增大到30的过程中系统输出没有变化。

time(s)

v d ,y

time(s)

v d ,y

Ti=10 Ti=30

在给Td 赋值时,最开始从1增大,发现系统越来越不稳定,于是逐渐减小,到0.003时趋于稳定,它的可调节范围很小,随其值的减小最大误差值逐渐减小,增大则系统趋于不稳定。

time(s)

v d ,y

time(s)

v d ,y

kp=0.001 kp=0.002

time(s)

v d ,y

kp=0.003

2.刹车调节

首先,为了适应该系统,将刹车输出量限制在[-150,150]之内(最初设计其范围为[-30,30]),对于该控制,可调节参数较多,包括隶属度函数、模糊规则表、输入输出变量区间、语言值论域、模糊推理及解模糊方法等等,这里由于模糊规则需要经验设定,本算法没有实际参考,所以这里只调整规则表,其他参数固定不变。

由于实际刹车控制中对于加速采取比较单一的置零(在选择规则中设定)输出,所以在规则表中e<0部分没有规则,然而为了仿真方

与此同时,将刹车的输出变量取反,以此来实现减速的效果!在调整模糊规则表的时候,必须依据输入变量e 和ec 的范围逐个检验,按照他们各自的语言值以及相应的输出语言值进行调整。

例如,初始速度为50,期望速度为0,即e=-50,ec=-50,则此时输出对应模糊规则表中第一行第一列PB ,而下一时刻ec 几乎为0,所以在调节过程中,主要进行对EC 变量的ZO 行进行调节,若响应时间短,则增大相应输出语言值,反之亦然。

仿真时,分两段,首先加速,之后减速,采用上面的模糊规则表,得到如下图像:

time(s)

v d ,y

从图像的上升阶段分析可以看出,其加速阶段并不能达到稳态值,但对于刹车控制可以忽略其影响,而减速阶段实际上已经比较理

想,我取稳态误差达到5%稳定,则此规则达到稳态的时间为7.4s ,这里尝试进行如下修改,将规则表中带下划线的部分以此改为:PM,PS,PS,ZO,即,增大了输出语言值。则得到如下图像:

time(s)

v d ,y

此规则达到稳定的时间为6.9s ,由此分析模糊规则的调整规则如下:若想加快响应时间,增大误差和误差变化率负大区域附近的输出语言值,并增大误差变化率零区域附近的输出语言值,可能还会引起超调量的增大,所以只需做临近语言值之间的变化。

3.整体调节

此时将刹车与油门同时加到仿真模型中,分别做加速和减速仿真,依据分别调节时的规律做微量调节就可以基本达到要求。

time(s)

v d ,y

4.待解决问题

在调试过程中发现,油门控制(PID )过程在达到稳态时出现抖

动,并且三个参数对他的影响很小,具体原因待考证;油门控制给系统的输入值出现大波动,每一次达到峰值持续相同时间后变为0再持续一段时间又变为峰值;模糊控制的语言值论域较小,对于扩大语言值论域对系统的影响还有待验证;模糊控制的输入变量压缩方式有待验证其合理性;模糊控制与PID控制的相互配合,在该程序中,由于两种控制的输出控制量不同,在给到仿真系统时很难统一;油门与上车的选择规则与实际系统还存在很大的改进。

附录

MATLAB仿真程序

function kk=bingji(A)

for i=1:49

for k=1:7

for j=1:26

n=7*j+k;

if(A(i,k)>=A(i,n))

kk(i,k)=A(i,k);

else

A(i,k)=A(i,n);

kk(i,k)=A(i,k);

end

end

end

end

function o=dikaer(A,n,B,N)

for i=1:n

for j=1:N

if(A(i)<=B(j))

C(i,j)=A(i);

else

C(i,j)=B(j);

end

o=C;

end

end

return;

function T=flisan(a,b,n,x)

y=(a+b)/2+(b-a)*x/(2*n);

T=round(y);

return;

function mm=bell(x,a,b,c)

z=abs((x-c)/a)^(2b);

y=1/(1+z);

mm=y;

return;

function ooo=jbing(A,B)

for i=1:49

for j=1:7

if(A(i,j)

A(i,j)=B(i,j);

end

end

ooo=A;

end

return;

function MM=jdikaer(A,n,B,m) for i=1:m

for j=1:n

if(A(j)

B(j,i)=A(j);

end

end

MM=B;

end

return;

function oo=jiao(A,B)

for i=1:7

for j=1:7

if(A(i,j)>B(i,j))

A(i,j)=B(i,j);

end

end

oo=A;

end

return;

function mm=lbell(x,a,b,c)

if(x

mm=1;

else

z=(x-c)/a;

v=abs(z);

n=v^(2*b);

y=1/(1+n);

mm=y;

end

return;

function L=lisan(a,b,n,x)

y=2*n*x/(b-a)-n*(a+b)/(b-a); L=y;

return;

function UU=max(A)

for i=1:7

for j=1:49

if(A(j,i)>=Q(i))

Q(i)=A(i,j);

end

end

UU=Q;

end

return;

function sum1=mean(U)

a=[-3 -2 -1 0 1 2 3];

sum2=0;sum3=0;

for i=1:7

sum2=sum2+U(i);

sum3=sum3+U(i)*a(i);

end

sum1=sum3/sum2;

return;

function mm=rbell(x,a,b,c) if(x>c)

mm=1;

else

z=(x-c)/a;

v=abs(z);

n=v^(2*b);

y=1/(1+n);

mm=y;

end

return;

function mww=trig(x,a,b,c) if(x<=a)

mww=0;

else

if(x>a&&x<=b)

mww=(x-a)/(b-a);

else

if(x>b&&x<=c)

mww=(c-x)/(c-b);

else

if(x>c)

mww=0;

end

end

end

end

return;

function ooo=xbing(A,B)

for i=1:7

if(A(i)

A(i)=B(i);

end

ooo=A;

end

return;

clear all

%************************?£oy??·¨

%/*********á¥ê??è?òá?*****%

P0=[1,0.5,0,0,0,0,0];%*********NB

P1=[0,1,0.5,0,0,0,0];%*********NM

P2=[0,0.5,1,0.5,0,0,0];%*********NS

P3=[0,0,0.5,1,0.5,0,0];%*********ZO

P4=[0,0,0,0.5,1,0.5,0];%*********PS

P5=[0,0,0,0,0.5,1,0];%*********PM

P6=[0,0,0,0,0,0.5,1];%*********PB

%***********ó????μ*****%

NB=-3;NM=-2;NS=-1;ZO=0;PS=1;PM=2;PB=3;

%/*********?£oy1??ò±í*****%

Pg=[PB PB PM PM PS ZO ZO;

PB PM PM PS ZO ZO NS;

PM PM PS PS ZO NS NS;

PM PS PS ZO ZO NS NM;

PS PS ZO ZO ZO NS NM;

PS ZO ZO ZO NS NM NB;

ZO ZO ZO NS NM NM NB];

%/*********?ù?Y?£oy1??ò±í?????£oy1??μ???óR*****% R1_=dikaer(xbing(P0,P1),7,P0,7);

R1_=reshape(R1_,1,49);

R1=dikaer(R1_,49,P6,7);

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(xbing(P01,P2),7,P6,7); R15_=reshape(R15_,1,49);

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,R23,R24,R25,R26,R27];

R=bingji(m);

%*************3?ê??ˉ±?á?

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_1=0;brake_1=0;

x=[0 0 0];

ts=0.001;

sys=tf(1,[1,2,1],'inputdelay',0.5);

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

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

for k=1:1:40000

%****************?????μí3

time(k)=k*ts;

if(k<20000)

vd(k)=50;

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;

%*******************************óí??????

kp=0.42;Ti=30;Td=0.0018;%*** vd(k)=1

% kp=0.42;Ti=30;Td=0.0018;%*** vd(k)=1

% kp=0.0015;Ti=0.01;Td=0.002;%***vd(k)=1*time(k)+10 % kp=0.0015;Ti=0.001;Td=0.002;%***

vd(k)=1*time(k)^2+time(k)+2;

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;

end

if(throttle<-2000)

throttle=-2000;

end

%****************************é23μ????

%/*********?1??ê?è?±?á?*****%

E=lisan(-50,50,3,e);

EC=lisan(-20,20,3,ec);

%/*********????êμ?ê?ó2??¢?ó2?±??ˉ?êμ?á¥ê??è?òá?*****% 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(6)=trig(E,0,2,3);

E_R(7)=rbell(E,1,4,3);

EC_R(1)=lbell(EC,1,4,-3);

EC_R(2)=trig(EC,-3,-2,0);

EC_R(3)=trig(EC,-3,-1,1);

EC_R(4)=trig(EC,-2,0,2);

EC_R(5)=trig(EC,-1,1,3);

EC_R(6)=trig(EC,0,2,3);

EC_R(7)=rbell(EC,1,4,3);

%/*********?????£oyá?ê?3?*****%

U_R1=dikaer(E_R,7,EC_R,7);

U_R1=reshape(U_R1,1,49);

U_R2=jdikaer(U_R1,49,R,7);

U_R=max(U_R2);

u_L=mean(U_R);%Dèòa????

%/*********??????è·á?ê?3?*****%

brake=-flisan(-2000,2000,3,u_L);

e_2=e_1;

e_1=e;

%/************************????1??ò

if (e<0)

if ((e>-Eswith)||(throttle_1~=0))

if(throttle<=throttle_1)

throttle_1=throttle;

% throttle_1=throttle_1-throttle; u=throttle;

Q(k)=u;

W(k)=0;

else

throttle=0;

throttle_1=throttle;

u=throttle;

Q(k)=u;

W(k)=0;

end

else

if(throttle_1==0)

brake_1=brake;

u=brake;

W(k)=u;

Q(k)=0;

else

throttle=0;

throttle_1=throttle;

u=throttle;

Q(k)=u;

W(k)=0;

end

end

else

if(e~=0)

if(brake_1==0)

throttle_1=throttle;

u=throttle;

Q(k)=u;

W(k)=0;

else

brake=0;

brake_1=brake;

u=brake;

end

else

u=0;

W(k)=0;

Q(k)=0;

end

end

%********************?-í?ê?3?á??¨ò?

M(k)=u;

N(k)=e;

%******************************3ù?í?·?ú

if (time(k)<=0.5)

u=0;

else

u=M(k-0.5/ts);

end

end

% ?-í?

figure(1);

plot(time,vd,'r',time,y,'k','linewidth',2); xlabel('time(s)');

ylabel('vd,y');

legend('?úí?','êμ?ê');

figure(2);

plot(time,Q,'r',time,W,'k','linewidth',2); xlabel('time(s)');

ylabel('u');

figure(2);

plot(time,Q,'r','linewidth',2);

xlabel('time(s)');

ylabel('u');

figure(3);

plot(time,W,'r','linewidth',2);

xlabel('time(s)');

ylabel('u');

figure(4);

plot(time,N,'b'); xlabel('time£¨s£?'); ylabel('e');

增量式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],仿真曲线包括系统输出及误差曲线,并加上注释、图例)。程序如下 二、 增量式PID 原理 { U(k)= ?u(k)+ U(k-1) 或 { U(k)= ?u(k)+ U(k-1) 注:U(k)才是PID 控制器的输出 三、 分析过程 1、对G(s)进行离散化即进行Z 变换得到Z 传递函数G(Z); 2、分子分母除以z 的最高次数即除以z 的最高次得到; )]}2()1(2)([)()]1()({[)(-+--++ --=?n n n T T n T T n n K n U D I P O εεεεεε)] 2()1(2)([)(i )]1()([)(-+--++--=?n n n Kd n K n n K n U P O εεεεεε

基于MATLAB的PID控制器参数整定及仿真

基于MATLAB的PID控制器参数整定及仿真 摘要: PID控制器结构和算法简单应用广泛,但参数整定方法复杂,通常用 凑试法来确定。文中探讨利用MATLAB实现PID参数整定及仿真的方法,并分析、比较比例控制、比例积分控制和比例微分控制,探讨了Kp, Ti, Td 3个参数对PID 控制规律的影响。 关镇词: MATLAB ; PID控制器;参数整定;仿真 Parameter tuning and emulation of PID controller based on MATLAB Ahstratct; The control structure and algorithm of PID is easy and widely applicable,but its setting meth-ods of parameter are multifarious. Generally utilize guessing and trying to fix. This artical is convenient to tune PID parameters and emulate through MATLAB experiment. Analyze and compare the proportion control, the proportion integral control and the proportion differential control. Discuss the influence of three parameters KP ,Ti and Td to the PID control rules. Key words ; MATLAB;PID controller; parameter tuning; emulation 引言 PID控制器又称为PID调节器,是按偏差的比例P( Proportional )、积分I(Integxal)、微分D ( Differential orDerivative)进行控制的调节器的简称,它主要针对控制对象来进行参数调节。PID控制器问世至今,控制理论的发展经历了古典控制理论、现代控制理论和智能控制理论3个阶段。在工业控制系统和工程实践中,传统的PID控制策略依然被广泛采用。因为它算法简单、稳定性好、工作可靠、鲁棒性好,在工程上易于实现。但PID控制器的参数整定方法复杂,通常采用PID归一参数整定法和试凑法来确定,费时、费力,且不能得到最优的整定参数。针对这一问题,文中探讨用MATLAB实现PID参数整定及仿真的方法及控制参数对PTD控制规律的影响。利用MATLAB强大的计算仿真能力,解决了利用试凑法来整定参数十分浩繁的工作,可以方便、快速地找到使系统达到满意性能指标的参数。 PID控制器的原理与算法 当被控对象的结构和参数不能被完全掌握,或得不到精确的数学模型时,应用PID控制技术最为方便。PID控制器就是根据设定值与实际值的误差,利用比例(P)、积分(I)、微分(D)等基本控制规律,或者把它们 适当配合形成有PI , PD和PID等的复合控制规律,使控制系统满足性能指标要求。 控制系统大多都有储能元件,这就使系统对外界的响应有一定的惯性,且能量和信息在传输和转化的过 程中,由于管道、距离等原因也会造成时间上的延迟,所以,按偏差进行比例调

数字PID控制器的MATLAB仿真

数字PID控制器的MATLAB仿真 江苏科技大学 电子信息学院 实验报告 评定成绩指导教师实验课程:计算机控制技术 宋英磊实验名称:数字PID控制器的MATLAB仿真 学号: 1345733203 姓名: 胡文千班级: 13457332 完成日期: 2015年 11 月16日 一、实验目的 (1)掌握用SIMULINK对系统进行仿真的基本方法。 (2)对PID数字控制器进行仿真。 二、实验内容 1、基本的PID控制 在模拟控制系统中,控制器最常用的控制规律是PID控制。模拟PID控制系统原理 框图如图1-1所示。 比例y(t)r(t)+e(t)u(t)微分被控对象 +-积分 图1-1 模拟PID控制系统原理框图 PID控制规律为: t,,1de(t),,u(t),ke(t),e(t)dt,T pD,,,0TdtI,, ,,()1Us,,()1Gs,,k,,Ts或写成传递函数的形式 pD,,E(s)TsI,,

133仿真1 以二阶线性传递函数为被控对象,进行模拟PID控制。输入信号 2s,25s k,60,k,1,k,3,仿真时取,采用ODE45迭代方法,仿真时间 r(t),sin(2,*0.2t)pid 10s。 仿真方法:在Simulink下进行仿真,PID控制由Simulink Extras节点中的PID Controller 提供。 仿真程序:ex1_1.mdl,如图1-2所示。 图1-2 连续系统PID的Simulink仿真程序 将该连续系统的模拟PID控制正弦响应结果截图后至于下面的空白处: 连续系统的模拟PID控制正弦响应如图1-3所示。

图1-3 连续系统的模拟PID控制正弦响应 2、连续系统的数字PID控制仿真 计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此 连续PID控制算法不能直接使用,需要采用离散化方法。在计算机PID控制中,使 用的是数字PID控制器。 按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数 值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID位置式表达式: k,,TTD,,ukkekejekek(),(),(),((),(,1)),p,,TT,0jI,, kekek(),(,1)kekkejTk,(),(),,pidT,0j kpk,,k,kT式中,,e为误差信号(即PID控制器的输入),u为控制信号(即控 制idpDTI 器的输出)。 在仿真过程中,可根据实际情况,对控制器的输出进行限幅。连续系统的数字PID控制 可实现D/A及A/D的功能,符合数字实时控制的真实情况,计算机及DSP的实 时PID控制 都属于这种情况。 1Gs, 仿真2 设被控对象为一个电机模型传递函数,式中J=0.0067,B=0.1。输()2Js,Bs入信号为,采用PID控制,其中。采用ODE45方法求解连 k,20,k,0.50.5sin(2,t)pd续被控对象方程。 2dydyYs()1仿真方法: 因为,所以J,B,u,另Gs,,()22dtdtUsJs,Bs() ,y,y,,12,,则,因此连续对象微分方程函数ex3f.m如下 y1,y,y2,y,, y2,,(B/J)y,(1/J)*u,2, function dy = ex3f(t,y,flag,para)

PID控制算法的matlab仿真

PID 控制算法的matlab 仿真 PID 控制算法就是实际工业控制中应用最为广泛的控制算法,它具有控制器设计简单,控制效果好等优点。PID 控制器参数的设置就是否合适对其控制效果具有很大的影响,在本课程设计中一具有较大惯性时间常数与纯滞后的一阶惯性环节作为被控对象的模型对PID 控制算法进行研究。被控对象的传递函数如下: ()1d s f Ke G s T s τ-= + 其中各参数分别为30,630,60f d K T τ===。MATLAB 仿真框图如图1所示。 图1 2 具体内容及实现功能 2、1 PID 参数整定 PID 控制器的控制参数对其控制效果起着决定性的作用,合理设置控制参数就是取得较好的控制效果的先决条件。常用的PID 参数整定方法有理论整定法与实验整定法两类,其中常用的实验整定法由扩充临界比例度法、试凑法等。在此处选用扩充临界比例度法对PID 进行整定,其过程如下: 1) 选择采样周期 由于被控对象中含有纯滞后,且其滞后时间常数为 60d τ=,故可选择采样周期1s T =。 2) 令积分时间常数i T =∞,微分时间常数0d T =,从小到大调节比例系数K , 使得系统发生等幅震荡,记下此时的比例系数k K 与振荡周期k T 。 3) 选择控制度为 1.05Q =,按下面公式计算各参数:

0.630.490.140.014p k i k d k s k K K T T T T T T ==== 通过仿真可得在1s T =时,0.567,233k k K T ==,故可得: 0.357,114.17,32.62, 3.262p i d s K T T T ==== 0.0053.57 p s i i p d d s K T K T K T K T === = 按此组控制参数得到的系统阶跃响应曲线如图2所示。 01002003004005006007008009001000 0.20.40.60.811.21.41.6 1.8 图2 由响应曲线可知,此时系统虽然稳定,但就是暂态性能较差,超调量过大,且响应曲线不平滑。根据以下原则对控制器参数进行调整以改善系统的暂态过程: 1) 通过减小采样周期,使响应曲线平滑。 2) 减小采样周期后,通过增大积分时间常数来保证系统稳定。 3) 减小比例系数与微分时间常数,以减小系统的超调。 改变控制器参数后得到系统的阶跃响应曲线如图3所示,系统的暂态性能得到明显改善、

基于MATLAB的PID控制器设计说明

基于MATLAB的PID 控制器设计

基于MATLAB的PID 控制器设计 一、PID控制简介 PID控制是最早发展起来的经典控制策略, 是用于过程控制最有效的策略之一。由于其原理简单、技术成,在实际应用中较易于整定, 在工业控制中得到了广泛的应用。它最大的优点是不需了解被控对象精确的数学模型,只需在线根据系统误差及误差的变化率等简单参数, 经过经验进行调节器参数在线整定, 即可取得满意的结果, 具有很大的适应性和灵活性。 积分作用:可以减少稳态误差, 但另一方面也容易导致积分饱和, 使系统的超调量增大。 微分作用:可提高系统的响应速度, 但其对高频干扰特别敏感, 甚至会导致系统失稳。 所以, 正确计算控制器的参数, 有效合理地实现 PID控制器的设计,对于PID 控制器在过程控制中的广泛应用具有重要的理论和现实意义。 在PID控制系统中, PID控制器分别对误差信号e(t)进行比例、积分与微分运算, 其结果的加权和构成系统的控制信号u(t),送给对象模型加以控制。 PID控制器的数学描述为 其传递函数可表示为: 从根本上讲, 设计PID控制器也就是确定其比例系数Kp、积分系数T i 和微分系数T d , 这三个系数取值的不同, 决定了比例、积分和微分作用的强弱。控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下, 适当选择控制器参数使控制仪表的特性和控制对象的特性相配合, 从而使控制系统的运行达到最佳状态, 取得最好的控制效果。 二、MATLAB的 Ziegler-Nichols算法PID控制器设计。 1、PID控制器的Ziegler-Nichols参数整定 在实际的过程控制系统中, 有大量的对象模型可以近似地由一阶模型 来表示。这个对象模型可以表示为 sL - e sT 1 K G(s) + = 如果不能建立起系统的物理模型, 可通过试验测取对象模型的阶跃响应, 从而得到模型参数。当然, 我们也可在已知对象模型的情况下, 利用MATLAB,通过使用step ( ) 函数得到对象模型的开环阶跃响应曲线。在被控对象的阶跃响应中, 可获取K 、L 和T参数, 也可在MATLAB中由dcgain ( ) 函数求取 K值。

PID自适应控制学习与Matlab仿真

PID自适应控制学习与Matlab仿真 0 引言 在P ID控制中,一个关键的问题便是P I D参数整定。传统的方法是在获取对象数学模型的基础上,根据某一整定原则来确定PID参数。然而实际的工业过程往往难以用简单的一阶或二阶系统来描述,且由于噪声、负载扰动等因素的干扰,还可以引起对象模型参数的变化甚至模型结构的政变。这就要求在P I D 控制中。不仅PID参数的整定不依赖于对象数学模型,而PID参数能在线阐整,以满足实时控制的要求。 1 自适应控制的概念及分类 控制系统在设计和实现中普通存在着不确定性,主要表现在:①系统数学模型与实际系统间总是存在着差别,即所谓系统具有末建模的动态特性;②系统本身结构和参数是未知的或时变的;③作用在系统上的扰动往往是随机的,且不可量测;④系统运行中,控制对象的特性随时间或工作环境改变而变化,且变化规律往往难以事先知晓。 为了解决控制对象参数在大范围变化时,一般反馈控制、一般优控制和采用经典校正方法不能解决的控制问题。参照在日常生活中生物能够遏过自觉调整本身参数改变自己的习性,以适应新的环境特性。为此,提出自适应控制思想。 自适应控制的概念 所谓自适应控制是指对于控制对象的动态信息了解得不够充分对周围环境变化尚掌握不够明确的情况下控制系统对控制器的参数进行积极的自动调节。 自适应控制方法应该做到:在系统远行中,依靠不断采集控制过程信息,确定被控对象的当前实际工作状态,优化性能准则,产生自适应控制规律,从而实时地调整控制器结构或参数,使系统始终自动地工作在最优或次最优的运行状态下。 作为较完善的自适应控制应该具有以下三方面功能: (1)系统本身可以不断地检测和处理理信息,了解系统当前状态。 (2)进行性能准则优化,产生自适应校制规律。 (3)调整可调环节(控制器),使整个系统始终自动运行在最优或次最优工作状态。 自适应控制是现代控制的重要组成部分,它同一般反馈控制相比较有如下突出特点: (1) 一般反馈控制主要适用于确定性对象或事先确知的对象,而自适应控制主要研究不确定对象或事先难以确知的对象。 (2) 一般反馈控制具有强烈抗干扰能力,即它能够消除状态扰动引起的系统误差,而自适应控制因为有辨识对象和在线修改参数的能力,因而能消除状态扰动引起的系统误差,而且还能消除系统结构扰动引起的系统误差。 (3) 一般反馈控制系统的设计必须事先掌握描述系统特性的数学模型及其环境变化状况,而自适应控制系统设计则很少依赖数学模型全部,仅需要较少的验前知识,但必须设计一套自适应算法,因而将更多地依靠计算机技术实现。 (4) 自适应控制是更复杂的反馈控制,它在一般反调控制的基础上增加了自适应控制机构或辨识器,还附加一个可调系统。 自适应控制系统的基本结构与分类 通常,自适应控制系统的基本结构有两种形式,即前馈自适应控制和反馈自适应控制。 1.2.1 前馈自适应控制结构 前馈自适应控制亦称开环自适应控制,它借助对作用于过程信号的测量。并通过自适应机构按照这些测量信号改变控制器的状态,从而达到改变系统特性的目的。没有“内”闭

PID控制算法的matlab仿真.doc

PID 控制算法的 matlab 仿真 PID 控制算法是实际工业控制中应用最为广泛的控制算法,它具有控制器设 计简单,控制效果好等优点。 PID 控制器参数的设置是否合适对其控制效果具有很 大的影响,在本课程设计中一具有较大惯性时间常数和纯滞后的一阶惯性环节作为 被控对象的模型对 PID 控制算法进行研究。被控对象的传递函数如下: G(s) Ke d s 1 T f s 其中各参数分别为 K 30, T f 630, d 60 。MATLAB仿真框图如图1所示。 -K- Kp z 30 -K- (z-1) 630s+1 Step Ki Zero-Order Transport Transfer Fcn Hold Delay Add (z-1) -K- z Kd 图 1 2具体内容及实现功能 2.1 PID 参数整定 PID 控制器的控制参数对其控制效果起着决定性的作用,合理设置控制参 数是取得较好的控制效果的先决条件。常用的 PID 参数整定方法有理论整定法和实 验整定法两类,其中常用的实验整定法由扩充临界比例度法、试凑法等。在此处选用扩充临界比例度法对 PID 进行整定,其过程如下: 1)选择采样周期由于被控对象中含有纯滞后,且其滞后时间常数为 d60 ,故可选择采样周期 T s 1。 2)令积分时间常数T i,微分时间常数T d0 ,从小到大调节比例系数K , 使得系统发生等幅震荡,记下此时的比例系数K k和振荡周期 T k。 1 Out1 3)选择控制度为Q 1.05 ,按下面公式计算各参数:

K p 0.63K k T i 0.49T k T d 0.14T k T s 0.014T k 通过仿真可得在 T s 1时, K k 0.567, T k 233 ,故可得: K p 0.357, T i 114.17, T d 32.62,T s 3.262 K p T s 0.005 K i T i K p T d 3.57 K d T s 按此组控制参数得到的系统阶跃响应曲线如图 2 所示。 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 01002003004005006007008009001000 图 2 由响应曲线可知,此时系统虽然稳定,但是暂态性能较差,超调量过大,且响应曲线不平滑。根据以下原则对控制器参数进行调整以改善系统的暂态过程: 1)通过减小采样周期,使响应曲线平滑。 2)减小采样周期后,通过增大积分时间常数来保证系统稳定。 3)减小比例系数和微分时间常数,以减小系统的超调。 改变控制器参数后得到系统的阶跃响应曲线如图3 所示,系统的暂态性能得到明显改善 .

Matlab仿真PID

建模与仿真 PID 控制器是目前在过程控制中应用最为普遍的控制器,它通常可以采用以下几种形式:比例控制器,0;D I K K ==比例微分控制器,0;I K =比例积分控制器,0; D K =标准控制器。 下面通过一个例子来介绍PID 控制器的设计过程。 假设某弹簧(阻尼系统)如图1所示,1,10/,20/M kg f N s m k N m ==?=。让 我们来设计不同的P 、PD 、PI 、PID 校正装置,构成反馈系统。来比较其优略。 系统需要满足: (1) 较快的上升时间和过渡过程时间; (2) 较小的超调; (3) 无静差。 图1 弹簧阻尼系统 系统的模型可描述如下:

控制系统建模与仿真论文( 2011) ()2()1 ()X s G s F s Ms fs k == ++ (1)、绘制未加入校正装置的系统开环阶跃响应曲线。 根据系统的开环传递函数,程序如下: clear; t=0:0.01:2; num=1; den=[1 10 20]; c=step(num,den,t); plot(t,c); xlabel('Time-Sec'); ylabel('y'); title('Step Response'); grid; 系统的阶跃响应曲线如图2 图2 未加入校正时系统的开环阶跃响应曲线

(2)、加入P 校正装置 我们知道,增加p K 可以降低静态误差,减少上升时间和过渡时间,因此首先选择P 校 正,也就是加入一个比例放大器。此时,系统的闭环传递函数为: 2 ()10(20)p c p K G s s s K =+++ 此时系统的静态误差为 120p p K K - +。所以为了减少静差,可以选择系统的比例增益 为300p K =。这样就可以把静差缩小到0.0625。虽然系统的比例系数越大,静差越小,但是比例系数也不能没有限制地增大,它会受到实际物理条件和放大器实际条件的限制。一般取几十到几百即可。增大比例增益还可以提高系统的快速性。 加入P 校正后,程序如下: clear; t=0:0.01:2; Kp=300; num=[Kp]; den=[1 10 (20+Kp)]; c=step(num,den,t); plot(t,c); xlabel('Time-Sec'); ylabel('y'); title('Step Response'); gird; 加入P 校正后系统的闭环阶跃响应曲线如图3

PID控制算法的matlab仿真

PID控制算法的matlab仿真

PID 控制算法的matlab 仿真 PID 控制算法是实际工业控制中应用最为广泛的控制算法,它具有控制 器设计简单,控制效果好等优点。PID 控制器参数的设置是否合适对其控制效果具有很大的影响,在本课程设计中一具有较大惯性时间常数和纯滞后的一阶惯性环节作为被控对象的模型对PID 控制算法进行研究。被控对象的传递函数如下: ()1d s f Ke G s T s τ-= + 其中各参数分别为30,630,60f d K T τ===。MATLAB 仿真框图如图1所示。 1Out1 Zero-Order Hold Transport Delay 30630s+1Transfer Fcn Step -K-Kp -K-Ki -K-Kd z (z-1) (z-1)z Add 图1 2 具体内容及实现功能 2.1 PID 参数整定 PID 控制器的控制参数对其控制效果起着决定性的作用,合理设置控制 参数是取得较好的控制效果的先决条件。常用的PID 参数整定方法有理论整定法和实验整定法两类,其中常用的实验整定法由扩充临界比例度法、试凑法等。在此处选用扩充临界比例度法对PID 进行整定,其过程如下: 1) 选择采样周期 由于被控对象中含有纯滞后,且其滞后时间常数 为60d τ=,故可选择采样周期1s T =。 2) 令积分时间常数i T =∞,微分时间常数0d T =,从小到大调节比例系数K ,使得系统发生等幅震荡,记下此时的比例系数k K 和振荡周

期k T 。 3) 选择控制度为 1.05Q =,按下面公式计算各参数: 0.630.490.140.014p k i k d k s k K K T T T T T T ==== 通过仿真可得在1s T =时,0.567,233k k K T ==,故可得: 0.357,114.17,32.62, 3.262p i d s K T T T ==== 0.0053.57 p s i i p d d s K T K T K T K T === = 按此组控制参数得到的系统阶跃响应曲线如图2所示。 01002003004005006007008009001000 0.20.40.60.811.21.41.61.8 图2 由响应曲线可知,此时系统虽然稳定,但是暂态性能较差,超调量过大,且响应曲线不平滑。根据以下原则对控制器参数进行调整以改善系统的暂态过

基于MATLAB下的PID控制仿真

基于MATLAB下的PID控制仿真 【摘要】自动化控制的参数的定值控制系统多采用P、I、D的组合控制。本文通过MATLAB软件用于直流伺服电机对单位阶跃信号输入的PID控制进行动态仿真,显示了不同作用组合和不同增益设置时的动态过程,为系统控制规律的选择和参数设定提供了依据。 【关键词】自动化控制仿真直流伺服电机MATLAB PID

【引言】现代自动化控制中,参数的自动控制占有很大的比例,这些控制多采 用P 、I 、D 的组合。通常情况下,对系统的动态过程利用微分方程经拉普拉斯变换导出时间函数,可得到输出量的时间函数,但要得到系统的动态响应曲线,其计算量庞大。因而在一般情况下对控制结果很难得到精确的预见。 矩阵实验室(Matrix laboratory,MATLAB )软件是一个适用于科学计算和工程应用的数学软件系统,历尽20多年的发展,现已是IEEE 组织认可的最优化的科技应用软件。该软件有以下特点:数值运算功能强大;编程环境简单;数据可视化功能强;丰富的程序工具箱;可扩展性能强等。 在本文中以工程控制中常用的直流伺服电机的自动控制为例,演示MATLAB 编程在自动控制系统动态仿真中的应用。 【理论推断】 1.直流伺服电机模型 1.1直流伺服电机的物理模型 图1 直流伺服电机的物理模型 αu ---电枢输入电压(V ) a R ---电枢电阻(Ω) S L ---电枢电感(H ) q u ---感应电动势 (V ) g T ---电机电磁转矩(N m ?) J---转动惯量(2m kg ?) B---粘性阻尼系数(s m N ??) g i ---流过电枢的电流(A ) θ---电机输出的转角(rad ) 本文所采用的直流伺服电机的物理模型和参数如图1所示。 1.2直流电机的数学模型 1.2.1基本方程 根据基尔霍夫定律和牛顿第二定律对图1所示的电机列基本方程: DT D L R i u u i q s +=- ① DT D J T g θ 2= ②

基于MATLAB的数字PID控制器设计及仿真分析资料

基于MATLAB的数字PID控制器设计及仿真分析 摘要 PID控制作为历史最为悠久,生命力最强的控制方式一直在生产过程自动化控制中发挥着巨大的作用。PID控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛用于过程控制和运动控制中。数字PID控制算法是将模拟PID离散化而得到的,各参数有着明显的物理意义,而且调整方便,所以PID控制器很受工程技术人员的喜爱。 本论文主要实现基于MATLAB的数字PID控制器设计及仿真。首先介绍了传统的模拟PID控制方法,包括比例控制方法、比例积分控制方法、比例积分微分控制方法等。接下来,介绍了数字PID控制。随着时代的发展,科技的进步,传统的模拟PID控制方法不能满足人们的需求,数字PID控制的改进算法也便随之而来。本文最后,应用MATLAB软件,在实验的环境下实现了其设计及仿真。 本次毕业设计用来完成数字PID控制器的设计,并通过MATLAB实现其仿真同时加以分析。通过查阅文献得知,与传统模拟PID控制器相比较,该控制器具有良好的灵活性,而且可得到精确的数学模型。另外,基于MATLAB的数字PID 控制器设计及仿真,充分的利用了MATLAB的实验环境,整个设计验证了数字PID的广泛可实现性及准确性。 关键词:PID控制;模拟PID控制器;数字PID控制器;MATLAB仿真; Design and simulation analysis of Digital PID Controller MATLAB-based Abstract As the most age-old and powerful control mode, PID control always has had a great effect on the automatic control of the production process. PID control is one of the first developed control strategy, because of the

大作业-基于matlab的PID控制算法仿真-深圳大学

基于matlab的PID控制算法仿真 要求: (1)用Matlab的仿真工具Simulink分别做出数字PID控制器的两种算法(位置式和增量式)进行仿真 (2)被控对象为一阶惯性环节D(s) = 1 / (5s+1) (3)采样周期T = 1 s (4)仿真结果:确定PID相关参数,使得系统的输出能够很快的跟随给定值的变化,给出例证,输入输出波形,程序清单及必要的分析。 首先,D(s) = 1 / (5s+1) 建立Simulink模型如下: 准备工作: (1)双击step,将sample time设置为1以符合采样周期T = 1 s 的要求 (2)选定仿真时间为500 图中" Integrator" 为积分器,"Derivative" 为微分器, "Kp" 为比例系数。"T i"为积分时间常数, " Td" 为积分时间常数。 进行P控制器参数整定时,微分器和积分器的输出与系统断开,在Smulink中,吧微分器与积分器的输出连线断开即可。同理,进行PI控制器参数整定的时候,断开微分器的输出连线即可。 第一步是先获取开环系统的单位阶跃响应,在Simulink中,把反馈连线、微分器、积分器的输出连线都断开,并将’Kp’的值置为1,连线如下图

(下载后,图片可调节变大) 仿真运行完毕,双击“scope”得到下图 将Kp的值置为2,并连上反馈连线,得下图: 上图即为P控制时系统的单仲阶跃响应。

接下来对PI控制整定,比例放大系数仍为Kp=2,经多次输入Ti的值,发现Ti=2,即1/Ti=0.5时,系统的输出最理想,如下图 (下载后,图片可调节变大) 选定仿真时间,仿真运行,运行元毕后. 双击" Scope " 得到以下结果 当响应曲线有一定超调量,当由于积分时间太长导致系统响应无法平稳的时候,应该减小积分的时间。反之如果超调量过大,则应该增大积分时间,最后选定 Ti=2. 最后,连上微分器,经多次输入调试,Td的值置为2时,系统能最快地趋向稳定。如下图

PI、PD、PID控制器系统的Matlab仿真及特点分析

自动控制原理课外作业 PI、PD、PID控制器系统的Matlab仿真及特点分析 上海大学机自学院自动化系 电气工程及其自动化专业 姓名:王文涛 学号:12123405 2015年1月13日

PID控制器系统的Matlab仿真及特点分析 姓名:王文涛学号:12123405 摘要:比例、积分、微分控制简称PID(Propotional-Integrate-Differential)控制,它是工业生产过程中最常用的控制算法,在工业生产过程控制中,PID控制占了85%~90%,随着科学技术的发展,特别是计算机的发展,许多先进的PID 控制涌现出来得到了广泛的应用。那么这次我们就用matlab来对带有PID控制器的系统进行仿真来研究分析PID控制器的特点。 关键词:PID控制器;matlab仿真;控制系统 一、概述 PID控制器又称为PID调节器,是按偏差的比例P、积分I、微分进行控制的调节器的简称,它主要针对控制对象来进行参数调节。PID控制分为模拟式PID 控制和数字式PID控制。模拟式PID控制是以模拟的连续控制为基础的,理想的模拟式PID控制算法为: u(t)=K p[e(t)+1 T I ∫e(t)dt+T D de(t) dt 1 ] 式中K p——比例放大系数;T1——积分时间常数;T D——微分时间常数。另外,e(t)=r(t)?y(t)为系统输入和输出在t时刻的偏差值。 理想PID控制器的传递函数为: G(s)=U(s) () =K p[1+ 1 I +T D s] P作用的输出与偏差成比例,成为比例控制作用;I作用的输出与偏差的积分成比例,成为积分控制作用;D作用的输出与偏差的微分成比例,称为微分控制作用。控制流程图为

数字PID控制器的MATLAB仿真

江苏科技大学 电子信息学院 实验报告 实验名称:数字PID控制器的MATLAB仿真 学号:1345733203 姓名:胡文千班级:13457332 完成日期:2015年11 月16日

一、 实验目的 (1)掌握用SIMULINK 对系统进行仿真的基本方法。 (2)对PID 数字控制器进行仿真。 二、 实验内容 1、基本的PID 控制 在模拟控制系统中,控制器最常用的控制规律是PID 控制。模拟PID 控制系统原理 框图如图1-1所示。 图1-1 模拟PID 控制系统原理框图 PID 控制规律为: ??? ? ? ?++=? dt t de T dt t e T t e k t u D t I p )()(1 )()(0 或写成传递函数的形式??? ? ??++== s T s T k s E s U s G D I p 1 1)()()( 仿真1 以二阶线性传递函数 s s 25133 2+为被控对象,进行模拟PID 控制。输入信号 )2.0*2sin()(t t r π=,仿真时取3,1, 60===d i p k k k ,采用ODE45迭代方法,仿真时间 10s 。 仿真方法:在Simulink 下进行仿真,PID 控制由Simulink Extras 节点中的PID Controller 提供。 仿真程序:ex1_1.mdl ,如图1-2所示。 图1-2 连续系统PID 的Simulink 仿真程序

将该连续系统的模拟PID 控制正弦响应结果截图后至于下面的空白处: 连续系统的模拟PID 控制正弦响应如图1-3所示。 图1-3 连续系统的模拟PID 控制正弦响应 2、连续系统的数字PID 控制仿真 计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此连续PID 控制算法不能直接使用,需要采用离散化方法。在计算机PID 控制中,使用的是数字PID 控制器。 按模拟PID 控制算法,以一系列的采样时刻点kT 代表连续时间t ,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,可得离散PID 位置式表达式: ∑∑==--++=???? ? ?--+ +=k j d i p k j D I p T k e k e k T j e k k e k k e k e T T j e T T k e k k u 0 ) 1()()()())1()(()()()( 式中,D p d I p i T k k T k k == ,,e 为误差信号(即PID 控制器的输入) ,u 为控制信号(即控制器的输出)。

PID控制系统的Simulink仿真分析

实验报告 课程名称:MATLAB语言与控制系统仿真 实验项目:fID控制系统的Simulink仿真分析—专业班级:学号: 姓名: 指导教师: 日期: 机械工程实验教学中心

注:1、请实验学生及指导教师实验前做实验仪器设备使用登记; 2 、请各位学生大致按照以下提纲撰写实验报告,可续页; 3 、请指导教师按五分制(优、良、中、及格、不及格)给出报告成绩; 4 、课程结束后,请将该实验报告上交机械工程实验教学中心存档。 、实验目的和任务 1 .掌握PID 控制规律及控制器实现。 2?掌握用Simulink 建立PID 控制器及构建系统模型与仿真方法。 、实验原理和方法 种线性控制器,它根据给定值与实际输出值构成控制偏差。 PID 控制规律写成传递 函数的形式为 K 式中,K P 为比例系数;K i 为积分系数;K d 为微分系数;T i -为积分时间常数; K i K T d 」为微分时间常数;简单来说,PID 控制各校正环节的作用如下: K p (1) 比例环节:成比例地反映控制系统的偏差信号, 偏差一旦产生,控制器立即产 生 控制作用,以减少偏差。 (2) 积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积 分时 间常数T ,T i 越大,积分作用越弱,反之则越强。 (3) 微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大 之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调 在模拟控制系统中,控制器中最常用的控制规律是 PID 控制。PID 控制器是 G(s) E(s) U(s) K p (1 1 T i S T d S) K p Ki s

相关主题
文本预览
相关文档 最新文档