PID算法

PID算法
PID算法

PID算法

在过程控制中,PID控制器,一直是应用最为广泛的一种自动控制器;PID控制也一直是众多控制方法中应用最为普遍的控制算法,PID算法的计算过程与输出值(OUT)有着直接函数关系,因此想进一步了解PID控制器,必须首先熟悉PID算法,这也是笔者为什么在下面的内容里大费周章讨论这个问题的原因所在。

PID控制器调节输出,是为了保证偏差值(e值)为零,使系统达到一个预期稳定状态。这里的偏差(e)是给定值(SP)和过程变量值(PV)的差。PID控制原理基于下面的算式:

输出M(t)是比例项(P)、积分项(I)、微分项(D)的函数。

M(t)=KC*e+ KC* +Minitial+ KC*TD* (1-1)

为了让计算机能处理这个PID算法,我们必须把这个连续算式离散化成为周期采样偏差算式,才能计算调节输出值(以下简称OUT值)。将积分与微分项分别改写成差分方程,可得:

(1-2)=e(1)+e(2)+…………+e(k);

(1-3)=[e(k)-e(k-1)]/T。

T是离散采样周期

将上(1-2)和(1-3)式代入输出项函数(1-1)式,可得数字偏差算式(1-4)为:

Mn=KC*en+KC* +Minitial+ KC* *(en-en-1) (1-4)

输出=比例项 +积分项 +微分项

(1-1)与(1-4)式中:

M(t) :回路输出(时间函数)

Mn :第n次采样时刻,PID回路输出的计算值(OUT值)

T :采样周期(或控制周期)

Minitial :PID回路输出初始值

Kc :PID回路增益

TI :积分项的比例常数

TD :微分项的比例常数

en :在第n次采样时刻的偏差值(en=SPn-PVn)

en-1:在第n-1次采样时刻的偏差值(也称偏差前项)

从这个数字偏差算式可以看出;

比例项是:当前误差采样的函数。

积分项是:从第一个采样周期到当前采样周期所有误差项的函数。

微分项是:当前误差采样和前一次误差采样的函数。

在这里需要说明的是:我们在积分项中可以不保存所有误差项,因为保存所有误差项会占用较大的计算机存储单元,所以我们通常从第一次误差采样开始,我们利用每一次偏差采样都会计算出的输出值的特点,在以后的输出值计算时只需保存偏差前项和积分项前值。利用计算机的处理的周期重复性,我们就可以根据我们刚才推导的数字偏差算式计算出下一次积分项值。因此我们可以简化上述的数字偏差算式(1-4)为:

Mn=KC*en+KC* en +MX+ KC* *(en-en-1) (1-5)

CPU(计算机中央芯片)实际计算中使用的是(1-5)简化算式的改进比例项、积分项、微分项和的形式计算PID输出的。

改进型算式是:

Mn = MPn +MIn + MDn (1-6)

输出=比例项+积分项+微分项

(1-5)和(1-6)式中:

Mn :第n次采样时刻,PID回路输出的计算值(OUT值)

MPn :第n次采样时刻的比例项

MIn :第n次采样时刻的积分项

MDn :第n次采样时刻的微分项

T :采样周期(或控制周期)

MX :PID回路积分前项

Kc :PID回路增益

TI :积分项的比例常数

TD :微分项的比例常数

en :在第n次采样时刻的偏差值(en=SPn-PVn)

en-1 :在第n-1次采样时刻的偏差值(en-1=SPn-1-PVn-1) (也称偏差前项)

下面我们就根据(1-5)与(1-6)的对应关系单独分析一下各子项中各值的关系

3.1比例项(MPn):

比例项MP是增益(Kc)和偏差(e)的乘积。因为偏差(e)是给定值(SP)与过程变量值(PV)之差(en=SPn-PVn)。根据(1-5)与(1-6)式中对应关系可得CPU执行的求比例项算式为:

MPn=Kc* (SPn-PVn) (2-1)

式中:

MPn :第n次采样时刻比例项的值

Kc :PID回路增益

SPn :第n次采样时刻的给定值

PVn :第n次采样时刻的过程变量值

从式(2-1)中,SP和PV都是已知量,因此影响输出值OUT在比例项中只有回路增益Kc。不难看出比例项值的大小与回路增益大小成比例系数关系。根据 P控制规律,在比例项中我们只要合理的设定Kc的大小,就能因根据采样偏差e值的变化规律改变MPn,从而影响Mn来控制调节幅度。

3.2积分项(MIn):

积分项值MI与偏差和成正比。因为偏差(e)是给定值(SP)与过程变量值(PV)之差(en=SPn-PVn)。根据(1-5)与(1-6)式中对应关系可得CPU执行的求积分项算式为:

MIn=Kc* (SPn-PVn)+MX (2-2)

式中:

MIn :第n次采样时刻积分项的值

Kc :PID回路增益

T :采样周期(或控制周期)

TI :积分时间常数

SPn :第n次采样时刻的给定值

PVn :第n次采样时刻的过程变量值

MX :第n-1采样时刻的积分项(积分前项)

在CPU每次计算出MIn之后,都要用MIn值去更新MX,MX的初值通常在第一次计算输出以前被设置为为Minitial(初值),这也就是Minitial为什么会在(1-5)式未执行扫描到(1-6)式执行扫描后变为MX的原因。

从式(2-2)中我们可以看出,积分项包括给定值SP、过程变量值PV、增益Kc、控制周期T、积分时间常数TI、积分前项MX 。而SP、PV、Kc(已在比例项中设定)、T(根据设备性能参照确定)、MX(上一次积分已算出)都是已知量,因此影响输出值OUT在积分项中只有积分时间常数TI。不难看出积分项值的大小与位于积分算式分母位置的积分时间常数TI大小成反比系数关系。也就是说,在有积分项参与输出调节控制的时候,积分时间常数设置越大,积分项作用输出值就越小,反之增大。根据I控制规律,在积分项中我们只要合理的设定TI的大小,就能因根据采样偏差e值的变化规律改变 MIn,从而影响Mn来控制调节幅度。

