|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于离散PID的大量程序中的P,I,D,参数初始值不明白怎么来的。求助大神!" l* o/ x \0 X9 D, o
clear all;
1 e/ Y. Y, {' U* hclose all;
- _$ O3 w, d- I; N1 y$ Y3 Kts=0.001;7 ^' U* I" @; _# V2 A0 B, N
sys=tf(400,[1,50,0]);& d. f. }, X: |! o
dsys=c2d(sys,ts,'z');) m7 e7 C, R7 E0 k& K' u5 O
[num,den]=tfdata(dsys,'v');6 Z' i8 O, W. ~' a3 }1 V& r6 [& E9 R
u_1=0.0;u_2=0.0;u_3=0.0;1 y( Q: E: k0 O
y_1=0;y_2=0;y_3=0;# }. ]* x& y( u1 A/ j; c# e* g
x=[0,0,0]';) ^* `4 o6 C, f) m7 z# o
error_1=0;+ |* V* \! ?% W4 K. Q9 ~% h
error_2=0;
* J. i+ Q4 r6 e$ m. i% [for k=1:1:1000
5 F# `. Y% k5 ^( I& a) y time(k)=k*ts;6 S) ~ i& `% P' a5 x
" F9 M' h2 C9 r- c6 J yd(k)=1.0;
; [7 V; s4 W5 Y9 m: f5 h kp=8;/ z/ }, y- b1 M# h
ki=0.10;(请问这三个参数的初始值怎么确定的)0 F6 k2 |' i8 s' k1 E
kd=10;
1 D" l' `0 L: O% [7 c3 E+ Z" g
3 e1 p* q* K- }" R8 x3 u0 B4 u du(k)=kp*x(1)+kd*x(2)+ki*x(3);7 z2 x( m6 J9 v; n* e: ]: y( D: Y
u(k)=u_1+du(k);2 _' c$ {; P7 b6 t: h
if u(k)>=10
( q% Z3 U7 P: ` z( X u(k)=10;# n$ q: X+ L, B1 }& B- l( z
end
1 `" ?6 e3 E% } if u(k)<=-10
6 y5 m' S- ?) E u(k)=-10;, G( T8 D( i" [1 T5 G) S) M
end
9 V3 w& `) m9 A3 w1 l y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;6 ^( e5 Q6 k/ M+ E) v: E7 r* f
2 m; b; F4 p/ e9 q error=yd(k)-y(k);3 D5 h! t9 W0 q
u_3=u_2;u_2=u_1;u_1=u(k);
1 R+ F: }" _( e b$ Q, h4 V9 e y_3=y_2;y_2=y_1;y_1=y(k);* f$ u5 `. t1 }7 N* l2 [
# ]1 ^2 ? z0 R- ]8 J, E- { x(1)=error-error_1; %Calculating P: t* o7 x4 c: @ R# h' t
x(2)=error-2*error_1+error_2; %Calculating D$ f% ]# @, b& }. x( M; K) S
x(3)=error; %Calculating I
+ e- a# w8 L) F. r8 [4 G ( L( M2 z" y" V1 D
error_2=error_1;
7 y& g3 O* C: S+ P error_1=error;
% j% Y7 P' m/ t$ ^# g# Fend
4 B( z$ u6 }0 \figure(1);5 g+ E" v1 G; {% h9 z
plot(time,yd,'r',time,y,'k:','linewidth',2);( M, G# r) N0 P, |. k' w5 _3 J
xlabel('time(s)');ylabel('yd,y');1 J5 O& X6 h' D5 N Y* |1 P C0 s
legend('Ideal position signal','Position tracking')
& x/ V+ Z6 m/ i% C |
|