找回密码
 注册
关于网站域名变更的通知
查看: 372|回复: 1
打印 上一主题 下一主题

#技术风云榜#给大家分享一段PID代码(人家写好的)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-23 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
clear all;
$ n# B8 e8 g, R& e* S! tclose all;* J( u) w3 O4 [8 E4 ~4 {! \
& M" q7 W# w3 d  i8 A
% 初始化神经元输入信号
! X$ T) [1 r# A' xx=[0,0,0]';
5 |3 E5 T  _  e: r3 P7 I, Y, j+ \
# I- e5 R* s3 f% I/ R% 初始化学习率参数' l' B+ |, L8 u. R: w7 o- S$ p  [! i
xiteP=0.5; xiteI=0.6; xiteD=0.5;
- H2 O! \( N$ s# B$ L8 \* H3 B- z
%初始化kp,ki,kd0 g# J1 Q9 @& A9 O0 P
wkp_1=0.1; wki_1=0.1; wkd_1=0.5;
& S& N% L/ N0 ]( P
+ ^+ a9 n& L" a* j0 l" }- ~9 `% 初始化前两个时间单元的误差信号; _6 a' w/ m1 e& i/ A. [/ h4 W
error_1=0; error_2=0;$ I: ~/ e9 s% K+ `

' s0 z# m% X. k2 x% 初始化前三个时间单元的输出信号
* ~: G/ ~3 W6 M$ W( Zy_1=0;y_2=0;y_3=0;
4 \8 F# i# p1 x# |  u6 f% 初始化前三个时间单元的控制信号8 ~+ G# y/ ?" K+ F/ X1 s
u_1=0.0;u_2=0.0;u_3=0.0;( Y6 g* c$ d$ N) \* g' }; W
% 初始化采样时间
* Z, `0 H1 X: e" S3 sts=0.001;
( N1 k: [: j7 V0 t0 m7 J. U+ L
% sys=tf(300,[1,20,0]);
3 [; V3 o+ `: i4 i# e1 Y% dsys=c2d(sys,ts,'z');6 Z) v# b+ L  x$ ?* X5 |) u9 h0 s
% [num,den]=tfdata(dsys,'v');
0 ?+ \. j1 B! F% |' B1 O% x=[0,0,0]';
: [) N6 f) B- m( m/ j+ H
" w& A0 H! O4 Ofor k=1:1:1000
: {2 C$ r4 z" l, M8 E! ?9 v: m* Y: u    time(k)=k*ts;8 m6 V$ ^! K3 Q+ L- a
    rin(k)=0.5*sign(sin(2*2*pi*k*ts));8 U  H( m( K8 h5 }
    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;
* }9 C: |3 B! S' M2 \* p    error(k)=rin(k)-yout(k);/ M* x# X2 G- K$ v) q" {5 B

8 S# b1 d, I- d) [8 l; ]    % 根据M的不同,选择不同的算法& ^8 k* |2 ?7 s, y& z2 l$ l7 ~
        wkp(k)=wkp_1+xiteP*u_1*x(1);
5 }' l+ W3 c: U! I# k        wki(k)=wki_1+xiteI*u_1*x(2);# G) n7 d* o8 a* y
        wkd(k)=wkd_1+xiteD*u_1*x(3);1 q, ?  J% k1 W4 v
        K=0.06;
8 A5 ~* I5 F7 S
7 k- B# K& e. A4 R* O% F) s# C    x(1)=error(k)-error_1;
* F2 H. w5 U, A$ s    x(2)=error(k);
% B/ a" _/ n6 d3 k    x(3)=error(k)-2*error_1+error_2;6 z& i7 K- m2 f6 R7 j- Z
    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
4 t. X( b* u$ Z' q; K, q% w    w11(k)=wkp(k)/wadd(k);& y5 x# C; J+ l) M2 ]
    w22(k)=wki(k)/wadd(k); + }1 e* g& ]$ r/ z: q# _& `
    w33(k)=wkd(k)/wadd(k);
2 A2 T2 r) A1 Y/ Y7 ^9 i    w=[w11(k),w22(k),w33(k)];( U( n' E5 _* Y, A6 t

, O9 T8 _! |6 `. A8 ?9 z; C    u(k)=u_1+K*w*x;- S3 t$ |, D/ b" s" c; j* H  M3 M
    if u(k)>10) k0 h0 l. x" X" ?5 Q  N
        u(k)=10;* X6 s7 y4 o+ F' B0 {* [# T! j
    end
( O$ W# n6 A% o    if u(k)<-10% o' J& h1 O7 d* `/ i
        u(k)=-10;
* B  J1 |; Z5 v# Z    end;
* P1 ^2 I9 R( u% u' P    error_2=error_1;) ^7 z8 f/ [, N7 p# j2 j8 E
    error_1=error(k);
! O2 K9 v  n+ B, f    u_3=u_2;u_2=u_1;u_1=u(k);3 _' i1 e) r) X$ y( b2 T9 B0 X% O
    y_3=y_2;y_2=y_1;y_1=yout(k);
1 |2 ]+ U: I2 m3 O7 o7 b    wkp_1=wkp(k);
( y. r, i7 T$ r7 x; V2 O0 g6 O    wki_1=wki(k);
; W" x; C' z8 Q    wkd_1=wkd(k);  
9 a+ h7 k  B0 W7 {  _end7 p3 Q" Q2 O0 v) o& `
. w' `# |0 K* A, d- T
figure(1);
" ^- t; R- I' H: t* `plot(time,rin,'b',time,yout,'r');
8 H( l; [' S) ^9 sxlabel('t/s');ylabel('rin,yout');
2 b3 f0 `4 _+ R2 ?. Z9 {figure(2);
* ]4 q/ J+ Q' t7 `. U* Usubplot(311);
' d9 ^% i* c4 ^! I+ splot(time,wkp,'r');
& v! r0 w6 h9 n) c/ D/ Zxlabel('t/s');ylabel('wkp');0 o" W% `) j2 H- m1 l
subplot(312);
5 |, v% b: `- `9 N# v& ]. N$ q' k" xplot(time,wki,'r');
; C  I1 c% ]0 p) \" k& x8 l$ nxlabel('t/s');ylabel('wki');5 D1 U+ ]# g  F
subplot(313);
6 O6 k. ]$ @7 A5 tplot(time,wkd,'r');( v- ]7 t& w  p# ~' q
xlabel('t/s');ylabel('wkd');9 W! c% p' F) B7 k) S0 B9 [
9 I8 b  r7 C" e9 {" m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-19 11:01 , Processed in 0.093750 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表