在这里又涉及到采样周期选取的问题,采样周期是计算机重新扫描各现场参数值变化的时间间隔,控制周期是重新计算输出的时间间隔,在不考虑计算机CPU运算速度的情况下,采样周期与控制周期通常认为是同一描述。在实际工业过程控制中,采样、控制周期越短,调节控制的品质就越好。但盲目、无止境追求较短的采样周期,不仅使计算机的硬件开支(如:A/D、D/A的转换速度与CPU 的运算速度)增加,而且由于现行的执行机构(如:电动类调节阀)的响应速度较低,过短的采样周期并不能有效的提高系统的动态特性,因此我们必须从技术和经济两方面综合考虑采样频率的选取。

选取采样周期时,有下面几个因素可供读者参考:

1、采样周期应远小于对象的扰动周期。

2、采样周期应比对象的时间常数小得多,否则所采样得到的值无法反映瞬间变化的过程值。

3、考虑执行机构的响应速度。如果采用的执行器的响应速度较慢,那么盲目的要求过短的采样周期将失去意义。

4、对象所要求的调节品质。在计算机速度允许的情况下,采样周期短,调节品质好。

5、性能价格比。从控制性能来考虑,希望采样周期短。但计算机运算速度,以及A/D和D/A的转换速度要相应地提高,会导致计算机的费用增加。

6、计算机所承担的工作量。如果控制的回路较多,计算量又特别大,则采样要加长;反之,可以将采样周期缩短。

综上分析可知:采样周期受很多因素的影响,当然也包括一些相互矛盾的,必须根据实际情况和主要的要求作出较为折衷的选择。笔者在实际过程控制中得出以下经验(仅供读者参考):如:流量1~2S,压力2~3S,温度1.5~4S,液位5~8S等。

3.2 微分项(MDn):

微分项值MD与偏差的变化成正比。因为偏差(e)是给定值(SP)与过程变量值(PV)之差(en=SPn-PVn)。根据(1-5)与(1-6)式中对应关系可得CPU执行的求微分项算式为:

MDn= KC* *{( SPn-PVn)-(SPn-1-PVn-1)} (2-3)

为了避免给定值变化引起微分项作用的跳变,通常在定义微分项算式时,采用假定给定值不变,即:SPn =SPn-1。这样可以用过程变量的变化替代偏差的变化,计算算式可改进为:

MDn= KC* * (PVn-PVn-1) (2-4)

(2-3)与(2-4)式中:

MDn :第n次采样时刻微分项的值

Kc :PID回路增益

T :采样周期(或控制周期)

TD :积分时间常数

SPn :第n次采样时刻的给定值

PVn :第n次采样时刻的过程变量值

SPn-1 :第n-1次采样时刻的给定值

PVn-1 :第n-1次采样时刻的过程变量值

式(2-4)中参与控制的变量或常量有增益Kc、微分时间常数TD、控制周期T、第n次采样时刻的过程变量值PVn、第n-1次采样时刻的过程变量值 PVn-1。而PVn、PVn-1、Kc(已在比例项中设定)、T(根据设备性能参照确定)都是已知量,因此影响输出值OUT在微分项中只有微分时间常数 TD。在式中不难看出,1、为了计算第n次的微分项值,必须保存第n-1次过程变量值参与下一次计算,而不

是偏差。当在第一次扫描周期开始的时候,PID 控制器会初始化PVn =PVn-1。2、微分项值的大小与位于微分算式分子位置的积分时间常数TD大小成比例系数关系。也就是说,在有微分项参与输出调节控制的时候,微分时间常数设置越大,与Kc乘积就会越大,从而微分项作用输出值就越大,反之变小,因此微分的设定一定要谨慎,设置不当很容易引起输出值的跳变。根据D控制规律,在积分项中我们只要合理的设定TD的大小,就能因根据采样偏差e值的变化规律改变MDn,从而影响Mn来控制调节开度。

四、控制器P、I、D项的选择

在实际过程控制中,为使现场过程值在较理想的时间内跟定SP值,如何确定选用何种控制或控制组合来满足现场控制的需要显得十分重要。根据前面的对PID算法的分析,下面将常用的各种控制规律的控制特点简单归纳一下:

1、比例控制规律P:采用P控制规律能较快地克服扰动的影响,它的作用于输出值较快,但不能很好稳定在一个理想的数值,不良的结果是虽较能有效的克服扰动的影响,但有余差出现。它适用于控制通道滞后较小、负荷变化不大、控制要求不高、被控参数允许在一定范围内有余差的场合。如:金彪公用工程部下设的水泵房冷、热水池水位控制;油泵房中间油罐油位控制等。

2、比例积分控制规律(PI):在工程中比例积分控制规律是应用最广泛的一种控制规律。积分能在比例的基础上消除余差,它适用于控制通道滞后较小、负荷变化不大、被控参数不允许有余差的场合。如:在主线窑头重油换向室中

F1401到F1419号枪的重油流量控制系统;油泵房供油管流量控制系统;退火窑各区温度调节系统等。

3、比例微分控制规律(PD):微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况下,对于提高系统的动态性能指标,有着显著效果。因此,对于控制通道的时间常数或容量滞后较大的场合,为了提高系统的稳定性,减小动态偏差等可选用比例微分控制规律。如:加热型温度控制、成分控制。需要说明一点,对于那些纯滞后较大的区域里,微分项是无能为力,而在测量信号有噪声或周期性振动的系统,则也不宜采用微分控制。如:大窑玻璃液位的控制。

