|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!
* U! q* p9 a+ C9 p% dclear all;+ H) U5 @1 w" x! h. F$ H+ {
close all;# K, m5 t, s0 q
ts=0.001;
6 Z1 m5 N& `% g" |! m Csys=tf(400,[1,50,0]);
6 Z1 p3 Z+ ]1 N) Vdsys=c2d(sys,ts,'z');
( R8 f5 B3 S0 Y# [$ J[num,den]=tfdata(dsys,'v');, ~/ }& z* F5 e( M- w- ^
u_1=0.0;u_2=0.0;u_3=0.0;
; o4 }- Q. u1 k5 v- W) }. y! Z* r2 hy_1=0;y_2=0;y_3=0;
3 q) s6 `9 U( E2 j$ Ex=[0,0,0]';
! f S! p! N2 `7 E/ w5 Oerror_1=0;
7 X5 Q4 _% N+ l0 i' Werror_2=0;! Q4 u' r# O- L% p* |
for k=1:1:1000
T( j7 U1 v; H) q& d time(k)=k*ts;
6 C+ z3 b: I- g/ g, I/ P7 P
, H7 b! N$ \: Z8 @! L" Z. j9 g yd(k)=1.0;1 I1 U" }. r* Q* t: B* `
kp=8;. x1 X: C* A9 G5 u' q0 J: k- f
ki=0.10;(请问这三个参数的初始值怎么确定的)4 b9 D7 f5 [9 c$ m) I! Q
kd=10;1 Q% M% t- C' D. a! @
$ ]: X, g; \9 A6 @# e# F5 T
du(k)=kp*x(1)+kd*x(2)+ki*x(3);0 a* l' @. ]) z1 t5 R$ u
u(k)=u_1+du(k);
+ f- H) D+ H$ x if u(k)>=10
' o1 W% W+ y/ Q( V3 [" D+ W2 V u(k)=10;: _! ]! Y5 n2 r- g! O
end
2 c( O9 Q9 T; K; p8 z if u(k)<=-10* b6 U# e0 _$ P @
u(k)=-10;1 _3 S% k0 H. h5 x, ]% Y
end . s( q8 p- i# @( p$ V! y8 t {/ w
y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;/ _- V9 U6 R& \# v' r7 A
( r* j( A& q7 X/ ]" u9 V6 ` error=yd(k)-y(k);; R# h3 Y, Z$ p+ {; a% z- Q
u_3=u_2;u_2=u_1;u_1=u(k);- v# m2 ?' I+ D+ I( ^: z& f
y_3=y_2;y_2=y_1;y_1=y(k);
! B' g5 f0 ]7 Q# `7 _" _
; C4 k! p: Q8 ` K1 g x(1)=error-error_1; %Calculating P
( u* y v/ b! N( h: V+ s/ p x(2)=error-2*error_1+error_2; %Calculating D6 ^. _" l. O. [4 _& i2 m# t
x(3)=error; %Calculating I+ ?5 D$ c/ ?! }$ ?. ~6 d) M, G
: Z5 v- F: w# y1 W; r) R( I+ [ error_2=error_1;
& I0 B. S# V( {; Q error_1=error;- ~$ R& t0 F( i* J" w# ?
end
. [" \, H% c- o6 {. E% k% h/ F6 {figure(1);
2 m8 \' D( W3 @2 S: z5 T9 Splot(time,yd,'r',time,y,'k:','linewidth',2);/ b/ W8 K6 U+ I( r2 R# p* j
xlabel('time(s)');ylabel('yd,y');
5 ~4 D$ h: i' g9 D/ q; ylegend('Ideal position signal','Position tracking')
& U. C% `2 Y+ A' X |
|