|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!* w; v" V P0 \' T
clear all;
* M. l" o3 F6 N. H% iclose all;
% B, ]; @: b% O7 i0 K) vts=0.001;! b) q4 o) P% \: N" x$ q
sys=tf(400,[1,50,0]);
P5 x; S `! G2 C: d, B# c$ pdsys=c2d(sys,ts,'z');
) P# W) n+ A l+ ?' r0 b[num,den]=tfdata(dsys,'v');* @# L) [: a0 D* ^# j7 ~6 K; }
u_1=0.0;u_2=0.0;u_3=0.0;0 x+ {) V K5 h; c7 i+ W
y_1=0;y_2=0;y_3=0;- J( B @' S7 q- I* ?
x=[0,0,0]';- H& y2 k4 ^3 {; q
error_1=0;
' z7 [! e* h% @9 O) z5 Oerror_2=0;
$ j4 v( n/ Z% f7 H% J0 sfor k=1:1:1000
% Y; b# |! ]! f7 } time(k)=k*ts;# P0 C4 n/ O& W$ o+ H, o5 R) T5 C$ H
) F3 o9 ~4 I0 d8 |' F yd(k)=1.0;
+ m/ |& c7 L% i6 J/ G$ i: t kp=8;
; |" y {- L. p9 c ki=0.10;(请问这三个参数的初始值怎么确定的)+ |8 I8 l3 v K' }, c( M7 S
kd=10;9 J2 Q* |$ G1 G3 ]! @
/ Q4 F5 j, {; Y, g+ R7 K
du(k)=kp*x(1)+kd*x(2)+ki*x(3);
& ]( j5 R" y$ [6 Q$ A; r u(k)=u_1+du(k);
1 d# Z& ]# k2 ?5 d- E' ^- L; r9 u if u(k)>=10
4 ^4 t! f7 {9 H7 H2 |. `: \ u(k)=10;
6 R x6 {% ^8 \" B end
0 n0 C V$ J7 l' z if u(k)<=-10" \" N* I6 l! j5 ] x
u(k)=-10;
1 }! k+ m% H" N& D end 0 [3 U# z: Q- F7 n
y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
# h1 U: \4 C; b' D2 H: R, {) q
/ ?! i3 h+ w$ g error=yd(k)-y(k);- I0 v) k8 {8 s
u_3=u_2;u_2=u_1;u_1=u(k);
" f* D7 P: O: b. m" q8 P y_3=y_2;y_2=y_1;y_1=y(k);
# n, W1 F2 ` g6 ?' p' D* d% J4 G 3 T% ^) D% r/ B9 j, f, k
x(1)=error-error_1; %Calculating P# t+ i4 U/ k* A3 v* J8 q1 y7 G
x(2)=error-2*error_1+error_2; %Calculating D
1 J! |+ K4 w1 D5 h( M& q8 |7 X x(3)=error; %Calculating I
2 d6 _) ^) m, ^3 R" I' G, D4 |% B
4 x s/ B8 @6 E+ I& e4 x6 k$ l error_2=error_1;1 R F4 |* z* ~% O
error_1=error;. V, x/ d" m: ^8 B% z- ]4 r
end- z4 Y& A) |: ^! Y! e& Z
figure(1);1 S- N( N+ E3 G# Z0 A! F
plot(time,yd,'r',time,y,'k:','linewidth',2);+ d" u0 q# x! k4 \5 [1 w
xlabel('time(s)');ylabel('yd,y');
; P% C0 I4 N* N. A' T5 Plegend('Ideal position signal','Position tracking')
6 y# Y0 n' v6 n' |& d |
|