4、例积分微分控制规律(PID):PID控制规律是一种较理想的控制规律,它在比例的基础上引入积分,可以消除余差,再加入微分作用,又能提高系统的稳定性。它适用于控制通道时间常数或容量滞后较大、控制要求较高的场合。如温度控制、成分控制等。

鉴于D规律的作用,我们还必须了解时间滞后的概念,时间滞后包括容量滞后与纯滞后。其中容量滞后通常又包括:测量滞后和传送滞后。测量滞后是检测元件在检测时需要建立一种平衡,如热电偶、热电阻、压力等响应较慢产生的一种滞后。而传送滞后则是在传感器、变送器、执行机构等设备产生的一种控制滞后。纯滞后是相对与测量滞后的,在工业上,大多的纯滞后是由于物料传输所致,如:大窑玻璃液位,在投料机动作到核子液位仪检测需要很长的一段时间。

总之,控制规律的选用要根据过程特性和工艺要求来选取,决不是说PID 控制规律在任何情况下都具有较好的控制性能,不分场合都采用是不明智的。如

果这样做,只会给其它工作增加复杂性,并给参数整定带来困难。当采用PID

控制器还达不到工艺要求,则需要考虑其它的控制方案。如串级控制、前馈控制、大滞后控制等。

五、利用整定参数来选择PID控制规律

在前面讲到PID控制规律的选择,如何在中整定参数中关闭或打开PID 控制规律成了我们应该了解的问题。在许多控制系统中,我们有时只需要一种或两种回路控制规律就可以满足生产工艺的需要,如P、PI、PD、PID等类型。根据我们推导的数字偏差算式(1-5),我们可以得出以下结论:

A、如果不要积分参与控制,可以把积分时间TI设为无穷大。但积分项还是不可能为零,这是因为还有初期Minitial的存在。

B、如果不要微分参与控制,可以把微分时间TD设为零。

C、如果不要比例参与控制,但需要积分或积分微分参与控制,可以把增益设为零。在增益为零的情况下,CPU在计算积分项和微分项的时候,会把增益置为1.0。

六、PID手、自动控制方式

在现场控制回路中,我们有时会出现扰动的强变引起现场过程值的跳变,如果这时采用了I控制规律,要消除这个扰动,会使得调节时间过长、过慢,这时就需要人为的进行干预。PID控制器在这方面设置了一个使能位0或1,0指手动控制,1为PID参与调节,也就是”自动”与”手动”的说法。当PID运算不被执行的时,我们称之为”手动”方式,PID运算参与控制称为”自动”方式。当这个使能位发生从0到1的正跳变时,PID会按照预先设置的控制规律进行一系列的动作,使PID从手动方式无扰动地切换到自动方式,为了能使手动方式无扰动切换到自动方式,PID会执行以下操作:

1、置过程变量值PV=给定值SP,在未人为改变SP值之前,SP持恒定。

2、置过程变量前值PVn-1=过程变量现值PVn

需要说明的是:CPU在启动或从STOP方式转化到RUN的方式时,使能位的默认值是为1的。当RUN状态存在,人为使使能位变为0,PID是不会自行将使能位变为1,不会自行的切换到自动方式。也就是说,要想再次使PID参与控制,需人为将使能位置1。例如:在ABB Freelance 2000 digivis操作员站中PID控制面板上,手、自动用M(man)、A(auto)标示,当从M转为A时,PID工作,PID将过程变量值PV置于设定值SP值,并保持PV跟踪SP值;当从A转为M时,PID停止工作,系统会将输出值OUTn-1赋予OUTn,并保持OUT不变,SP 值跟踪PV值。

七、PID的最佳整定参数的选定

PID的最佳整定参数一般包括Kc、TI、TD等三个常用的控制参数,准确有效的选定PID的最佳整定参数是关于PID控制器是否有效的关键部分,如何在

实际生产中找到这些合适的参数呢?现行的方法有很多种,如:动态特性参数法、稳定边界法、阻尼振荡法、现场经验整定法、极限环自整定法等。鉴于浮法玻璃24时不间断性生产特点,采用现场经验整定法会达到一个较好的控制效果。

现场经验整定法是人们在长期工作工程实践中,从各种控制规律对系统控制质量的影响的定性分析总结出来的一种行之有效、并得到广泛应用的工程整定方法。在现场整定过程中,我们要保持PID参数按先比例,后积分,最后微分的顺序进行,在观察现场过程值PV的趋势曲线的同时,慢慢的改变PID参数,进行反复凑试,直到控制质量符合要求为止。

在具体整定中,我们通常先关闭积分项和微分项,将TI设置为无穷大、TD设置为零,使其成为纯比例调节。初期比例度按经验数据设定,根据PV曲线,再慢慢的整定比例控制比例度,使系统达到4:1衰减振荡的PV曲线,然后,再加积分作用。在加积分作用之前,应将比例度加大为原来的1.2倍左右。将积分时间 TI由大到小的调整,真到系统再次得到4:1的衰减振荡的PV曲线为止。若需引入微分作用,微分时间按TD=(1/3~1/4) TI计算,这时可将比例度调到原来数值或更小一些,再将微分时间由小到大调整,直到PV曲线达到满意为止。有一点需要注意的是:在凑试过程中,若要改变 TI、TD时,应保持的比值不变。

在找到最佳整定参数之前,要对PV值曲线进行走势分析,判断扰动存在的变化大小,再慢慢的进行凑试。如果经过多次乃找不到最佳整定参数或参数无法达到理想状态,而生产工艺又必须要求较为准确,那就得考虑单回路PID控制的有效性,是否应该选用更复杂的PID控制。

