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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;
, w$ m- X4 X  J" Zclose all;2 m$ K: K! Y6 C, _# v

6 q9 P) L( K# x# u2 d, \% 初始化神经元输入信号
" Y0 V8 V1 Y* s5 H) ?x=[0,0,0]';
/ n( ]6 `7 Z( n$ M( s" C: D
8 A/ V2 b3 a* y% 初始化学习率参数
$ r) d7 M  d) r* S) w6 j; U! fxiteP=0.5; xiteI=0.6; xiteD=0.5;! r/ l0 I$ V4 o
) u8 m) I: o) B* E9 \4 u8 S
%初始化kp,ki,kd
+ W1 y+ `# ^1 G, Swkp_1=0.1; wki_1=0.1; wkd_1=0.5;/ Q* G! z! D( I$ T& B5 U2 A0 w

. E, a" g: O% S% 初始化前两个时间单元的误差信号* S4 Y% y( B' c7 e6 K& L4 x
error_1=0; error_2=0;3 {$ l1 h! [  A. B2 [
6 O, B, F2 J+ r! m0 s6 A3 s7 l. H
% 初始化前三个时间单元的输出信号
9 p6 u0 {* [  {' qy_1=0;y_2=0;y_3=0;6 m& c* M9 E5 T' \
% 初始化前三个时间单元的控制信号0 O( P1 a9 K# Z
u_1=0.0;u_2=0.0;u_3=0.0;4 u: r8 R' t0 f/ C4 y
% 初始化采样时间5 W( E- Q+ ^3 n, G0 }# X
ts=0.001;
/ x$ x, r, D& @1 _0 b/ w# O: K0 T: J$ A8 X7 y1 |
% sys=tf(300,[1,20,0]);
$ x0 J* X+ B% l; C( J* z- X+ r) z% B% dsys=c2d(sys,ts,'z');: O' @* _* Y3 J$ N' c, v4 T
% [num,den]=tfdata(dsys,'v');! i/ P) n) F9 x, {- I
% x=[0,0,0]';
9 n: J! H/ e- C, p% s
  _" L, i' c* {' ^, s* w9 ifor k=1:1:10008 ~( Z9 f; P) m/ F1 U. K6 |
    time(k)=k*ts;
. X7 W+ V9 u9 D    rin(k)=0.5*sign(sin(2*2*pi*k*ts));
. ^$ x+ z0 `* e    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;, P3 [- l/ I. |, y& k
    error(k)=rin(k)-yout(k);
5 D4 E1 Y7 w. ^5 e5 J
* l5 \5 ]# B, l0 d5 b  U; R$ F1 x9 n    % 根据M的不同,选择不同的算法0 d% W3 e- r) d& q
        wkp(k)=wkp_1+xiteP*u_1*x(1);
+ B" B+ d6 o( q$ c, A$ w        wki(k)=wki_1+xiteI*u_1*x(2);, |5 I6 @2 d+ q* S- Q
        wkd(k)=wkd_1+xiteD*u_1*x(3);
9 P& q9 `( `. @        K=0.06;+ N# o  y% o! Y( b- f
% a9 K; J2 J% u+ L# a
    x(1)=error(k)-error_1;
: ^1 ^+ v3 N' L" m3 z! _    x(2)=error(k);: N, b4 p+ ], O+ g8 w5 K
    x(3)=error(k)-2*error_1+error_2;
; B2 E6 ^* Y. Z+ O3 d    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));
& O' V: Z. Y! C$ x. {0 V: i: M' S    w11(k)=wkp(k)/wadd(k);2 j" p2 L" ~) `7 r3 N
    w22(k)=wki(k)/wadd(k);
0 R1 t# n/ e/ h7 g2 j9 C    w33(k)=wkd(k)/wadd(k);4 Y: p, U$ N2 Z0 U& r5 c0 l( ]  d3 N/ ~
    w=[w11(k),w22(k),w33(k)];
" j* s- K! Q2 [- M
9 r' j5 x& N* L  p8 M: L    u(k)=u_1+K*w*x;' p% j- s4 D2 k$ t0 M
    if u(k)>10: o6 W8 v3 ~$ B2 X5 j, E  Y* F; {
        u(k)=10;
2 s  i% n; b+ w1 X    end
7 p( ~0 f+ f# f    if u(k)<-10& X/ C( m2 C: ^: h. Y
        u(k)=-10;
  ~! B4 l5 [7 E. u6 I! e' D# g    end;& r. s7 }7 U) }, _; n0 n4 R
    error_2=error_1;( a' I% A0 Q6 F4 G3 ?
    error_1=error(k);1 t# t5 A) M$ H% H
    u_3=u_2;u_2=u_1;u_1=u(k);
/ L# Q9 k' ]' B$ R/ s+ W    y_3=y_2;y_2=y_1;y_1=yout(k);
5 Z5 A. m4 T% w9 p% x7 a/ ^5 \# _7 I    wkp_1=wkp(k);0 p6 |: {% a/ p3 [0 J" U' O+ X
    wki_1=wki(k);
! n6 E5 R2 P, m& J0 b  u    wkd_1=wkd(k);  7 G! v) |+ b; Q6 A( U
end/ a2 Y- o1 q" Z

: H# B4 E  L  {9 B. F0 t4 ~5 gfigure(1);
! n6 y7 s+ E; e3 v7 V4 Uplot(time,rin,'b',time,yout,'r');7 k/ |$ L7 B  {) a' y* l
xlabel('t/s');ylabel('rin,yout');6 S0 t9 M6 g: B- {% y2 H
figure(2);& g6 a4 L2 @) r. E+ J! T; g
subplot(311);% s3 _) b  S2 s+ y
plot(time,wkp,'r');
& V% y, ?$ l& |xlabel('t/s');ylabel('wkp');9 b9 P9 a7 m' p* Z3 t6 ?9 [, t
subplot(312);
1 t& E& r1 g5 {9 ?plot(time,wki,'r');8 d1 ?" h* R! J0 p& W
xlabel('t/s');ylabel('wki');; S4 R' p2 A" W- f# {/ K+ r/ ?6 ^- u$ i
subplot(313);) d! `7 W" r0 }/ @0 c( K: d
plot(time,wkd,'r');/ o9 v/ r, x5 P1 J3 n: [
xlabel('t/s');ylabel('wkd');' z- \. Q  |9 L. f3 |
+ E% Z, t9 f0 s: Q5 l7 T% B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-17 21:59 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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