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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;# Q% t& X0 G& S3 `: c8 f$ R' _
close all;
0 ?" a# ]" u7 E, W8 c5 g3 Q
/ ?6 g1 \9 ~3 L5 r: k% 初始化神经元输入信号
- O3 B( e' |2 A, jx=[0,0,0]';' C3 _, a  `1 B

/ [0 p) V/ u2 ?- O% 初始化学习率参数
* }$ Q6 O2 E  qxiteP=0.5; xiteI=0.6; xiteD=0.5;
/ w- p! I# |, X# p9 ~$ Q, [' l' q3 N" k2 ?) c
%初始化kp,ki,kd
; s  A* V# ~" v% k7 Zwkp_1=0.1; wki_1=0.1; wkd_1=0.5;
7 S4 p7 e$ i$ w% q7 Q/ X" U. a) {. q; ~, b8 o
% 初始化前两个时间单元的误差信号. v4 Y* G; u7 Y
error_1=0; error_2=0;
8 U/ q- G# l5 O$ X& x
) h. D3 R* W. u8 f+ @) P6 t% 初始化前三个时间单元的输出信号
# t! I" w) K4 _5 h* B$ Y5 Fy_1=0;y_2=0;y_3=0;" `! u0 J, R1 m5 M
% 初始化前三个时间单元的控制信号
7 a. m  Z) b4 o' k0 Q, ~u_1=0.0;u_2=0.0;u_3=0.0;0 l% r3 G7 g) a- F6 A
% 初始化采样时间# ^* j/ {! J) j5 B: G+ r% F9 s3 O+ K
ts=0.001;2 A/ X1 R# l/ J6 y
. v- K( u( p# }
% sys=tf(300,[1,20,0]);
8 h! Q: F$ W* K& ~6 Z% dsys=c2d(sys,ts,'z');
6 R" t# O) |( U6 R+ \/ Y* b7 v% [num,den]=tfdata(dsys,'v');  z. @) |! H2 q8 a
% x=[0,0,0]';8 m: R2 h# T0 a, ?

4 [4 {: ]! F, f* Z- v% G9 afor k=1:1:1000
" W# q0 L. T2 ~$ k) C9 {1 `; f    time(k)=k*ts;
) O- B. P* \/ q    rin(k)=0.5*sign(sin(2*2*pi*k*ts));
. M- H$ d: n' [/ ~8 {  x! {    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;
( a% ~2 K, g6 {% `/ c( `- l    error(k)=rin(k)-yout(k);& x8 n1 Z3 s/ ^
4 S6 b  J# a" X$ V) {$ Q: Y2 r
    % 根据M的不同,选择不同的算法( O7 q: @1 j/ D  ]) z: ^! [: e
        wkp(k)=wkp_1+xiteP*u_1*x(1);
! G- ^8 x2 x/ X        wki(k)=wki_1+xiteI*u_1*x(2);
) t: H' h, U( [# K! m0 f; Z$ b1 k        wkd(k)=wkd_1+xiteD*u_1*x(3);8 {3 [' ~: l. V" x+ s) x( k; ?
        K=0.06;4 ~" W) M$ [/ e$ P4 ?: l

' G$ e( H" K% j; W, R& H: @    x(1)=error(k)-error_1;
& v2 b6 g; b' _6 T, W3 l    x(2)=error(k);1 K4 J8 M3 y: @. i
    x(3)=error(k)-2*error_1+error_2;* w  {2 h* Z1 L, J* M1 X, y7 e
    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
6 Z0 A. C0 l0 m5 |/ w; ^, t( X. H; B    w11(k)=wkp(k)/wadd(k);
* f  V) v4 ]8 K) n* J8 R    w22(k)=wki(k)/wadd(k); + T4 E' g+ q$ q- w$ j& b
    w33(k)=wkd(k)/wadd(k);; ]6 u5 |8 X% n4 H0 M
    w=[w11(k),w22(k),w33(k)];% c6 k  ]# P6 r! k1 ?
5 M+ O5 j2 ?8 W# Q! v
    u(k)=u_1+K*w*x;3 s8 R' t0 \8 R5 _. t
    if u(k)>10
$ W" g$ f3 F" A        u(k)=10;& x) x' S% p- \7 @, `" ~
    end, p* B' k) @0 b
    if u(k)<-104 Y+ }/ Q" T7 y- G; S1 P" g& X/ x+ ^
        u(k)=-10;6 o) g6 L$ l' s* P
    end;2 R& u: z7 n/ A
    error_2=error_1;
# i! n% Y1 ]0 D' O) u6 x. f4 u. D& C    error_1=error(k);% L1 i2 x, V' R& @( E8 y
    u_3=u_2;u_2=u_1;u_1=u(k);* X. {/ ?  y! `! {
    y_3=y_2;y_2=y_1;y_1=yout(k);/ Y2 {" `8 ~+ w
    wkp_1=wkp(k);
# ]9 p, X0 j6 z1 @  m    wki_1=wki(k);
7 \5 p' b( E2 P    wkd_1=wkd(k);  
7 ^  W# O* `3 L. q) d7 p) \" ~end1 ~0 e! ~6 [4 q+ E- S, c5 B

0 A. D' ~& W, tfigure(1);5 l& a$ d! m7 S% r$ K- d- p
plot(time,rin,'b',time,yout,'r');  {4 P+ R3 w& H" A
xlabel('t/s');ylabel('rin,yout');
2 X$ q* `1 P1 `figure(2);& L% b) G( t  V: `# O/ E6 u
subplot(311);- G. ~3 h0 Y3 E7 Y) D
plot(time,wkp,'r');1 [5 [$ i) l6 W& t5 I) @
xlabel('t/s');ylabel('wkp');
% V$ O0 r- N: _subplot(312);
" {: R1 q3 x9 |plot(time,wki,'r');7 C' N5 e1 o0 c3 r) j% c8 N
xlabel('t/s');ylabel('wki');$ `; O" ^' u+ i9 m* ?
subplot(313);
" t) `% X) B4 f; H# e0 `- X% z$ Dplot(time,wkd,'r');
& Y4 _6 B3 }; b9 q' F8 w! N* Z3 rxlabel('t/s');ylabel('wkd');0 w; o% q7 N! }0 a( T: T( ~: ]
; ?9 U6 C5 T: C+ Z8 J, S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-21 07:00 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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