值得注意的是:PID最佳整定参数确定后,并不能说明它永远都是最佳的,当由外界扰动的发生根本性的改变时,我们就必须重新根据需要再进行最佳参数的整定。它也是保证PID控制有效的重要环节。

几种常用的PID算法及发展趋势

几种常用的PID算法及发展趋势 c语言2008-04-16 11:10:38 阅读270 评论0 字号:大中小订阅 要:针对目前国内外热处理计算机控制系统的控制策略模型,讨论了改进型的PID控制算法、模糊PID控制算法、专家式PID控制算法及计算机控制策略发展趋势的若干问题。 关键词:控制策略PID控制算法模糊控制专家式PID控制算法 Xie Songyun,Zhang Jian,Wang Gongwang (Department of Electronic Engineering ,Northwestern Polytechnic University,Xi′an 710072) Dong Daqun(College of Marine Engineering,Northwestern Polytechnic University)1前言 计算机控制策略通常分为精确数学模型控制和通用型控制两类。精确数学模型控制是利用计算机的快速计算和判断能力,依据被控对象,例如热处理过程的物理化学特性所建立的数学模型,来对整个工艺过程进行控制。这类控制策略是以工艺过程的精确数学模型为基础的,但在许多情况下,由于生产的多样化,所处理零件材料、批量等的不规则性,工艺制度的变化程度等难以确定的实际因素,很难提出准确而又较简捷的数学模型,这就需要提出另一种通用的带调整因子的控制策略。目前最盛行的是改进型的PID控制算法和模糊控制算法,并正在发展专家系统。 本文拟就几种常用的PID算法及发展趋势加以研究和讨论。 2数字PID的改进算法 在计算机控制系统中,PID控制规律是用计算机程序来实现的,因此它的灵活性很大。一些原来的模拟PID控制器中无法实现的问题,在引入计算机以后就可以得到解决,于是产生了一系列的改进算法,以满足不同控制系统的需要。 2.1积分分离PID算法 在普通的数字PID控制器中引入积分环节的目的,主要是为了消除静差、提高精度。但在过程的启动、结束或大幅度增减设定值时,短时间内系统输出会有很大的偏差,造成PID运算的积分积累,引起系统较大的超调,甚至引起系统的振荡,这是某些生产过程绝对不允许的。为了防止这种现象的发生,可采用积分分离PID算法解决。 该方法的实质是,当被控量与设定值的偏差较大时,取消积分作用,以免积分作用使系统稳定性减弱,超调量加大;当被控量接近设定值时,加入积分作用,以便消除静差,提高控制精度。这样既有利于改善动态特性,又有利于消除静差。所以积分分离PID算法是一种较常用的方法。 具体做法是根据被控对象,设定一个偏差的门限e0,当过程控制 中偏差e(k)的绝对值大于e0时,系统取消积分控制;当e(k)的绝对值小于e0时,才引入积分控制。即积分分离形式的PID算式为: (1) 其中4专家式PID自整定控制算法 如前所述,常规PID控制器在使用过程中面临最麻烦的问题就是控制器参数的整定问题。近年来国内外不少学者和工程师研究了PID控制器参数的自整定方法,提出了多种PID控制器参数的自整定方案。其中最典型的是美国FOXBORO公司推出的EXACT专家式自整定控制器,它将专家系统技术应用于PID控制器,代表着当今智能自整定仪表的发展方向。 专家式PID参数整定算法即根据一定的PID控制知识及专家的经验,总结出一定的专家系统整定PID参数的规则,作出推理决策,对KP、TI、TD等参数进行整定,其一般结构如图5所示。 Abstract According to the control tactics model of computer control system of heat treatment in home and abroad,the control algorithm of improved PID control,fuzzy PID control algorithm and expert PID control algorithm are investigated and some problems on the development of control tactics are discussed. Key words:control tactics,PID,fuzzy control,expert PID control 2.2不完全微分的PID算法 在控制系统中引入微分环节改善了系统的动态特性,但对干扰特别敏感,有时,反而会降低控制效果。因此,若在控制算法中加上低通滤波器(一阶惯性环节)来抑制高频干扰,则性能可显著改善。 不完全微分PID的结构如图1a、b所示,图1a是将低通滤波器直接加在微分环节上,图1b是将低通滤波器加在整个PID控制器之后。下面以图1a的结构为例介绍不完全微分PID算法。

PID算法巡线

PID算法巡线 制模型:你控制一个人让他以PID控制的方式走110步后停下。 (1)P比例控制,就是让他走110步,他按照一定的步伐走到一百零几步(如108步)或100多步(如112步)就停了。 说明: P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 (2)PI积分控制,就是他按照一定的步伐走到112步然后回头接着走,走到108步位置时,然后又回头向110步位置走。在110步位置处来回晃几次,最后停在110步的位置。 说明: 在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。 (3)PD微分控制,就是他按照一定的步伐走到一百零几步后,再慢慢地向110步的位置靠近,如果最后能精确停在110步的位置,就是无静差控制;如果停在110步附近(如109步或111步位置),就是有静差控制。说明: 在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+微分D(PD)控制器能改善系统在调节过程中的动态特性。 小明接到这样一个任务:有一个水缸有点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时间就称为采样周期。 开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数。 小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间。 小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。他又在要求水面位置上面一点将水缸要求的水平面处凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。看到几个问采样周期的帖子,临时想了这么个故事。微分的比喻一点牵强,不过能帮助理解就行了,呵呵,入门级的,如能帮助新手理解下PID,于愿足矣。故事中小明的试验是一步步独立做,但实际加水工具、漏斗口径、溢水孔的大小同时都会影响加水的速度,水位超调量的大小,做了后面的实验后,往往还要修改改前面

51单片机PID算法程序

