|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!
8 @! x5 Y1 e/ d1 y. lclear all;
% h! T7 B9 {1 x9 kclose all;4 T+ t# k1 J) T- F, F4 b! F) a
ts=0.001;
& ~, c5 E/ B6 H+ i, O% ^sys=tf(400,[1,50,0]);
5 U( X3 @$ g( P& r! c9 D# Qdsys=c2d(sys,ts,'z');
# h( m+ P9 X3 y( f% n4 o3 S4 q[num,den]=tfdata(dsys,'v');
- [3 {" @( M. M. W9 vu_1=0.0;u_2=0.0;u_3=0.0;
) A) z4 ?0 \: h Y; k- q2 H, fy_1=0;y_2=0;y_3=0;
! J$ w) M# h! j1 ox=[0,0,0]';) A$ a& |: o3 q* U# I6 A
error_1=0;
0 y. b Z) O6 U, j! B3 `error_2=0;! l. b0 X' h- P# t
for k=1:1:1000/ s& T* N: ~+ Z3 l
time(k)=k*ts;
" j3 v, A0 U! n: [/ m1 \8 L
8 O# o9 j7 U2 { yd(k)=1.0;
" n4 {. H6 s3 |9 a6 p" i; N% Y kp=8;$ R/ r" x5 l0 d/ E0 l9 N
ki=0.10;(请问这三个参数的初始值怎么确定的)
: T& Q; [9 a8 A/ C kd=10;
- Z/ R1 N, W! e, H3 A
* G- H+ h! T* d5 E du(k)=kp*x(1)+kd*x(2)+ki*x(3);
d' ^ e: K2 u u(k)=u_1+du(k);
, ]3 q7 j1 h2 i3 j( q if u(k)>=10; P5 r) V3 R9 a8 c
u(k)=10;0 T- @9 S/ |( ?) m1 l
end
' `. [% x) `5 k) G7 v1 d! Z if u(k)<=-10
: T: U9 n1 H% h' i, R/ L, o u(k)=-10;0 h( _) E1 E' U
end * |9 N% ~6 k# g, Y9 ]
y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;5 i1 u |% P& K) e
3 y7 P$ i/ w/ Q% |
error=yd(k)-y(k);
* C% s! p2 w4 P8 o- v. w u_3=u_2;u_2=u_1;u_1=u(k);
' [& U1 M& g# f$ X; e+ s y_3=y_2;y_2=y_1;y_1=y(k);
0 K4 G! ? G# u( @8 m( S3 p% P - ?; k- x# Y0 Q) H2 ]- v
x(1)=error-error_1; %Calculating P
* L2 f: j5 N5 w x(2)=error-2*error_1+error_2; %Calculating D# r( Z! K% z$ ?" _
x(3)=error; %Calculating I6 { C" E# F9 ?
" ^5 G# P7 T6 I# }5 A# Z7 U error_2=error_1;4 z% ~0 M" [, n+ @0 g9 p
error_1=error;" ?( Q: H2 l& E5 u
end2 R/ O& ]* q5 ~+ f9 E1 m3 t& w6 h. |
figure(1);
! a* p- \3 X& S* _ lplot(time,yd,'r',time,y,'k:','linewidth',2);2 V! m# D U/ [- @8 X) W9 H3 e
xlabel('time(s)');ylabel('yd,y'); O9 ?( H' ?0 `- K3 z5 I: ^: ]! K
legend('Ideal position signal','Position tracking')+ |/ r2 `) X q% @- q1 |' ~: j5 S
|
|