|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
PID控制算法的C语言实现一PID 算法原理
& b% h {. t* D& D最近两天在考虑- -般控制算法的C 语言实现问题,发现网络上尚没有一套完.: n& C7 d5 ]' a
整的比较体系的讲解。于是总结了几天,整理-套思路分享给大家。4 l3 y+ U0 O/ M7 H" T8 }
在工业应用中PID 及其衍生算法是应用最广泛的算法之-,是当之无愧的万
2 L3 H( i9 m& C v9 f能算法,如果能够熟练掌握PID 算法的设计与实现过程,对于- -般的研发人员来( M* S' n2 f- c7 G! w
讲,应该是足够应对- -般研发问题了,面 难能可贵的是,在 我所接触的控制算法
9 A3 n4 G7 E% X3 l. s# P当中,PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的
7 B" A" A2 f2 {3 R经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想# E; w" x3 z* u! V* L1 k
牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧, 何等的简单! 简单的不是% o1 h) }$ L6 E
原始的,简单的也不是落后的,简单到了 美的程度。先看看PID算法的一-般形式:( |; R# V& q/ k+ d
比例环节
+ @0 z5 M; x" ?* ?! u6 A积分环节
8 E4 F- N" Y' e% G7 S2 [# f执行器
* {' B ^; b; [, Q不
0 i9 m9 J ]' H: h" S; @微分环节% Q. H$ e* Q W7 Z9 v4 {6 |, h! }, N! A
传感器7 g! \" h+ u2 s* w' c0 p, y
PID的流程简单 到了不能再简单的程度,通过误差 信号控制被控量,而控制. d8 s% B8 A2 D) t. y
器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t 时刻) :
! u# p% ?4 ~& b6 n9 J; u/ x9 M4 p1.输入量为 rin(t);. \: P) K* l3 J" K7 t* w* e$ v6 F
2.输出量为rout(t);
- J6 X9 [! L) B) e: E3.偏差量为 r(=in()rou(t);& p- X! P3 x1 B! k. z
pid的控制规律为
4 Z9 k3 g- ^& J& z: S6 c1 o1 qu(x)= kler(+)=J
% K3 H" o* C4 k6 `* Jerr(t)dt+-
* e9 S# `$ D& i6 l) W9 M% DTpderr(t)
8 C( n# \+ h( m7 t7 T% Zdt
( @- }- M( A& Q* R理解- -下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境
5 ]4 y7 A$ R) a" H( ^具体一下:- u) P, M0 F4 X; z* ~9 N) U
1.规定这个流程是用来 为直流电机调速的;
; B) h7 v2 y1 \0 w, Y0 G! y
5 v# `7 w7 v u- x& c5 o4 m
9 f4 y2 a+ ~4 k% Q1 T7 K |
|