51单片机PID算法程序(二)位置式PID控制算法 由51单片机组成的数字控制系统控制中,PID控制器是通过PID控制算法实现的。51单片机通过AD对信号进行采集,变成数字信号,再在单片机中通过算法实现PID运算,再通过DA把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID控制算法 位置式PID控制算法的简化示意图 上图的传递函数为: (2-1) 在时域的传递函数表达式 (2-2)

对上式中的微分和积分进行近似 (2-3)式中n是离散点的个数。 于是传递函数可以简化为: (2-4)其中 u(n)——第k个采样时刻的控制; K P ——比例放大系数; K i ——积分放大系数; K d ——微分放大系数; T ——采样周期。 如果采样周期足够小,则(2-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。 (2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法。 缺点: 1)由于全量输出,所以每次输出均与过去状态有关,计算时要对e(k)(k=0,1,…n)进行累加,工作量大。 2)因为计算机输出的u(n)对应的是执行机构的实际位置,如果计算机出现故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。 位置式PID控制算法C51程序 具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算 到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位

PID算法程序—位置式PID控制算法

d dt £ o 式中n 是离散点的个数 于是传递函数可以简化为: ^32做暦式PID 拧制轩法肿简化示蓝图 位置式PID 控制算法的简化示意图 上图的传递函数为: u 7 . (2-1) 在时域的传递函数表达式 (2-2) 对上式中的微分和积分进行近似 (2-3) 由单片机组成的数字控制系统控制中,PID 控制器是通过PID 控制算法实现 PID 算法 的。单片机通过AD 对信号进行采集,变成数字信号,再在单片机中通过算法实 现PID 运算,再通过DA 把控制量反馈回控制源。从而实现对系统的伺服控制。 位置式PID 控制算法 血(门 — 1) ------- St ―: rfr ------- T Q k=Q

N(H)= K严(“)+ K送e(fc) + K d e(n一1)) (2-4)其中 KT KT. —亠 u(n) ----- 第k个采样时刻的控制; K P比例放大系数;K 积分放大系数;K d ――微分放大系数;T ――采样周期。 如果采样周期足够小,则(2-4 )的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。 (2-4)表示的控制算法直接按(2-1)所给出的PID控制规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式PID控制算法缺点: 1) 由于全量输出,所以每次输出均与过去状态有关,计算时要对 e(k)(k=0,1,…n)进行累加,工作量大。 2) 因为计算机输出的u(n)对应的是执行机构的实际位置,如果计算机出现 故障,输出u(n)将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成 严重的生产事故,这在实际生产中是不允许的。 位置式PID控制算法程序 具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和 ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,可大大提高运算速度。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。 /*=================================================================== ================================*/

pid算法

PID增量式算法 离散化公式: △u(k)= u(k)- u(k-1) △u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)] 进一步可以改写成 △u(k)=Ae(k)-Be(k-1)+Ce(k-2) 对于增量式算法,可以选择的功能有: (1) 滤波的选择 可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。 (2) 系统的动态过程加速 在增量式算法中,比例项与积分项的符号有以下关系:如果被控量继续偏离给定值,则这两项符号相同,而当被控量向给定值方向变化时,则这两项的符号相反。 由于这一性质,当被控量接近给定值的时候,反号的比例作用阻碍了积分作用,因而避免了积分超调以及随之带来的振荡,这显然是有利于控制的。但如果被控量远未接近给定值,仅刚开始向给定值变化时,由于比例和积分反向,将会减慢控制过程。 为了加快开始的动态过程,我们可以设定一个偏差范围v,当偏差|e(t)|< β时,即被控量接近给定值时,就按正常规律调节,而当|e(t)|>= β时,则不管比例作用为正或为负,都使它向有利于接近给定值的方向调整,即取其值为|e(t)-e(t-1)|,其符号与积分项一致。利用这样的算法,可以加快控制的动态过程。 (3) PID增量算法的饱和作用及其抑制 在PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。 纠正这种缺陷的方法是采用积累补偿法,当超出执行机构的执行能力时,将其多余部分积累起来,而一旦可能时,再补充执行。 PID位置算法 离散公式: u(k)=Kp*e(k) +Ki* +Kd*[e(k)-e(k-1)] 对于位置式算法,可以选择的功能有: a、滤波:同上为一阶惯性滤波 b、饱和作用抑制:

PID控制算法

