文档收拾 | 学习参阅
20XX
PID操控算法的C言语完结一 PID算法原理
?? 最近两天在考虑一般操控算法的C言语完结问题,发现网络上尚没有一套完好的比较体系的解说。所以总结了几天,收拾一套思路共享给咱们。
?? 在工业运用中PID及其衍生算法是运用最广泛的算法之一,是名副其实的全能算法,假设能够熟练掌握PID算法的规划与完结进程,关于一般的研制人员来讲,应该是满意应对一般研制问题了,而难能可贵的是,在我所触摸的操控算法傍边,PID操控算法又是最简略,最能体现反响思维的操控算法,可谓经典中的经典。经典的未必是杂乱的,经典的东西常常是简略的,并且是最简略的,想想牛顿的力学三大规矩吧,想想爱因斯坦的质能方程吧,多么的简略!简略的不是原始的,简略的也不是落后的,简略到了美的程度。先看看PID算法的一般办法:
?? PID的流程简略到了不能再简略的程度,经过差错信号操控被控量,而操控器自身便是份额、积分、微分三个环节的加和。这儿咱们规矩(在t时刻):
?? 1.输入量为rin(t);
?? 2.输出量为rout(t);
?? 3.差错量为err(t)=rin(t)-rout(t);
?? pid的操控规矩为
?? 了解一下这个公式,首要从下面几个问题着手,为了便于了解,把操控环境具体一下:
?? 1.规矩这个流程是用来为直流电机调速的;
?? 2.输入量rin(t)为电机转速预订值;
?? 3.输出量rout(t)为电机转速实践值;
?? 4.执行器为直流电机;
?? 5.传感器为光电码盘,假定码盘为10线;
?? 6.直流电机选用PWM调速 转速用单位 转/min 标明;
? 不难看出以下定论:
?? 1.输入量rin(t)为电机转速预订值(转/min);
?? 2. 输出量rout(t)为电机转速实践值(转/min);
?? 3.差错量为预订值和实践值之差(转/min);
?? 那么以下几个问题需求弄清楚:
?? 1.经过PID环节之后的U(t)是什么值呢?
?? 2.操控执行器(直流电机)滚动转速应该为电压值(也便是PWM占空比)。
?? 3.那么U(t)与PWM之间存在怎样的联络呢?
/user1/3407/archives/2006/33541.html(见附录1)这篇文章上给出了一种办法,即,每个电压对应一个转速,电压和转速之间呈现线性联络。但是我考虑这种办法的条件是把直流电机的特性了解为线性了,而实践状况下,直流电机的特性必定不是线性的,或许说在部分上是趋于线性的,这便是为什么说PID调速有个规模的问题。具体看一下/component/article90249.htm(见附录2)这篇文章就能够了解了。所以在正式进行调速规划之前,需求现有开环体系,测验电机和转速之间的特性曲线(或许查阅电机的材料阐明),然后再进行闭环参数整定。这篇先写到这,下一篇阐明接连体系的离散化问题。并根据离散化后的特色叙述方位型PID和增量型PID的用法和C言语完结进程。
PID操控算法的C言语完结二 PID算法的离散化
?? 上一节中,我论说了PID算法的底子办法,并对其操控进程的完结有了一个扼要的阐明,经过上一节的总结,底子现已能够了解PID操控的进程。这一节中先持续上一节内容弥补阐明一下。
?? 1.阐明一下反响操控的原理,经过上一节的框图不难看出,PID操控其实是对差错的操控进程;
?? 2.假设差错为0,则份额环节不起效果,只需存在差错时,份额环节才起效果。
?? 3.积分环节首要是用来消除静差,所谓静差,便是体系安稳后输出值和设定值之间的差值,积分环节实践上便是差错累计的进程,把累计的差错加到原有体系上以抵消体系构成的静差。
?? 4.而微分信号则反响了差错信号的改动规矩,或许说是改动趋势,根据差错信号的改动趋势来进行超前调理,然后添加了体系的快速性。
?? 好了,关于PID的底子阐明就弥补到这儿,下面将对PID接连体系离散化,然后便利在处理器上完结。下面把接连状况的公式再贴一下:
?? 假定采样距离为T,则在第K T时刻:
差错err(K)=rin(K)-rout(K);
积分环节用加和的办法标明,即err(K)+err(K+1)+……;
微分环节用斜率的办法标明,即[err(K)-err(K-1)]/T;
然后构成如下PID离散标明办法:
则u(K)可标明成为:
至于说Kp、Ki、Kd三个参数的具体表达式,我想能够轻松的推出了,这儿节省时刻,不再具体标明晰。
其实到这儿中止,PID的底子离散标明办法现已出来了。现在的这种表述办法归于方位型PID,别的一种表述办法为增量式PID,由U上述表达式能够简略得到:
那么:
这便是离散化PID的增量式标明办法,由公式能够看出,增量式的表达成果和最近三次的差错有关,这样就大大进步了体系