|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID控制算法的C语言实现一PID 算法原理
7 j# [! B1 L+ f最近两天在考虑- -般控制算法的C 语言实现问题,发现网络上尚没有一套完.) u7 B4 d2 w9 p3 u: Z/ G+ k& ]
整的比较体系的讲解。于是总结了几天,整理-套思路分享给大家。7 N' I, E7 ]9 |4 [6 P- t- N
在工业应用中PID 及其衍生算法是应用最广泛的算法之-,是当之无愧的万4 P: ^( J7 i& F7 G. a8 Y' ?
能算法,如果能够熟练掌握PID 算法的设计与实现过程,对于- -般的研发人员来' M3 J& K# X8 [/ n! e1 ^
讲,应该是足够应对- -般研发问题了,面 难能可贵的是,在 我所接触的控制算法0 \. b2 u3 A* m& h2 I$ l, ?, E
当中,PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的
7 b1 j& |8 E& k7 p经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想
# T' E' p+ k3 [牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧, 何等的简单! 简单的不是
. P6 F1 [: G! _3 }: n原始的,简单的也不是落后的,简单到了 美的程度。先看看PID算法的一-般形式:" A6 X* k7 A+ m, F2 a
比例环节
. _6 s+ B! _& ~$ m) ]: P3 z积分环节 q& I+ d/ u) W. \$ ~
执行器
7 p1 ?' d! ^$ ]; P( Q$ R' ?' x+ \2 {不- z0 \6 ]& T: H6 o8 |
微分环节
2 B7 l T6 a) r6 ^9 e3 m) g* Q% f传感器
5 A" G* J. D! S+ T- C6 bPID的流程简单 到了不能再简单的程度,通过误差 信号控制被控量,而控制
7 S* E# r8 X% E# q* E' F* u6 z器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t 时刻) :( X) Y# B9 N) ?; H3 j3 f
1.输入量为 rin(t);
U6 k/ V) c% R _' @& [2.输出量为rout(t);
* I$ K8 O) L7 e# e) @3.偏差量为 r(=in()rou(t);, W }8 l5 p+ J8 g8 M
pid的控制规律为
8 f, Y0 d# m& x! X9 z( I. |u(x)= kler(+)=J' y9 ?, \, i0 |0 S1 w
err(t)dt+-6 [: O, G; R7 g8 x, a
Tpderr(t)% ^8 C% ?8 x1 q8 z
dt
8 e. \) W& W- v9 `. ^' A理解- -下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境+ E( c9 x3 M1 @* l- Z) }/ w( A
具体一下:( i- Z; s3 U% Z' N
1.规定这个流程是用来 为直流电机调速的;
$ c, c/ G5 \. ~( `) m3 j8 |5 s, Q3 i% `0 B, |" I' j
, m, C. _/ d. j0 b8 |1 M' ^ |
|