PID (Proportional Integral Differential )控制是比例、积分、微分控制的简称。在自动控制领域中,PID 控制是历史最久、生命力最强的基本控制方式。 PID 控制器的原理是根据系统的被调量实测值与设定值之间的偏差,利用偏差的比例、积分、微分三个环节的不同组合计算出对广义被控对象的控制量。图1是常规PID 控制系统的原理图。 其中虚线框内的部分是PID 控制器,其输入为设定值 )(t r 与被调量实测值 )(t y 构成的控制偏差信号)(t e : )(t e =)(t r -)(t y (1) 其输出为该偏差信号的比例、积分、微分的线性组合,也即PID 控制律: ]) ()(1)([)(0 ? ++ =t D I P dt t de T dt t e T t e K t u (2) 式中,P K 为比例系数;D T 为积分时间常数;D T 为微分时间常数。 根据被控对象动态特性和控制要求的不同,式(2)中还可以只包含比例和积分的PI 调节或者只包含比例微分的PD 调节。下面主要讨论PID 控制的特点及其对控制过程的影响、数字PID 控制策略的实现和改进,以及数字PID 控制系统的设计和控制参数的整定等问题。 1.PID 控制规律的特点 (1)比例控制器 比例控制器是最简单的控制器,其控制规律为 0)()(u t e K t u P += (3) 式中,Kp 为比例系数;0u 为控制量的初值,也就是在启动控制系统时的控制量。图2所示是比例控制器对单位阶跃输入的阶跃响应。 由图2可以看到,比例控制器对于偏差是及时反应的,偏差一旦产生,控制器立即产生控制作用使被控量朝着减小偏差的方向变化,控制作用的强弱取决

简单的PID算法库

记得在做测温仪校准台的时候,在做到用PID算法控制温度的时候,对于PID算法的理解的过程很难受也很纠结,尽管有凤舞天和tomsu两位大师在旁边指导还是费了不少时间和精力去理解、领悟和调试。后来另外一个同事需要做高频加热设备的温度控制,也需要用到PID算法对温度的控制,因为这位同事是今年刚毕业的大学生,在学校主要是学软件,基本上没有什么硬件基础,所以她对整个温度控制很难理解和领悟,对PWM的理解刚开始总是很难精确,所以在她做温控的过程更加的纠结和痛苦,同事耗费的时间、精力和人力(需要在旁边指导的同事)也更大。并且她的经历跟我的经历是重复的,在我经历过一遍之后她又按照我走过的经历再经历一遍,这种重复的工作对公司来说是一种很严重的人力资源的浪费。对于一个公司来说,人力资源是最宝贵的一种资源。 而在工控行业,PID算法是软件控制所常用的一种算法,所以对于我们嵌入式组来说,基本上是需要每个人都会用的。那么我们就必须要找到一种方法既能降低学习成本,又能统一软件,降低维护成本,而且还简单、易学、易用。所以,凤舞天建议我先在msOS的基础上添加一个PID算法库的试用实例,面向对象的,把算法都封装在底层,用户只需要调节相对应的门限值和系数就行。 那么我们来介绍一下PID算法库的分层。 msOS是采用分层的,整个系统分为App和System两个目录: 而System是系统库。我们把PID库添加在System目录下,以实现真正的库封装。 在PID目录下,包含Pid.c和Pid.h两个文件。 首先我们从PID库的应用开始入手。我们把用户根据实际情况需要调整的参

数做成界面菜单放在event.c文件中。用户可以根据特定需求来更改目标值TargetPointer和获取当前值CurrentPointer;也可以根据控制过程所需要的控制曲线来定P、I、D引入的门限值;还可以设置运算过程中P、I、D的系数和积分处理的模式,用户只需要对此进行注册即可。同时需要对在底层运算后传上来的结果进行怎样的处理在static void Mycallback( int data)中进行控制。 那么该怎样去调节这些参数就得需要我们了解PID的原理和物理意义了。 其实关于PID算法的文章网上很多,可基本上都是基于数学模型讲解的,很难理解也很难运用,后来凤舞天也写了一篇《PID算法》,深入浅出,比较通俗易懂。而作者结合具体项目的实践,和对PID算法理论的理解,简单总结了一下: P是根据测量值和目标值的误差来决定的负反馈的大小。P的取得公式:P=系数*(目标值-当前值)。但是如果一开始就引入负反馈,很有可能达不到目标值,所以需要设定引入负反馈的门限值。而在引入负反馈门限值之前,如果(目

PID算法原理及调整规律

PID算法原理及调整规律 一、PID算法简介 在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。 首先必须明确PID算法是基于反馈的。一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。 顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律: 比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。从而达到了调节速度的目的。显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。从而,加大P值,可以减少从非稳态到稳态的时间。但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。 积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。当差值不是很大时,为了不引起振荡。可以先让电机按原转速继续运行。当时要将这个差值用积分项累加。当这个和累加到一定值时,再一次性进行处理。从而避免了振荡现象的发生。可见,积分项的调节存在明显的滞后。而且I值越大,滞后效果越明显。 微分D:微分项部分其实就是求电机转速的变化率。也就是前后两次差值的差而已。也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。可见微分项的调节是超前的。并且D值越大,超前作用越明显。可以在一定程度上缓冲振荡。比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,

51单片机PID算法程序_三_增量式PID控制算法

51单片机PID算法程序(三)增量式PID控制算法 当执行机构需要的不是控制量的绝对值,而是控制量的增量(例如去驱动步进电动机)时,需要用PID 的“增量算法”。 增量式PID控制算法可以通过(2-4)式推导出。由(2-4)可以得到控制器的第k-1个采样时刻的输出值为: (2-5) 将(2-4)与(2-5)相减并整理,就可以得到增量式PID控制算法公式为: (2-6) 其中 由(2-6)可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,只要使用前后三次测量的偏差值,就可以由(2-6)求出控制量。 增量式PID控制算法与位置式PID算法(2-4)相比,计算量小得多,因此在实际中得到广泛的应用。 位置式PID控制算法也可以通过增量式控制算法推出递推计算公式: (2-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; //误差累计

PID算法及参数

PID算法及参数整定知识 1.位置表达式 位置式表达式是指任一时刻PID控制器输出的调节量的表达式。 PID控制的表达式为 式中的y(t)为时刻t控制器输出的控制量,式中的y(0)为被控制量没有偏差时控制器输出的控制量。 由于计算机进入了控制领域。人们将模拟PID控制规律引入到计算机中来。由于计算机控制是一种采样控制,它只能根据采样许可的偏差计算控制量,而不能象模拟控制那样连续输出控制量,进行连续控制。由于这一特点,上面公式中的积分和微分项不能直接使用,必须进行离散化处理。离散化处理的方法为:以T作为采样周期,k作为采样序号,则离散采样时间kT对应着连续时间 t,用求和的形式代替积分,用增量的形式代替微分,可作如下近似变换: 上式中,为了表示方便,将类似于e(kT)简化成e k 形式就可以得到离散的PID表达式:

或写成 此公式即为位置式的PID表达式。 ?式中:k——采样序号,k=0,1,2,… ?y k ——第k 次采样时刻的计算机输出值 ? e k——第k 次采样时刻输入的偏差值 ?e k ?1——第k-1 次采样时刻输入的偏差值 ?K I ——积分系数。K I = K P*T/T I ?积分时间T I即为累积多少次/个T) ?K D——微分系数。K D = K P*T D /T ?如果采样周期取得足够小,则以上近似计算可获得足够精确的结果,离散控制过程与连续控制过程十分接近。 2.增量式表达式 利用上面的公式,可得出第k次采样、第k-1次采样时的输出调节量y k、y k-1,用y k-y k-1,即得增量式PID表达式,如下: 3.PID参数的工程整定方法 参数整定的方法很多,我们只介绍几种工程上最常用的方法。最实用的是试凑法。 1)临界比例度法 这是目前使用较广的一种方法,具体作法如下:

PID算法完全讲解

PID算法完全讲解 #include typedef unsigned char uChar8; typedef unsigned int uInt16; typedef unsigned long int uInt32; sbit ConOut = P1^1; //加热丝接到P1.1口 typedef struct PID_Value { uInt32 liEkVal[3]; //差值保存,给定和反馈的差值 uChar8 uEkFlag[3]; //符号,1则对应的为负数,0为对应的为正数 uChar8 uKP_Coe; //比例系数 uChar8 uKI_Coe; //积分常数 uChar8 uKD_Coe; //微分常数 uInt16 iPriVal; //上一时刻值 uInt16 iSetVal; //设定值 uInt16 iCurVal; //实际值 }PID_ValueStr; PID_ValueStr PID; //定义一个结构体,这个结构体用来存算法中要用到的各种数据 bit g_bPIDRunFlag = 0; //PID运行标志位,PID算法不是一直在运算。而是每隔一定时间,算一次。 /* ******************************************************** /* 函数名称: PID_Operation() /* 函数功能:PID运算 /* 入口参数:无(隐形输入,系数、设定值 等) /* 出口参数:无(隐形输出,U(k)) /* 函数说明: U(k)+KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)] ******************************************************** */ void PID_Operation(void) { uInt32 Temp[3] = {0}; //中间临时变量 uInt32 PostSum = 0; //正数和 uInt32 NegSum = 0; //负数和

典型的PID算法源代码

比较典型的PID算法控制程序源代码 作者:未知文章来源:未知点击数:12198 更新时间:2006-4-24 比较典型的PID处理程序 [日期:2005-2-1] 来源:21ICbbs 作者:lookuper [字体:大中小] /*==================================================================================================== 这是一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算 到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。 =====================================================================================================*/ #include #include /*==================================================================================================== 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 { double SetPoint; // 设定目标Desired value double Proportion; // 比例常数Proportional Const double Integral; // 积分常数Integral Const double Derivative; // 微分常数Derivative Const double LastError; // Error[-1] double PrevError; // Error[-2] double SumError; // Sums of Errors } PID; /*==================================================================================================== PID计算部分 =====================================================================================================*/ double PIDCalc( PID *pp, double NextPoint ) { double dError, Error; Error = pp->SetPoint - NextPoint; // 偏差 pp->SumError += Error; // 积分 dError = pp->LastError - pp->PrevError; // 当前微分

自控行业的PID算法分类详解

在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象──“一阶滞后+纯滞后”与“二阶滞后+纯滞后”的控制对象,PID控制器是一种最优控制。PID调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、…)。 下面对控制点所采用的PID控制算法进行说明。 控制点目前包含三种比较简单的PID控制算法,分别是:增量式算法,位置式算法,微分先行。这三种PID算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求。 1) PID增量式算法 离散化公式: 注:各符号含义如下 u(t): 控制器的输出值。 e(t):控制器输入与设定值之间的误差。 Kp:比例系数。 Ti:积分时间常数。 Td:微分时间常数。 T:调节周期。 对于增量式算法,可以选择的功能有: (1) 滤波的选择 可以对输入加一个前置滤波器,使得进入控制算法的给定值不突变,而是有一定惯性延迟的缓变量。 (2) 系统的动态过程加速 在增量式算法中,比例项与积分项的符号有以下关系:如果被控量继续偏离给定值,则这两项符号相同,而当被控量向给定值方向变化时,则这两项的符号相反。 由于这一性质,当被控量接近给定值的时候,反号的比例作用阻碍了积分作用,因而避免了积分超调以及随之带来的振荡,这显然是有利于控制的。但如果被控量远未接近给定值,仅刚开始向给定值变化时,由于比例和积分反向,将会减慢控制过程。 为了加快开始的动态过程,我们可以设定一个偏差范围v,当偏差|e(t)|< β时,即被控量接近给定值时,就按正常规律调节,而当|e(t)|>= β时,则不管比例作用为正或为负,都使它向有利于接近给定值的方向调整,即取其值为|e(t)-e(t-1)|,其符号与积分项一致。利用这样的算法,可以加快控制的动态过程。 (3) PID增量算法的饱和作用及其抑制 在PID增量算法中,由于执行元件本身是机械或物理的积分储存单元,如果给定值发生突变时,由算法的比例部分和微分部分计算出的控制增量可能比较大,如果该值超过了执行元件所允许的最大限度,那么实际上执行的控制增量将时受到限制时的值,多余的部分将丢失,将使系统的动态过程变长,因此,需要采取一定的措施改善这种情况。 纠正这种缺陷的方法是采用积累补偿法,当超出执行机构的执行能力时,将其多余部分积累起来,而一旦可能时,再补充执行。 2) PID位置算法 对于位置式算法,可以选择的功能有: a、滤波:同上为一阶惯性滤波 b、饱和作用抑制: (1) 遇限削弱积分法 一旦控制变量进入饱和区,将只执行削弱积分项的运算而停止进行增大积分项的运算。具体地说,在计算U i时,将判断上一个时刻的控制量Ui-1是否已经超出限制范围,如果已经超出,那么将根据偏差的符号,判断系统是否在超调区域,由此决定是否将相应偏差计入积分项。 (2) 积分分离法 在基本PID控制中,当有较大幅度的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。特别是对于温度、成份等变化缓慢的过程,这一现象将更严重。

