|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!
; P4 Z. t. F2 N5 Pclear all;' V9 L1 V! M: j( D: R9 w% }
close all;
! {+ \" e+ f1 }/ Qts=0.001;
[# x" U. L/ L: M! C9 q* J+ ]" Hsys=tf(400,[1,50,0]);
0 G/ d4 |0 i7 p4 {. rdsys=c2d(sys,ts,'z');
1 W9 [7 k, T3 Z2 [% Y7 \! V1 ^[num,den]=tfdata(dsys,'v');4 `& w' d$ s* c( U% ]2 |: O
u_1=0.0;u_2=0.0;u_3=0.0;
" S$ M6 T2 H! _) ^$ f1 ]y_1=0;y_2=0;y_3=0;( ?/ C3 A! D/ ^2 i, k9 k
x=[0,0,0]';
5 m: t, F8 C! Rerror_1=0;
" }8 _) c+ ?/ Q* w+ ]% U0 R% Qerror_2=0;
: K0 K3 i- k y! a, m, j" M. a0 zfor k=1:1:1000" `& e9 ]6 Y8 h |! Y/ D6 T
time(k)=k*ts;
; P( T" p. N8 g) I
! Y' h# r5 H1 c3 v5 P& @# z yd(k)=1.0;
1 E4 s/ O' D& g* @$ h3 e, h kp=8;$ b: t6 m& U$ q9 p# \8 A
ki=0.10;(请问这三个参数的初始值怎么确定的)0 t6 Y8 z) n3 N" p/ A
kd=10;9 d6 T3 ?( H/ ]1 v" v
3 S( d! n" R8 b
du(k)=kp*x(1)+kd*x(2)+ki*x(3);
2 m( W6 Y0 d6 t/ A: `* {( j" P9 | u(k)=u_1+du(k);/ h1 R5 ?% x9 o
if u(k)>=10) c9 B9 ~) y9 r+ _1 C
u(k)=10;! x/ @: [$ \9 I
end" f: u/ A: F8 O3 R
if u(k)<=-10! \6 T2 a$ C" O2 ?, M& d! T
u(k)=-10;
6 J/ k( O, G! A+ ~! n! [% S$ { end
, o' B# q& j6 T y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;" G+ ^* j2 A& d7 |
# X, \5 v. k' F1 ~7 C' g/ s- Q
error=yd(k)-y(k);
2 Q% @) r0 X4 k0 B1 S# x5 a) V u_3=u_2;u_2=u_1;u_1=u(k);$ |$ U9 l+ B0 u. C0 {! N
y_3=y_2;y_2=y_1;y_1=y(k);
/ Z) `, n+ a3 Z- z6 r' n 3 _9 l h" Z* K1 r3 H4 d
x(1)=error-error_1; %Calculating P
' w, p9 U2 N2 [- l3 D, A1 O$ K x(2)=error-2*error_1+error_2; %Calculating D& b, o+ I# g7 C+ a
x(3)=error; %Calculating I2 l8 B3 C" p& ?2 S
2 d" H3 O- f8 j8 r& h8 I- K error_2=error_1;3 ^3 d% f, \2 ~* @0 S4 _$ s" }
error_1=error;
$ o, V1 h( w' A! D& f( aend4 i+ A2 _% U6 p7 q
figure(1);) l2 w" O: v9 D
plot(time,yd,'r',time,y,'k:','linewidth',2);: u5 T! C6 x, `+ X" m" M
xlabel('time(s)');ylabel('yd,y'); l0 d$ }* ]1 t/ f- {- X: v* A9 z
legend('Ideal position signal','Position tracking')
5 y& f" g s( J' i& R |
|