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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;4 }7 D, y. a- T# z5 B% @; q
close all;. E+ f2 f$ N: P* Q# L
. w, ?; W8 m& t! {. M' T
% 初始化神经元输入信号
5 D+ h. w7 C- y" w6 C0 w9 y% j$ dx=[0,0,0]';) X; r( q( v- S/ X4 G

& X& @6 O3 }9 }: S' Q3 F: E% 初始化学习率参数
' n9 R' g4 A3 ]3 ]) x! h  gxiteP=0.5; xiteI=0.6; xiteD=0.5;" g' i2 |8 f; X( L' M9 n  k

& _7 }- g  g" O: x%初始化kp,ki,kd' b8 F9 `+ s1 _* w. e  J
wkp_1=0.1; wki_1=0.1; wkd_1=0.5;2 s# d0 v8 [# c; u. c

- z2 A9 T; S( U3 k1 v% 初始化前两个时间单元的误差信号/ k1 k3 j+ Q0 }/ ]! @
error_1=0; error_2=0;
& j! u5 Q3 U1 E5 j" T" a5 }6 S  W# ]& t
% 初始化前三个时间单元的输出信号
, R) U: p5 l) y- L6 H& _* q  l# Yy_1=0;y_2=0;y_3=0;. z5 A  i8 O1 @; t7 r8 X+ H, W
% 初始化前三个时间单元的控制信号) F7 r! @2 c! P! L
u_1=0.0;u_2=0.0;u_3=0.0;8 j& I3 k+ K  K) Q+ U
% 初始化采样时间
6 g- u. |9 n6 Ots=0.001;  _6 ?3 R) \) S- s! m

  D) V' V" ?& @" Q# p% sys=tf(300,[1,20,0]);, k, C# S' S* `- g" R3 y  r
% dsys=c2d(sys,ts,'z');( E; {  |( N7 S  s5 L$ {
% [num,den]=tfdata(dsys,'v');: M( `2 k4 \6 ]/ |& a" [
% x=[0,0,0]';
  y3 B, a5 l, q( D$ i1 l& a" ]/ h4 s; e
for k=1:1:1000
, p) u5 Q& q- J+ ~    time(k)=k*ts;' _; X. I; p9 J& B* ^
    rin(k)=0.5*sign(sin(2*2*pi*k*ts));
7 h- s+ m- T* U6 n  Q    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;
' A2 V; |2 I2 u3 |; U' G* t8 T    error(k)=rin(k)-yout(k);. f, `: J* N) t% ~: j4 w
$ R2 y5 b5 D& g! M/ \$ |( N
    % 根据M的不同,选择不同的算法4 d0 S# K! V& p6 e$ V4 W2 S
        wkp(k)=wkp_1+xiteP*u_1*x(1);+ _# [0 v; w. f7 U
        wki(k)=wki_1+xiteI*u_1*x(2);
  p; u6 p  v( b1 d        wkd(k)=wkd_1+xiteD*u_1*x(3);
8 g) b3 ]/ S, P8 S8 J        K=0.06;
$ w3 Z8 i, A- R& M% u5 H3 T2 S
0 T/ o  ^9 V# W2 X$ S# n* u    x(1)=error(k)-error_1;  e: s; c, W6 l
    x(2)=error(k);: F$ W; n: P+ t% y+ ]% g$ l' j) H
    x(3)=error(k)-2*error_1+error_2;
$ C; p$ b" ?" [8 h& J5 N% |    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
8 Y; C, g: j. M- |$ l/ K6 k% z    w11(k)=wkp(k)/wadd(k);
1 y- Y- [, f- i3 X    w22(k)=wki(k)/wadd(k);
; G: k1 t2 c# K: R' K* r    w33(k)=wkd(k)/wadd(k);) M6 k/ D2 p, I) Q9 w& s
    w=[w11(k),w22(k),w33(k)];
9 T0 Y5 j% c) T) v) ~6 V8 e4 q* J. S1 Z
    u(k)=u_1+K*w*x;9 c) i  }% b: C/ s
    if u(k)>10' T# Z( ^) V2 G2 T5 I) H9 S  b8 U7 ~/ u
        u(k)=10;
7 O7 x; r+ ~; v2 H$ n0 M+ Z    end4 K/ A$ u4 j: ~8 O  R* F/ Y
    if u(k)<-10
3 i1 U/ `/ S# ?        u(k)=-10;3 T- ?( `/ w' Y8 T. E. H/ ^
    end;9 Z, |! f6 R  c8 @: N; g( A
    error_2=error_1;: A* z( E1 f& @8 b
    error_1=error(k);
3 b( x% g! o) \1 X" E    u_3=u_2;u_2=u_1;u_1=u(k);
/ k; f* L! n& s9 n/ i    y_3=y_2;y_2=y_1;y_1=yout(k);4 f% q# w6 R& T. D& V6 c8 G5 N
    wkp_1=wkp(k);
8 u! h. @3 C4 R0 x: w* D- M/ U/ v    wki_1=wki(k);
, ]! N$ l4 |' _6 S- p6 W6 [# l    wkd_1=wkd(k);  + ]5 [+ A5 \3 a/ `$ q0 m
end0 A( M, q5 }/ k$ v( N2 e) t  h# B

4 ^: z" B5 e) X: g- _figure(1);4 J6 s! f: X4 F' ~' b% r# D2 g
plot(time,rin,'b',time,yout,'r');
& S6 Q. ~# x' D$ M$ J# Gxlabel('t/s');ylabel('rin,yout');
# y' k0 r% [# U3 ]0 _figure(2);
7 Z5 z- t1 {4 ]- N( J' ^subplot(311);% w! Y7 g! `6 k; Q6 C& _7 F
plot(time,wkp,'r');
/ j8 q+ D, A6 q% G$ p4 x; m, Yxlabel('t/s');ylabel('wkp');" G  |# M( f6 b) a" D0 ~1 ?
subplot(312);' j) P/ F# [6 i* H& h
plot(time,wki,'r');
* {* z2 j; J/ P9 Mxlabel('t/s');ylabel('wki');* D/ m1 x* y7 G) ?) ^
subplot(313);
. I1 S, m: ~+ e$ v9 oplot(time,wkd,'r');6 R3 G3 Q5 S  Q9 o
xlabel('t/s');ylabel('wkd');
  _# T" G2 y8 r) n& K, ~; B) v: c7 f" A9 Y, b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 02:53 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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