|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID控制算法的C语言实现一PID 算法原理
( k2 _9 v/ W) {* D最近两天在考虑- -般控制算法的C 语言实现问题,发现网络上尚没有一套完.. q2 [# s- {: H/ q/ A8 c8 E
整的比较体系的讲解。于是总结了几天,整理-套思路分享给大家。
1 T8 h. h, G; }1 Y在工业应用中PID 及其衍生算法是应用最广泛的算法之-,是当之无愧的万% |# I/ d' p4 A3 S4 b/ |3 s8 X( F! r# B
能算法,如果能够熟练掌握PID 算法的设计与实现过程,对于- -般的研发人员来
! X; s# b% c3 i5 `- V' Q讲,应该是足够应对- -般研发问题了,面 难能可贵的是,在 我所接触的控制算法4 i( O0 E5 T, J- M+ d8 l
当中,PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的
) W0 I# f" Y0 L4 _经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想1 L+ x; |; D) _& z2 T" f7 l; f( D
牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧, 何等的简单! 简单的不是! [! }7 e* f) e2 ?9 ^' i; @- W
原始的,简单的也不是落后的,简单到了 美的程度。先看看PID算法的一-般形式:# g; w6 f# _3 o) A1 K/ h7 O8 M
比例环节
6 ~. r; P9 t9 T& J, \/ X积分环节/ M. x) v9 x$ ?- F C" i
执行器
x5 }$ g" R8 ]8 [7 \不
3 l0 k w8 G; O8 K微分环节: S f. \$ C6 x9 P" t# u7 K( v
传感器% ?- o, ^" {* K8 x& a
PID的流程简单 到了不能再简单的程度,通过误差 信号控制被控量,而控制& U* W+ s; B6 s! Q# e- k' U) G& B
器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t 时刻) :
3 |: W8 v2 Z' a I- V1.输入量为 rin(t);
' C1 w, W5 E2 K. ]& `: i2.输出量为rout(t);, j9 O3 D! x+ v' d7 h
3.偏差量为 r(=in()rou(t);
: x0 N" p& O+ m9 Z5 } e$ Npid的控制规律为
3 q4 a3 R5 c; o! Ku(x)= kler(+)=J
; [. m, k3 q( B9 [9 W6 I3 M+ {3 I! Yerr(t)dt+-/ K3 K ~( s) M% ^. Q2 s7 R* @
Tpderr(t)/ i1 M% K6 b+ [+ N4 ~" k. }
dt
2 c V8 S1 ?* h t' G# J理解- -下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境
! U& o; i7 S) V- Y0 R2 ` G具体一下:
! I9 q& ~5 }8 ^ ~, V1 k, E5 H M1.规定这个流程是用来 为直流电机调速的;
* ^ o j$ p: x- c2 H/ Q2 b1 q- V0 ]. K$ Z+ r# @ `; U
9 `3 C4 G/ |# ?% @+ r |
|