经典PID算法程序

void StationPIDFollowCtrl(void) { // float display_value; unsigned char i; //float MAdata; const OutTempToMatchTemp_Struct *OutTempToMatchTempPtr; OutTempToMatchTempPtr = OutTemperatureMatchTable; EEPROMReadBytes(&StationModeCtrl,0x0D00,4); /* set_point = 30; process_point = 40; p_gain = (float)(0.067);//5.2 i_gain = (float)(0.77);// d_gain = (float)(0.18);// dead_band = 0.01;//2 integral_val =(float)(0.01); */ if( StationModeCtrl.CtrlAdjust == 0 ) { if(PidSetSign == 1) { PidSetSign = 0; //EEPROMReadBytes(&PIDFollowCtrl,0x0E00,26); pid_tune(&PIDFollowCtrl, SysConfig.pgain,SysConfig.igain,SysConfig.dgain,SysConfig.deadband); pid_bumpless(&PIDFollowCtrl); } switch (StationModeCtrl.CtrlMode) { case 0: case 1: PIDFollowCtrl.SP = SysConfig.CtrlTemp; break; case 2: //SysVar.OutsideTemp = -10; for(i = 0; i < MatchTempNum; i ++) { if((SysVar.OutsideTemp >=OutTempToMatchTempPtr->FactTempDownLimit)&&(SysVar.Outsid eTemp < OutTempToMatchTempPtr->FactTempUpLimit))

PID控制算法的C语言实现(完整版)

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之间存在怎样的联系呢? https://www.360docs.net/doc/3a17743429.html,/user1/3407/archives/2006/33541.html(见附录1)这篇文章上给出了一种方法,即,每个电压对应一个转速,电压和转速之间呈现线性关系。但是我考虑这种方法的前提是把直流电机的特性理解为线性了,而实际情况下,直流电机的特性绝对不是线性的,或者说在局部上是趋于线性的,这就是为什么说PID调速有个范围的问题。具体看一下 https://www.360docs.net/doc/3a17743429.html,/component/article90249.htm(见附录2)这篇文章就可以了解了。所以在正式进行调速设计之前,需要现有开环系统,测试电机和转速之间的特性曲线(或者查阅电机的资料说明),然后再进行闭环参数整定。这篇先写到这,下一篇说明连续系统的离散化问题。并根据离散化后的特点讲述位置型PID和增量型PID的用法和C语言实现过程。

PID控制算法介绍与实现

PID控制算法介绍与实现 一、PID的数学模型 在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在很多控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的。PID算法的一般形式: PID算法通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻): 1.输入量为i(t) 2.输出量为o(t) 3.偏差量为err t=i(t)?o(t) u(t)=k p(err t+1 T i .err t d t+ T D d err (t) d t )

