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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;
4 e+ B3 \: d; n  _3 j9 G: A% g% lclose all;
! H. H$ C8 D" P2 |. l# O. F2 P5 Q+ a' M4 a
% 初始化神经元输入信号3 |* M3 b( Y& O& e' d* e: z6 Z2 x
x=[0,0,0]';
$ r) X. ]) n- P# D+ c  _+ u
; |7 O6 }% O* ]) P. _0 Y% 初始化学习率参数
3 p7 @9 x! N+ \; L& j3 d! VxiteP=0.5; xiteI=0.6; xiteD=0.5;$ @! C, o* k+ t, `1 l

- V! [  M# e. e, g- {* x%初始化kp,ki,kd, B0 v) G  m# D: s; s0 t. g
wkp_1=0.1; wki_1=0.1; wkd_1=0.5;4 u7 H- b- A' z+ i9 O
0 H( W! \% X% O. z! `8 B, J! Z
% 初始化前两个时间单元的误差信号. G/ A& D4 K3 q, I3 l. U, r
error_1=0; error_2=0;
$ P1 A( z  Q' P2 ^. z" Q) G* j
- h; h$ B' i3 E( v- t7 H9 P% 初始化前三个时间单元的输出信号6 X% i& Q: I* [/ A6 u
y_1=0;y_2=0;y_3=0;
( A4 b1 E' G1 _9 i9 M4 u5 t2 X% 初始化前三个时间单元的控制信号- {5 c6 G, \6 L0 |" Y2 e# P
u_1=0.0;u_2=0.0;u_3=0.0;
1 Q2 ?; B' U6 p" h3 }1 `% 初始化采样时间
; v5 `5 ^2 X: a( q) Zts=0.001;
* T- r# `: E# o+ t+ E9 ]" w5 W# d) Z$ D. `9 @
% sys=tf(300,[1,20,0]);
% }, m3 ?1 Q/ D8 Q+ f* {) L2 j% dsys=c2d(sys,ts,'z');
* T& F# b6 X& v4 O; O% [num,den]=tfdata(dsys,'v');* Q# q: H3 ^" b& ^7 w
% x=[0,0,0]';
6 R4 G" l2 }- l: l% ]3 f- {6 {- J: Y* T1 `+ w
for k=1:1:1000" ]" r% t+ G) @6 x1 ?( m
    time(k)=k*ts;
: ]) g  @$ v1 V6 b1 M6 ^, ]    rin(k)=0.5*sign(sin(2*2*pi*k*ts));
* E! D5 Q% Q. T5 z4 h$ s    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;
0 T9 O+ X* N1 F0 G: @    error(k)=rin(k)-yout(k);0 s( o( [5 F! E

$ E# ^, s* v# g; d6 p3 z    % 根据M的不同,选择不同的算法' t2 \: T# Z6 T6 E5 H- Y" v
        wkp(k)=wkp_1+xiteP*u_1*x(1);
# W* |* o' P/ X0 ^& a        wki(k)=wki_1+xiteI*u_1*x(2);
- F& R+ F) H8 o$ d& f        wkd(k)=wkd_1+xiteD*u_1*x(3);
* O4 ]  G- g8 P2 H+ S. f# Q9 S4 Q, \        K=0.06;
: S0 s( a0 i3 u" ~& w- ?9 H! K" I# ?7 k2 |) T
    x(1)=error(k)-error_1;
. |2 K# D% D9 v7 }: Q5 L    x(2)=error(k);% g5 w% r1 K- g7 J
    x(3)=error(k)-2*error_1+error_2;* N2 ^4 |, |/ w) Z) @8 K: r, N" A
    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
9 O9 |$ Q; i7 w0 ^3 U    w11(k)=wkp(k)/wadd(k);
- P0 X8 L+ A4 S$ |    w22(k)=wki(k)/wadd(k); ' R) e# {! [( T$ A
    w33(k)=wkd(k)/wadd(k);
' _# I* ?' a% j  p2 ]/ |- Y    w=[w11(k),w22(k),w33(k)];
  _& x6 S! f3 o3 F. e! {# V4 J, x9 \) }! \
    u(k)=u_1+K*w*x;: Q) l; `& E3 L- q' T1 K( q. B
    if u(k)>10. B0 Z% V; D+ R/ W4 o' O4 z
        u(k)=10;
7 J. N7 C! E. s( y$ }% I( e+ A% x    end5 Q& l) U' G$ ^0 W
    if u(k)<-10
# I0 F% S, Y' w; b  K9 f        u(k)=-10;
3 e9 M& n" o8 W% m6 Z    end;6 P! t% ]1 R  M$ v( O
    error_2=error_1;# Y9 T- ]$ V: _( X# c2 L  T
    error_1=error(k);# y$ n' A2 b( G0 M% T
    u_3=u_2;u_2=u_1;u_1=u(k);
( w- h  Z2 a4 d: B' i! @' j/ m    y_3=y_2;y_2=y_1;y_1=yout(k);
5 N% m6 Y2 l* x: P% U# O$ _    wkp_1=wkp(k);
$ `+ L, h- p. I0 r( q- X: [    wki_1=wki(k);
; f: D* {/ _" s5 b4 d7 H) A) `    wkd_1=wkd(k);  
7 `$ g3 D9 G0 aend* Q+ `) t& m; [, x& e
8 Y: H# F- e' u$ C6 T' {
figure(1);
# ^- _9 P/ _* q7 X  Wplot(time,rin,'b',time,yout,'r');
) ?+ H: X  L" h' @: Fxlabel('t/s');ylabel('rin,yout');% \2 _+ N& p3 S4 e5 E& U
figure(2);/ s. |8 S4 O" b$ P- n) J
subplot(311);
5 _$ F; o$ F2 Q& c: Q, _  Uplot(time,wkp,'r');
3 X% j/ }9 Q/ ^! A7 kxlabel('t/s');ylabel('wkp');% m# F1 F8 }5 h9 k, q5 n  j
subplot(312);
: F# a3 {  k1 [7 ~' [+ s1 Xplot(time,wki,'r');0 U* Y- [1 f0 ^# v2 y4 P6 ~+ H" |
xlabel('t/s');ylabel('wki');
/ G/ d1 N1 V0 csubplot(313);
; b1 d" Q! I# y3 |  _plot(time,wkd,'r');
+ x2 i4 h" v( F, j, R2 j  S6 U) Cxlabel('t/s');ylabel('wkd');
6 T! W; N; g' U# e- g
- W# h/ k) W! S1 U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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