|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID控制算法的C语言实现一PID 算法原理
5 R+ N* y! Q7 }) ]7 E4 v( v# Z最近两天在考虑- -般控制算法的C 语言实现问题,发现网络上尚没有一套完.
$ n y; f( |; W+ v整的比较体系的讲解。于是总结了几天,整理-套思路分享给大家。
Z, `% o* D [- [8 t在工业应用中PID 及其衍生算法是应用最广泛的算法之-,是当之无愧的万
9 F3 H. ?9 B4 x* ~0 |" c+ _: n2 O能算法,如果能够熟练掌握PID 算法的设计与实现过程,对于- -般的研发人员来
! y9 U8 ]; l# e9 i* \9 d讲,应该是足够应对- -般研发问题了,面 难能可贵的是,在 我所接触的控制算法 p# W1 ^! I5 K+ z) r; l
当中,PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的2 m) J3 d0 n: L$ A, `
经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想
8 i+ g. H Y- f' b牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧, 何等的简单! 简单的不是
$ a! T; f9 j1 j! ?9 x原始的,简单的也不是落后的,简单到了 美的程度。先看看PID算法的一-般形式:
3 L& y8 S1 {/ C6 `比例环节
2 H- P& l! U) L9 Y T, f- \积分环节
/ Y9 G$ t& e5 b {0 }执行器
. T- l* V* Z5 V, V不
v1 E' j' h# X* ?, a4 P微分环节
; |* b; K, Y) m' X& d$ l传感器
6 R, m7 K i/ S8 k. I# z; UPID的流程简单 到了不能再简单的程度,通过误差 信号控制被控量,而控制. @: S& n& g; d4 [7 J) E9 }
器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t 时刻) :
% |. h6 u) t! @) ~1 d' n1.输入量为 rin(t);
`8 u/ B+ w) Q/ d: q ^& e9 k2.输出量为rout(t);# q8 K! x5 `/ j# z% [, O
3.偏差量为 r(=in()rou(t); n( P' O5 w# O+ b$ h
pid的控制规律为" z, x/ n$ P- f1 g3 `& ~
u(x)= kler(+)=J
& [4 _% }0 U/ ferr(t)dt+-' W3 {/ p' H! V$ H2 O1 d, X
Tpderr(t)
1 K% U1 e: t3 W( Vdt, G0 a* l& j3 A$ P: x. }
理解- -下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境( T# G, c+ V2 r
具体一下:9 G+ l) L' K3 Y
1.规定这个流程是用来 为直流电机调速的;7 Q ?$ w/ w! r' `
0 \, z7 L# B, c
4 D1 O$ Z7 J/ l |
|