|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!
7 {$ R) M: F5 lclear all;
_, S; l% N& G( |3 b/ |' Fclose all;
9 c# P+ l$ [8 } G" a2 mts=0.001;
" ?5 y7 q; a: {$ B- Rsys=tf(400,[1,50,0]);7 l& [: q7 r) \% j* B
dsys=c2d(sys,ts,'z');; C1 j( e$ _/ i i2 h9 _* X
[num,den]=tfdata(dsys,'v');
8 U( u1 s0 H$ |/ ~$ j9 {5 Vu_1=0.0;u_2=0.0;u_3=0.0;
6 l0 L+ I6 u7 g# @8 B! Ry_1=0;y_2=0;y_3=0;6 k1 L& i3 {( l7 o5 v/ G7 m. ~0 M
x=[0,0,0]';
0 s# |8 e! S' I# N( ?- c Verror_1=0;
: b6 t' f9 P# _error_2=0;2 N* a2 ?0 Z$ ^8 H% g1 k- p7 h
for k=1:1:1000
! o: f/ y5 v2 G* { time(k)=k*ts;- T3 z4 N3 D; r% }. Y# D
1 I/ ~* {; _' y! O yd(k)=1.0;
% S4 |, Z# X6 S: P5 g kp=8;$ o5 R# D& n9 Q& D# e: y
ki=0.10;(请问这三个参数的初始值怎么确定的)
0 ?/ n6 T; r0 `, R: Z4 [, M6 H kd=10;
+ E& I: ]6 P$ z& o6 ]& E 4 f4 W+ o# d, e4 w/ M, \
du(k)=kp*x(1)+kd*x(2)+ki*x(3);
: m/ a3 O; E9 M" E, A% h3 } u(k)=u_1+du(k);, |. p0 r! w" ^
if u(k)>=10
& z/ B+ G7 E6 l# M u(k)=10;
; ~( P( u0 J, N" ` end# {( k; ]9 @* {, Y' t
if u(k)<=-108 x7 j3 @+ J( T+ I5 m
u(k)=-10;- E8 i9 o# Q# I a1 Y
end
; Z/ I6 y, q' Q" L) O& R y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;! x! H( L4 }) C' V
- Q3 V2 ~) x6 i% K
error=yd(k)-y(k);* j D( N- o( C
u_3=u_2;u_2=u_1;u_1=u(k);
# Y% S) B- w' I+ y+ _: J2 O9 H y_3=y_2;y_2=y_1;y_1=y(k);
/ z1 X# g0 S5 h5 ?% R% s ) @. n' n2 I1 @( C' M; P
x(1)=error-error_1; %Calculating P6 R/ C1 D0 i6 K4 Z
x(2)=error-2*error_1+error_2; %Calculating D
6 ]1 n2 d8 c5 \3 \# C x(3)=error; %Calculating I
. z y+ X7 a5 q- G6 m% T0 I( R 2 Y% V M: o$ h V E( U! L
error_2=error_1;0 b/ A3 j1 @* q" h G
error_1=error;, G0 z+ U4 {7 c
end, E* m6 i+ \! j' c8 f6 U$ w# }
figure(1);1 ~, o; w0 f* K6 q, q6 X* D
plot(time,yd,'r',time,y,'k:','linewidth',2);( Y, g( `$ Y6 ?+ F
xlabel('time(s)');ylabel('yd,y');
; z x4 K, Z; E2 B: c1 tlegend('Ideal position signal','Position tracking')5 ]) |, r& A& p. p" ~+ t
|
|