二、PID算法的数字离散化 假设采样间隔为T,则在第K个T时刻: 偏差err(k)=i(k) - o(k) 积分环节用加和的形式表示,即err k + err(k+1) + …微分环节用斜率的形式表示,即[err(k)- err(k?1)]/T; PID算法离散化后的式子: u(k)=k p(err k+T i .err j+ T D (err k?err(k?1))) 则u(k)可表示成为: u(k)=k p(err k+k i err j+k d(err k?err(k?1))) 其中式中: 比例参数k p:控制器的输出与输入偏差值成比例关系。系统一旦出现偏差,比例调节立即产生调节作用以减少偏差。特点:过程简单快速、比例作用大,可以加快调节,减小误差;但是使系统稳定性下降,造成不稳定,有余差。 积分参数k i:积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加到原有系统上以抵消系统造成的静差。 微分参数k d:微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。

PID算法介绍

PID控制 当今的自动控制技术都是基于反馈的概念。反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。 目录 概述 基本用途 现实意义 系统分类 开环控制系统 闭环控制系统 阶跃响应 PID调节方法 原理和特点 比例(P)控制 积分(I)控制 微分(D)控制 PID控制器的参数整定 PID控制实现 PID 的反馈逻辑 打开PID 功能 目标信号与反馈信号 目标值给定 反馈信号的连接 P 、I 、D 参数的预置与调整 比例增益P 积分时间

微分时间D P 、I 、D 参数的调整原则 概述 基本用途 现实意义 系统分类 开环控制系统 闭环控制系统 阶跃响应 PID调节方法 原理和特点 比例(P)控制 积分(I)控制 微分(D)控制 PID控制器的参数整定 PID控制实现 PID 的反馈逻辑 打开PID 功能 目标信号与反馈信号 目标值给定 反馈信号的连接 P 、I 、D 参数的预置与调整 比例增益P 积分时间 微分时间D P 、I 、D 参数的调整原则 展开 编辑本段概述 这个理论和应用自动控制的关键是,做出正确的测量和比较后,如何才能更好地纠正系统。 PID(比例-积分-微分)控制器作为最早实用化的控制器已有70多年历史,现在仍然是应用最广泛的工业控制器。PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。 PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。其输入e (t)与输出u (t)的关系为 u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt] 式中积分的上下限分别是0和t 因此它的传递函数为:G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s] 其中kp为比例系数;TI为积分时间常数;TD为微分时间常数 编辑本段基本用途 它由于用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数(Kp,Ti 和Td)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。 首先,PID应用范围广。虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了。

相关主题
相关文档
最新文档