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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;
4 @) O$ q8 i2 d  d$ p% s( S5 iclose all;
0 W& z: @2 n% o: Q2 P0 y- ?9 o, P1 H5 p2 o2 J2 ^9 q0 R
% 初始化神经元输入信号
: j1 [5 Y1 w* G5 J% @# Ux=[0,0,0]';
6 x1 Y/ C8 }3 }* s# f, }6 S# k- d0 g, w
% 初始化学习率参数( |4 M8 M( x% e+ s
xiteP=0.5; xiteI=0.6; xiteD=0.5;: R4 x  |  O: {- W4 w& E; o

) {# A. {% i6 M%初始化kp,ki,kd; D+ g! m; p% F" \1 Z
wkp_1=0.1; wki_1=0.1; wkd_1=0.5;. w9 D) x! ~5 d  M
# o" v, v! J% q. K
% 初始化前两个时间单元的误差信号
0 g6 A' Z1 B! t9 C+ a& B- w, I( Xerror_1=0; error_2=0;2 G% h% h. r4 Y% B, j

$ i! F: S% P* b0 e+ f% v1 t% 初始化前三个时间单元的输出信号# M( D( C7 Y3 W
y_1=0;y_2=0;y_3=0;8 L& T2 S" k& |+ v8 h4 Z
% 初始化前三个时间单元的控制信号' J- o/ s7 p- r# a
u_1=0.0;u_2=0.0;u_3=0.0;7 S5 e* V9 {' S, ~! ~' e
% 初始化采样时间- }' r7 Z* O3 R, E6 p2 g. A( R/ S
ts=0.001;/ @+ j1 ~; k/ R) X

9 ?) _* u5 F& N9 _% sys=tf(300,[1,20,0]);
0 I9 Z7 [9 K9 D' r* s4 w* T! z% dsys=c2d(sys,ts,'z');
6 [- Q$ ]8 c9 Q8 a! o% [num,den]=tfdata(dsys,'v');' Q1 T* u2 Q0 W* ?9 H3 O; z( _. B
% x=[0,0,0]';
4 z3 E* x5 M2 Y; {0 h# `. V" ]; m* c$ M5 f
for k=1:1:1000
, V. ^4 G( {1 a3 K/ c6 Y    time(k)=k*ts;0 V: U5 x* _- @+ h! C6 Y
    rin(k)=0.5*sign(sin(2*2*pi*k*ts));
# V1 h% W' b/ M8 ^' d: y2 \4 [    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;
; F  N* g2 Q# c7 ?    error(k)=rin(k)-yout(k);
: X# O4 {% q0 ?8 U! h9 U) z  \: ^
; q4 P# ]1 U2 }0 L% I    % 根据M的不同,选择不同的算法4 n6 Y* R8 q6 q9 s- u
        wkp(k)=wkp_1+xiteP*u_1*x(1);7 V  P6 ^% I8 Y
        wki(k)=wki_1+xiteI*u_1*x(2);
; C7 ?$ O# N1 t5 V/ x( r        wkd(k)=wkd_1+xiteD*u_1*x(3);) H+ i' y9 E9 K' E! s
        K=0.06;
+ A: M$ t2 z+ p' `2 M+ w7 I3 J
3 v( E; p* d9 L6 Z. g9 T    x(1)=error(k)-error_1;0 y# v5 t( x$ X% h: U
    x(2)=error(k);
; M9 q- C$ R* H! V6 q- A    x(3)=error(k)-2*error_1+error_2;! \( Z: M' p5 }8 u
    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
6 M) m" N0 y3 h' w+ F/ |* b    w11(k)=wkp(k)/wadd(k);( E4 z! q* T8 _2 j9 H
    w22(k)=wki(k)/wadd(k);
" A2 x- E! ^7 ~' n' G- Q( c    w33(k)=wkd(k)/wadd(k);+ e8 L! S& t3 ]9 i' l; Q4 I
    w=[w11(k),w22(k),w33(k)];( ]" i% s$ i) N/ e  z' j

3 [, ~$ C% a  S+ |# z5 ?    u(k)=u_1+K*w*x;
3 J0 J0 v" i" J6 j  V6 J  V. z    if u(k)>10
& x0 a6 `) C! y0 H% i4 A        u(k)=10;
1 K9 r2 r) f$ s! T' ?$ v    end
: }) D8 s- G4 R7 `    if u(k)<-10
; b; G2 a! D) h  L# Z. s* `        u(k)=-10;
0 K2 n4 N+ ~' o% k6 ~5 v    end;
% v2 y7 a- i0 M; ]    error_2=error_1;  F7 }1 t7 k# ~, v# h
    error_1=error(k);) z* C4 y% T/ j+ E
    u_3=u_2;u_2=u_1;u_1=u(k);
8 q  n" V; h# r3 s+ q9 y9 u" S/ g  ^    y_3=y_2;y_2=y_1;y_1=yout(k);
$ x% R! Z3 z* P- @    wkp_1=wkp(k);
' t# i" j' Q5 z+ j2 d    wki_1=wki(k);( |6 T3 G2 W7 v6 \
    wkd_1=wkd(k);  
( ]1 A. M- ]3 B3 @end
6 z* i( k9 z) a- N6 H
. V+ Y% b2 t0 B) s1 q: C7 ?figure(1);
$ z: a7 ]3 O+ `5 {6 |plot(time,rin,'b',time,yout,'r');8 i. k* A6 O% o( m$ C+ W) l
xlabel('t/s');ylabel('rin,yout');
7 X4 R( b6 u, \; O" l: bfigure(2);
5 I, a6 r# G% R7 N. p& o. f3 Hsubplot(311);' U* B1 K1 l8 n6 l/ e8 g
plot(time,wkp,'r');
: ?5 N2 J, b5 l- t, T9 g, Rxlabel('t/s');ylabel('wkp');5 ^. M; M7 E+ I; G
subplot(312);
; G  z/ r1 s, d/ |" tplot(time,wki,'r');
/ m/ f: U& p# m$ K2 C$ Bxlabel('t/s');ylabel('wki');6 N' M/ i6 i! {& D1 t% `% n
subplot(313);# f! Q3 ]4 s  c: ]% F3 F
plot(time,wkd,'r');1 b# K' S4 N2 E  p9 e2 q
xlabel('t/s');ylabel('wkd');- X& |) c  ]. M/ U+ L0 j% ]
: M; }' ^) E9 O2 @% l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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