《PID算法的通俗讲解及调节口诀(17页).doc》由会员分享,可在线阅读,更多相关《PID算法的通俗讲解及调节口诀(17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-PID调节口诀1. PID常用口诀: 参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,理想曲线两个波,前高后低4比1, 一看二调多分析,调节质量不会低 2.PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:温度T: P=2060%,T=180600s,D=3-180s压力P: P=3070%,T=24180s, 液位L: P=2080%,T=60300s, 流量
2、L: P=40100%,T=660s。 3.PID控制的原理和特点 在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称 PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PI
3、D控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。 比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 积分(I)控制 在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入积分项。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,
4、积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 微分(D)控制 在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化超前,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入比例项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的
5、是微分项,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。什么是PID一种通俗易懂的讲解首先帮大家解决一下什么是PID调节,为什么就要这样的疑惑。PID是比例,积分,微分的英文单词的首字母的简称。下面举个例子说明一下PID,让大家有个感官的认识,控制模型:你控制一个人让他以PID控制的方式走110步后停下。 (1)P比例控制,就是让他走110步,他按照一定的步伐走到一百零几步(如108步)或100多步(如112步)就停了
6、。 说明: P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 (2)PI积分控制,就是他按照一定的步伐走到112步然后回头接着走,走到108步位置时,然后又回头向110步位置走。在110步位置处来回晃几次,最后停在110步的位置。 说明: 在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入
7、“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 (3)PD微分控制,就是他按照一定的步伐走到一百零几步后,再慢慢地向110步的位置靠近,如果最后能精确停在110步的位置,就是无静差控制;如果停在110步附近(如109步或111步位置),就是有静差控制。 说明: 在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,
8、其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+微分D(PD)控制器能改善系统在调节过程中的动态特性。小云接到这样一个任务:一个水缸有点漏水(而且漏水的速度还不
9、是固定不变的),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。 小云接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,开始每30分钟来检查一次水面高度。结果水漏得太快,每次小云来检查时,水都快漏完了,离要求的高度相差很远,后来小云改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,他确定每10分钟来检查一次。这个检查时间就称为采样周期。 开始小云用勺子加水,水龙头离水缸有十几米远的距离,经常要跑好几趟才加够水,于是小云又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,小
10、云又动脑筋,我不用瓢也不用桶,最后选择可用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。 小云又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有溢出的可能。于是他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最终找到了满意的漏斗。漏斗的时间就称为积分时间。 小云终于喘了一口气,但任务的要求突然严格了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否
11、则不给工钱。小云又为难了!于是他又开动脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高很多。他又在要求水面位置上面一点将水缸凿一孔,再接一根管子到下面的备用桶里,这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。 好了,故事讲完了,下面是关于应用增量式PID算法。其实PID的算法可以做很深,但没必要,一般入门级的算法已经在很多场合够用了,这里之所以选用增量式PID算法(另外还有位置式PID等等),因为增量式PID算法运算量少,非常适合单片机的应用。显然要想给单片机运算,就必须是数字量,而上述的PID是
12、模拟PID,我们要将他数字化,离散化。其中积分在上面说到的,他的几何意义就是求e(t)与时间轴t围成的图形的面积,将这个面积分成T等分 ,T=0到T=1跟e(t)围成的面积加上T=1到T=2跟e(t)围成的面积一直累加。直到T-1到T跟e(t)围成的面积刚好就是整个e(t)与t时间轴围成的面积,刚刚好是e(t)对t的积分,如果T无限大,那么就可以分割成无限个小图形那么这个图形的面积就可以用Te(1)+e(2)+e(T-1)+e(T)来代替积分效果,而这个T等分就是AD在整个时间轴t中采样的点,显然越快的AD在相同的时间t里面采样的点越多,换句话说就是T更接近无限大。因此积分可以用累和代替。下面
13、为积分的专业的解释定义设函数f(x)在a,b上有界,在a,b中任意插入若干个分点 a=x0x1.xn-1SumError = 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 IncPI
14、DCalc(int NextPoint) register int iError, iIncpid; /当前误差 iError = sptr-SetPoint - NextPoint; /增量计算 iIncpid = sptr-Proportion * iError /Ek项 - sptr-Integral * sptr-LastError /Ek1项 + sptr-Derivative * sptr-PrevError; /Ek2项 /存储误差,用于下次计算 sptr-PrevError = sptr-LastError; sptr-LastError = iError; /返回增量值 return(iIncpid); 第 17 页-