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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
clear all;
6 k% R. C# ~/ k; v  Nclose all;: M8 k% ]7 p4 Y- G1 W

- R5 c' E  j( |% 初始化神经元输入信号$ C, v8 H8 f5 c3 x
x=[0,0,0]';: v- ]* [9 m4 L8 u/ Z: b

0 ^  ^5 c7 c* p8 D- |3 C' U) ^% 初始化学习率参数
7 _: |* I" H) xxiteP=0.5; xiteI=0.6; xiteD=0.5;6 U; x0 T6 b8 M7 ], I/ u
) p' t- \3 h; X* W. U- C
%初始化kp,ki,kd2 u3 A5 d" L: D: |
wkp_1=0.1; wki_1=0.1; wkd_1=0.5;% @( Y  f! |" M

3 W) X# t/ h6 D# z+ s% 初始化前两个时间单元的误差信号
" c: h1 M# x, |, ]9 H; s8 Eerror_1=0; error_2=0;( D% r4 i9 Y7 q( s( e

0 e  ~) a: f2 K6 t; y% 初始化前三个时间单元的输出信号9 Y# k* P. E- l2 J
y_1=0;y_2=0;y_3=0;
* R5 O  l- b  h6 J- F8 V7 |% 初始化前三个时间单元的控制信号
7 e9 U4 l/ N& Ru_1=0.0;u_2=0.0;u_3=0.0;
! B' k5 h" V: R. f! v0 [7 b% 初始化采样时间7 Y) v. U9 [' U. m' H
ts=0.001;
. R4 F% D6 s; M; `! f, j: i7 Q4 |# l* E" `: d2 J2 e
% sys=tf(300,[1,20,0]);: I4 J7 e; ^' y5 [
% dsys=c2d(sys,ts,'z');
# [5 x; ~/ T2 n" |7 ~# r+ m* f2 G. C% [num,den]=tfdata(dsys,'v');- ^6 b, G) s+ C' M5 ?( T0 W
% x=[0,0,0]';2 h" P2 ?( y# h9 r" o- n$ n

' M* r2 D6 Q/ B4 B2 Ffor k=1:1:1000) ^# f1 `; ~) N- p2 Z. N3 Z( Y
    time(k)=k*ts;: {  G/ l2 g9 ~. q5 T
    rin(k)=0.5*sign(sin(2*2*pi*k*ts));5 A' q% _; N2 A- F: k- j5 y
    yout(k)=1.5*y_1-0.7*y_2 + u_1+ 0.5*u_2;+ I9 O* b, T! n* M
    error(k)=rin(k)-yout(k);
- H/ Q. j9 U: }/ A$ A+ O$ h) s0 H, _- L5 i
    % 根据M的不同,选择不同的算法8 ~9 T, F1 j* l# s9 r2 u, r6 J0 b+ T
        wkp(k)=wkp_1+xiteP*u_1*x(1);. N2 G. e( }- u9 r( f) Q) \. l
        wki(k)=wki_1+xiteI*u_1*x(2);
& G( I. X# H. y& x        wkd(k)=wkd_1+xiteD*u_1*x(3);
' b* g7 D0 M1 L, ]7 n        K=0.06;& ^6 z7 Z$ l) l5 k& S2 J/ C/ w3 j- O
, y% `) ~; r  q" d  P! I; V
    x(1)=error(k)-error_1;
5 B4 B& D. C  C9 n' s    x(2)=error(k);" V/ u! {) t( B) s  ]
    x(3)=error(k)-2*error_1+error_2;
, r+ o: h! E9 W    wadd(k)=abs(wkp(k))+abs(wki(k))+abs(wkd(k));, R0 |' H( W. o& d
    w11(k)=wkp(k)/wadd(k);5 Q+ N' m- G7 n/ U  Q
    w22(k)=wki(k)/wadd(k);
- I& R7 v# m3 o, ~9 a# F9 ]    w33(k)=wkd(k)/wadd(k);; c7 Z* N" i2 y) I
    w=[w11(k),w22(k),w33(k)];2 O. r8 e4 G  C7 R3 u/ Y

6 Y, ?0 i; S9 o+ d    u(k)=u_1+K*w*x;* U2 A* L% Q/ @: E8 u5 a
    if u(k)>10
$ q( A. T- ~8 x8 o% u* s# ~) ^        u(k)=10;
- K5 C4 I. @) I) u8 r1 ]    end7 `% K- G3 F  K; d& c7 q
    if u(k)<-10
) k; |3 T; S$ L        u(k)=-10;/ }- ^8 E0 z+ X
    end;
0 a' U9 s7 O9 C- k    error_2=error_1;1 q; v# x2 ^9 G8 c9 F5 V
    error_1=error(k);
2 E) _5 g5 I8 v1 n) C    u_3=u_2;u_2=u_1;u_1=u(k);6 G, f2 B9 {9 u' _  [
    y_3=y_2;y_2=y_1;y_1=yout(k);
1 {- b5 D+ T/ N# j9 h1 C" F% U    wkp_1=wkp(k);$ i8 M& o- `% X
    wki_1=wki(k);
1 U8 T3 C& y& z& S    wkd_1=wkd(k);  
2 |: \1 N/ n1 A! K2 U4 a( Zend
% k: U& R. j3 o- X. J7 w( m' o9 j! n. C5 a
figure(1);
9 A+ S3 X3 F5 ^. e$ ?* eplot(time,rin,'b',time,yout,'r');& B" K* \+ D2 Y. H( D5 o6 k- g
xlabel('t/s');ylabel('rin,yout');* [( w7 X+ L7 F3 z, b' Z2 A
figure(2);9 }. H( I9 T3 U5 z
subplot(311);
6 x& w( J4 E+ ]2 B4 ~9 B- n- mplot(time,wkp,'r');* u+ e. i: t* \; W2 F
xlabel('t/s');ylabel('wkp');
% L+ H8 |: o* k" n8 }$ F& W' [. msubplot(312);  C0 W8 p6 H: U  s9 t
plot(time,wki,'r');
6 `, e1 i1 R- A. F, ^) I8 H$ zxlabel('t/s');ylabel('wki');# J- L8 o! Y0 A0 F' e
subplot(313);
- u8 x& X$ }" d/ cplot(time,wkd,'r');
  M8 e# U4 H& {: A( q% mxlabel('t/s');ylabel('wkd');2 v  m! O7 A2 c& a3 U; H9 G
2 n7 ^/ W3 S# }/ `+ P1 v* {
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-30 14:56 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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