原创 51单片机PID算法程序(三)增量式PID控制算法

2009-3-20 20:39 11959 4 6 分类: MCU/ 嵌入式

51单片机PID算法程序()增量式PID控制算法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


(转载请注明出处blog.ednchina.com/tengjingshu )


当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID增量算法


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


f6250ba5-8055-466d-8cf4-5ecab5100e54.JPG


     增量式PID控制算法可以通过(2-4)式推导出。由(2-4)可以得到控制器的第k-1个采样时刻的输出值为:


4bbc4df1-a837-4000-aefc-c2e7b19f340d.JPG(2-5)


将(2-4)与(2-5)相减并整理,就可以得到增量式PID控制算法公式为:


点击看大图2-6


其中


 

c3290c6f-07af-4bf7-805c-34ab46f2297a.JPG


        由(2-6)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定ABC,只要使用前后三次测量的偏差值,就可以由(2-6)求出控制量。


增量式PID控制算法与位置式PID算法(2-4)相比,计算量小得多,因此在实际中得到广泛的应用。


位置式PID控制算法也可以通过增量式控制算法推出递推计算公式:


1ae5871a-a76e-482f-a49c-293fb7c31e8a.JPG2-7


2-7)就是目前在计算机控制中广泛应用的数字递推PID控制算法。


 


增量式PID控制算法C51程序


/*====================================================================================================
PID Function
The PID (
比例、积分、微分) function is used in mainly
control applications. PIDCalc performs one iteration of the PID
algorithm.
While the PID function works, main is just a dummy program showing
a typical usage.
=====================================================================================================*/
 


typedef struct PID


{


int SetPoint; //设定目标 Desired Value


long SumError; //误差累计


double Proportion; //比例常数 Proportional Const


double Integral; //积分常数 Integral Const


double Derivative; //微分常数 Derivative Const


int LastError; //Error[-1]


int PrevError; //Error[-2]


} PID;


 


 


static PID sPID;


static PID *sptr = &sPID;


/*====================================================================================================
Initialize PID Structure  PID
参数初始化
=====================================================================================================*/


void IncPIDInit(void)


{


sptr->SumError = 0;


sptr->LastError = 0; //Error[-1]


sptr->PrevError = 0; //Error[-2]


sptr->Proportion = 0; //比例常数 Proportional Const


sptr->Integral = 0; //积分常数Integral Const


sptr->Derivative = 0; //微分常数 Derivative Const


sptr->SetPoint = 0;


}


 


/*====================================================================================================
增量式PID计算部分
=====================================================================================================*/


int IncPIDCalc(int NextPoint)


{


register int iError, iIncpid; //当前误差


iError = sptr->SetPoint - NextPoint; //增量计算


iIncpid = sptr->Proportion * iError //E[k]


- sptr->Integral * sptr->LastError //E[k1]


+ sptr->Derivative * sptr->PrevError; //E[k2]


//存储误差,用于下次计算


sptr->PrevError = sptr->LastError;


sptr->LastError = iError;


//返回增量值


return(iIncpid);


}


 


 


参考资料:


1PID 调节控制做电机速度控制,SUNPLUS凌阳科技


pdf


2)增量式PID控制模块程序设计


http://www.dzsc.com/data/html/2008-11-24/73560.html

文章评论2条评论)

登录后参与讨论

用户1758762 2014-6-5 09:00

多谢楼主!

用户377235 2014-1-18 11:11

有个问题,sptr->Proportion,sptr->Integral ,sptr->Derivative ,这三个参数这样定义不好吧,应该是增量式里的ABC,写成比例系数,积分系数,微分系数,会让人误解吧,不知道我有没有理解错,请教一下,呵呵

用户377235 2013-4-19 14:51

楼主辛苦,对我相当有帮助,万分感激!!!

用户821944 2010-4-1 12:00

却是相当好,对于我当前的工作有很大的指导意义!

用户1383215 2009-11-20 18:55

很好

ash_riple_768180695 2009-11-19 20:31

内容很好,很全面。如果能够给出Quartus手册中对应章节的链接,供大家进一步阅读和参考就更好了。

ilove314_323192455 2009-11-19 15:10

好文章。 综合优化选项的设置确是达到时序收敛的有效的方法之一。
相关推荐阅读
藤井树 2015-10-12 14:43
印制电路板的抗干扰设计 zz
印制电路板的抗干扰设计     作者:中船重工集团第707所 肖麟芬   摘   要:本文以印制电路板的电磁兼容性为核心,分析了电磁干扰的产生机理...
藤井树 2013-10-22 15:32
2010.5.30 黄草梁上包饺子一日登山活动——摘韭菜篇
        上次桃花节的时候也有野韭菜,那时候的我连草和韭菜叶分不清,才回去的韭菜也不敢吃,哈哈,这次可算真正见识了韭菜,黄草梁也叫韭菜梁,因为满山遍野都是野韭菜而闻名,比较圆比较粗的就是野韭...
藤井树 2013-10-22 15:28
2010.5.30 黄草梁上包饺子一日登山活动——包饺子篇
摘韭菜回来,大家已经忙开了 我也装模作样地“工作着” 哈哈,还不让我包,包饺子是技术活,一定要皮薄馅厚才有资格包,像我这样的只能旁观了 摘的韭菜应该足够了,旁边那个袋子是我摘来带回学校的 ...
藤井树 2013-08-09 15:19
datasheet下载网站整理(查IC芯片手册)【原创】
*************************************************************************         作为电子工程师,芯片的dat...
藤井树 2010-06-04 00:21
陈伟宁王辉一家捐助渠道(北京菲亚特—英菲尼迪)
       王辉的最新消息请关注 http://chenweining.org/       目前事故责任认定已经出来了——陈家全责。        发信人: program (程序), 信区: D...
藤井树 2010-06-01 13:43
2010.5.30 黄草梁上包饺子一日登山活动——美景篇
这天不得不说的是天空,蓝蓝的天空,白白的云    绿油油的山脊  我、洪涛哥哥、huangna妹妹还有她同事小艾走在黄草梁上    在蓝天白云下合影       阳光照过来,景色真美 象鼻山,走不...
我要评论
2
4
关闭 站长推荐上一条 /2 下一条