pid控制 订阅
比例积分微分控制,简称PID控制,是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,至今仍有90%左右的控制回路具有PID结构。简单的说,根据给定值和实际输出值构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控对象进行控制。常规PID控制器作为一种线性控制器。 展开全文
比例积分微分控制,简称PID控制,是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,至今仍有90%左右的控制回路具有PID结构。简单的说,根据给定值和实际输出值构成控制偏差,将偏差按比例、积分和微分通过线性组合构成控制量,对被控对象进行控制。常规PID控制器作为一种线性控制器。
信息
外文名
proportional-integral-derivative control
简    称
PID控制
特    点
算法简单、鲁棒性好、可靠性高
释    义
按偏差的比例、积分、微分控制
中文名
比例积分微分控制
学    科
自动化控制
比例积分微分控制理论简介
经典控制理论在实际控制系统中的典型应用就是PID控制器。在早期的控制系统中,PID控制也是唯一的自动控制方式。伴随着计算机技术的发展,现代控制理论在实用性方面获得了很大进展,解决了许多经典控制理论不能解决的问题。这一现象使很多人认为,新的理论和技术可以取代PID控制。但后来的发展说明,PID控制并没有让位。目前,PID控制仍然是在工业控制中应用得最为广泛的一种控制方法。其原因是:(1)其结构简单,鲁棒性和适应性较强;(2)其调节整定很少依赖于系统的具体模型;(3)各种高级控制在应用上还不完善;(4)大多数控制对象使用常规PID控制即可以满足实际的需要;(5)高级控制难以被企业技术人员掌握 [1]  。但由于实际对象通常具有非线性、时变不确定性、强干扰等特性,应用常规PID控制器难以达到理想的控制效果;在生产现场,由于参数整定方法繁杂,常规PID控制器参数往往整定不良、性能欠佳。这些因素使得PID控制在复杂系统和高性能要求系统中的应用受到了限制 [2]  。
收起全文
精华内容
下载资源
问答
  • 一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原来上来...

    一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

    PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行速度等等,都可以使用PID控制。这里我们从原理上来理解PID控制。
    PID(proportion integration differentiation)其实就是指比例,积分,微分控制。先把图片和公式摆出来,看不懂没关系。(一开始看这个算法,公式能看懂,具体怎么用怎么写代码也知道,但是就是不知道原理,不知道为什么要用比例,微分,积分这3个项才能实现最好的控制,用其中两个为什么不行,用了3个项能好在哪里,每一个项各有什么作用

    PID控制算法原理

    PID控制算法公式

    总的来说,当得到系统的输出后,将输出经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统的行为,下面用一个简单的实例来说明。

    比例控制算法

    我们先说PID中最简单的比例控制,抛开其他两个不谈。还是用一个经典的例子吧。假设我有一个水缸,最终的控制目的是要保证水缸里的水位永远的维持在1米的高度。假设初试时刻,水缸里的水位是0.2米,那么当前时刻的水位和目标水位之间是存在一个误差的error,且error为0.8.这个时候,假设旁边站着一个人,这个人通过往缸里加水的方式来控制水位。如果单纯的用比例控制算法,就是指加入的水量u和误差error是成正比的。即
    u=kp*error
    假设kp取0.5,
    那么t=1时(表示第1次加水,也就是第一次对系统施加控制),那么u=0.5*0.8=0.4,所以这一次加入的水量会使水位在0.2的基础上上升0.4,达到0.6.
    接着,t=2时刻(第2次施加控制),当前水位是0.6,所以error是0.4。u=0.5*0.4=0.2,会使水位再次上升0.2,达到0.8.
    如此这么循环下去,就是比例控制算法的运行方法。
    可以看到,最终水位会达到我们需要的1米。
    但是,单单的比例控制存在着一些不足,其中一点就是 –稳态误差!(我也是看了很多,并且想了好久才想通什么是稳态误差以及为什么有稳态误差)。
    像上述的例子,根据kp取值不同,系统最后都会达到1米,不会有稳态误差。但是,考虑另外一种情况,假设这个水缸在加水的过程中,存在漏水的情况,假设每次加水的过程,都会漏掉0.1米高度的水。仍然假设kp取0.5,那么会存在着某种情况,假设经过几次加水,水缸中的水位到0.8时,水位将不会再变换!!!因为,水位为0.8,则误差error=0.2. 所以每次往水缸中加水的量为u=0.5*0.2=0.1.同时,每次加水缸里又会流出去0.1米的水!!!加入的水和流出的水相抵消,水位将不再变化!!
    也就是说,我的目标是1米,但是最后系统达到0.8米的水位就不在变化了,且系统已经达到稳定。由此产生的误差就是稳态误差了。
    (在实际情况中,这种类似水缸漏水的情况往往更加常见,比如控制汽车运动,摩擦阻力就相当于是“漏水”,控制机械臂、无人机的飞行,各类阻力和消耗都可以理解为本例中的“漏水”)
    所以,单独的比例控制,在很多时候并不能满足要求。

    积分控制算法

    还是用上面的例子,如果仅仅用比例,可以发现存在暂态误差,最后的水位就卡在0.8了。于是,在控制中,我们再引入一个分量,该分量和误差的积分是正比关系。所以,比例+积分控制算法为:
    u=kp*error+ kierror
    还是用上面的例子来说明,第一次的误差error是0.8,第二次的误差是0.4,至此,误差的积分(离散情况下积分其实就是做累加),error=0.8+0.4=1.2. 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数ki乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即上例中的0.8,由于加入了积分项的存在,会让输入增大,从而使得水缸的水位可以大于0.8,渐渐到达目标的1.0.)这就是积分项的作用。

    微分控制算法

    换一个另外的例子,考虑刹车情况。平稳的驾驶车辆,当发现前面有红灯时,为了使得行车平稳,基本上提前几十米就放松油门并踩刹车了。当车辆离停车线非常近的时候,则使劲踩刹车,使车辆停下来。整个过程可以看做一个加入微分的控制策略。
    微分,说白了在离散情况下,就是error的差值,就是t时刻和t-1时刻error的差,即u=kd*(error(t)-error(t-1)),其中的kd是一个系数项。可以看到,在刹车过程中,因为error是越来越小的,所以这个微分控制项一定是负数,在控制中加入一个负数项,他存在的作用就是为了防止汽车由于刹车不及时而闯过了线。从常识上可以理解,越是靠近停车线,越是应该注意踩刹车,不能让车过线,所以这个微分项的作用,就可以理解为刹车,当车离停车线很近并且车速还很快时,这个微分项的绝对值(实际上是一个负数)就会很大,从而表示应该用力踩刹车才能让车停下来。
    切换到上面给水缸加水的例子,就是当发现水缸里的水快要接近1的时候,加入微分项,可以防止给水缸里的水加到超过1米的高度,说白了就是减少控制过程中的震荡。

    现在在回头看这个公式,就很清楚了
    这里写图片描述
    括号内第一项是比例项,第二项是积分项,第三项是微分项,前面仅仅是一个系数。很多情况下,仅仅需要在离散的时候使用,则控制可以化为
    这里写图片描述
    这里写图片描述
    每一项前面都有系数,这些系数都是需要实验中去尝试然后确定的,为了方便起见,将这些系数进行统一一下:
    这里写图片描述
    这样看就清晰很多了,且比例,微分,积分每个项前面都有一个系数,且离散化的公式,很适合编程实现。
    讲到这里,PID的原理和方法就说完了,剩下的就是实践了。在真正的工程实践中,最难的是如果确定三个项的系数,这就需要大量的实验以及经验来决定了。通过不断的尝试和正确的思考,就能选取合适的系数,实现优良的控制器。

    展开全文
  • PID控制详解

    万次阅读 多人点赞 2018-12-16 10:43:04
    PID控制详解 一、PID控制简介 PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性...

    PID控制详解

    一、PID控制简介

       PID( Proportional Integral Derivative)控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。

       在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节,它实际上是一种算法。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。

       从信号变换的角度而言,超前校正、滞后校正、滞后-超前校正可以总结为比例、积分、微分三种运算及其组合。

       PID调节器的适用范围:PID调节控制是一个传统控制方法,它适用于温度、压力、流量、液位等几乎所有现场,不同的现场,仅仅是PID参数应设置不同,只要参数设置得当均可以达到很好的效果。均可以达到0.1%,甚至更高的控制要求。

    PID控制的不足

      1. 在实际工业生产过程往往具有非线性、时变不确定,难以建立精确的数学模型,常规的PID控制器不能达到理想的控制效果;

      2. 在实际生产现场中,由于受到参数整定方法烦杂的困扰,常规PID控制器参数往往整定不良、效果欠佳,对运行工况的适应能力很差。

    二、PID控制器各校正环节

       任何闭环控制系统的首要任务是要稳(稳定)、快(快速)、准(准确)的响应命令。PID调整的主要工作就是如何实现这一任务。

      增大比例系数P将加快系统的响应,它的作用于输出值较快,但不能很好稳定在一个理想的数值,不良的结果是虽较能有效的克服扰动的影响,但有余差出现,过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。积分能在比例的基础上消除余差,它能对稳定后有累积误差的系统进行误差修整,减小稳态误差。微分具有超前作用,对于具有容量滞后的控制通道,引入微分参与控制,在微分项设置得当的情况下,对于提高系统的动态性能指标,有着显著效果,它可以使系统超调量减小,稳定性增加,动态误差减小。

       综上所述,P—比例控制系统的响应快速性,快速作用于输出,好比"现在"(现在就起作用,快),I—积分控制系统的准确性,消除过去的累积误差,好比"过去"(清除过去积怨,回到准确轨道),D—微分控制系统的稳定性,具有超前控制作用,好比"未来"(放眼未来,未雨绸缪,稳定才能发展)。当然这个结论也不可一概而论,只是想让初学者更加快速的理解PID的作用。

      在调整的时候,你所要做的任务就是在系统结构允许的情况下,在这三个参数之间权衡调整,达到最佳控制效果,实现稳快准的控制特点。

       比例控制可快速、及时、按比例调节偏差,提高控制灵敏度,但有静差,控制精度低。积分控制能消除偏差,提高控制精度、改善稳态性能,但易引起震荡,造成超调。微分控制是一种超前控制,能调节系统速度、减小超调量、提高稳定性,但其时间常数过大会引入干扰、系统冲击大,过小则调节周期长、效果不显著。比例、积分、微分控制相互配合,合理选择PID调节器的参数,即比例系数KP、积分时间常数τi和微分时间常数τD,可迅速、准确、平稳的消除偏差,达到良好的控制效果。

      1. 比例环节

       成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减小偏差。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。

       P参数越小比例作用越强,动态响应越快,消除误差的能力越强。但实际系统是有惯性的,控制输出变化后,实际y(t)值变化还需等待一段时间才会缓慢变化。由于实际系统是有惯性的,比例作用不宜太强,比例作用太强会引起系统振荡不稳定。P参数的大小应在以上定量计算的基础上根据系统响应情况,现场调试决定,通常将P参数由大向小调,以能达到最快响应又无超调(或无大的超调)为最佳参数。

      优点:调整系统的开环比例系数,提高系统的稳态精度,减低系统的惰性,加快响应速度。

      缺点:仅用P控制器,过大的开环比例系数不仅会使系统的超调量增大,而且会使系统稳定裕度变小,甚至不稳定。
      
      2. 积分环节

       控制器的输出与输入误差信号的积分成正比关系。主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数T,T越大,积分作用越弱,反之则越强。

      为什么要引进积分作用?

       比例作用的输出与误差的大小成正比,误差越大,输出越大,误差越小,输出越小,误差为零,输出为零。由于没有误差时输出为零,因此比例调节不可能完全消除误差,不可能使被控的PV值达到给定值。必须存在一个稳定的误差,以维持一个稳定的输出,才能使系统的PV值保持稳定。这就是通常所说的比例作用是有差调节,是有静差的,加强比例作用只能减少静差,不能消除静差(静差:即静态误差,也称稳态误差)。

       为了消除静差必须引入积分作用,积分作用可以消除静差,以使被控的y(t)值最后与给定值一致。引进积分作用的目的也就是为了消除静差,使y(t)值达到给定值,并保持一致。

       积分作用消除静差的原理是,只要有误差存在,就对误差进行积分,使输出继续增大或减小,一直到误差为零,积分停止,输出不再变化,系统的PV值保持稳定,y(t)值等于u(t)值,达到无差调节的效果。

       但由于实际系统是有惯性的,输出变化后,y(t)值不会马上变化,须等待一段时间才缓慢变化,因此积分的快慢必须与实际系统的惯性相匹配,惯性大、积分作用就应该弱,积分时间I就应该大些,反之而然。如果积分作用太强,积分输出变化过快,就会引起积分过头的现象,产生积分超调和振荡。通常I参数也是由大往小调,即积分作用由小往大调,观察系统响应以能达到快速消除误差,达到给定值,又不引起振荡为准。

       对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。PI控制器不但保持了积分控制器消除稳态误差的“记忆功能”,而且克服了单独使用积分控制消除误差时反应不灵敏的缺点。

      优点:消除稳态误差。
      
      缺点:积分控制器的加入会影响系统的稳定性,使系统的稳定裕度减小。

      3. 微分环节

       反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

      为什么要引进微分作用?

       前面已经分析过,不论比例调节作用,还是积分调节作用都是建立在产生误差后才进行调节以消除误差,都是事后调节,因此这种调节对稳态来说是无差的,对动态来说肯定是有差的,因为对于负载变化或给定值变化所产生的扰动,必须等待产生误差以后,然后再来慢慢调节予以消除。

       但一般的控制系统,不仅对稳定控制有要求,而且对动态指标也有要求,通常都要求负载变化或给定调整等引起扰动后,恢复到稳态的速度要快,因此光有比例和积分调节作用还不能完全满足要求,必须引入微分作用。比例作用和积分作用是事后调节(即发生误差后才进行调节),而微分作用则是事前预防控制,即一发现y(t)有变大或变小的趋势,马上就输出一个阻止其变化的控制信号,以防止出现过冲或超调等。
    D越大,微分作用越强,D越小,微分作用越弱。系统调试时通常把D从小往大调,具体参数由试验决定。

       如:由于给定值调整或负载扰动引起y(t)变化,比例作用和微分作用一定等到y(t)值变化后才进行调节,并且误差小时,产生的比例和积分调节作用也小,纠正误差的能力也小,误差大时,产生的比例和积分作用才增大。因为是事后调节动态指标不会很理想。而微分作用可以在产生误差之前一发现有产生误差的趋势就开始调节,是提前控制,所以及时性更好,可以最大限度地减少动态误差,使整体效果更好。但微分作用只能作为比例和积分控制的一种补充,不能起主导作用,微分作用不能太强,太强也会引起系统不稳定,产生振荡,微分作用只能在P和I调好后再由小往大调,一点一点试着加上去。

       自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势。这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。PD控制只在动态过程中才起作用,对恒定稳态情况起阻断作用。因此,微分控制在任何情况下都不能单独使用。

      优点:使系统的响应速度变快,超调减小,振荡减轻,对动态过程有“预测”作用。

       在低频段,主要是PI控制规律起作用,提高系统型别,消除或减少稳态误差;在中高频段主要是PD规律起作用,增大截止频率和相角裕度,提高响应速度。因此,控制器可以全面地提高系统的控制性能。

    三、PID控制器的参数整定

       PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定的方法很多,概括起来有两大类:

      1. 理论计算整定法

       它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。

      2. 工程整定方法

       它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。利用该方法进行 PID控制器参数的整定步骤如下:

      (1)首先预选择一个足够短的采样周期让系统工作;

      (2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;

      (3)在一定的控制度下通过公式计算得到PID控制器的参数。

      PID调试一般原则

      a.在输出不振荡时,增大比例增益P。
      b.在输出不振荡时,减小积分时间常数Ti。
      c.在输出不振荡时,增大微分时间常数Td。

      PID调试一般步骤

      a. 确定比例增益P

      确定比例增益P 时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0(具体见PID的参数设定说明),使PID为纯比例调节。输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。

      b. 确定积分时间常数Ti

      比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。

      c. 确定微分时间常数Td

      微分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

      d. 系统空载、带载联调,再对PID参数进行微调,直至满足要求。

       变速积分的基本思想是,设法改变积分项的累加速度,使其与偏差大小相对应:偏差越大,积分越慢;反之则越快,有利于提高系统品质。

    转载的地址http://blog.sciencenet.cn/blog-699887-948853.html

    大家再看看维基百科上面的PID的动图。

     

    https://zh.wikipedia.org/wiki/PID%E6%8E%A7%E5%88%B6%E5%99%A8

    维基百科上面讲的也比较清楚,结合起来看挺好。

    多谢小伙伴更正了里面的小错误,步骤C为微分时间@lubingabby

    展开全文
  • PID控制

    2020-02-15 16:29:23
    PID控制原理 模拟PID控制系统原理框图: 系统由模拟PID控制器和被控对象组成。 PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差 error(t)=rin(t)-yout(t) PID的控制规律为: kp...

    PID控制原理

    模拟PID控制系统原理框图:
    在这里插入图片描述
    系统由模拟PID控制器和被控对象组成。
    PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差

    	error(t)=rin(t)-yout(t)
    

    PID的控制规律为:
    在这里插入图片描述
    kp–比例系数,Ti–积分时间常数,TD–微分时间常数

    1. 比例环节:成比例的反映控制系统的偏差信号error(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。
    2. 积分环节:主要用于消除静差,提高系统的无误差度。积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之则越强。
    3. 微分环节:反映偏差信号的变化趋势(变化速率)并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

    对自动控制系统的基本要求:

    稳、准、快:

    1. 稳定性(P和I降低系统稳定性,D提高系统稳定性):在平衡状态下,系统受到某个干扰后,经过一段时间其被控量可以达到某一稳定状态;

    2. 准确性(P和I提高稳态精度,D无作用):系统处于稳态时,其稳态误差;

    3. 快速性(P和D提高响应速度,I降低响应速度):系统对动态响应的要求。一般由过渡时间的长短来衡量。

    P控制对系统性能的影响:

    开环增益越大,稳态误差减小(无法消除,属于有差调节)

    过渡时间缩短

    稳定程度变差

    I控制对系统性能的影响:

    消除系统稳态误差(能够消除静态误差,属于无差调节)

    稳定程度变差

    D控制对系统性能的影响:

    减小超调量

    减小调节时间(与P控制相比较而言)

    增强系统稳定性

    增加系统阻尼程度

    描述比例Kp的性能:
    比例带。比例带就是Kp的倒数:比例带越大,Kp越小,无超调,稳态误差大,调节时间长;比例带越小,Kp越大,系统会有超调,甚至发散,稳态 误差减小,调节时间缩短

    描述积分Ki的性能:
    积分时间常数Ti。与积分系数Ki也是倒数关系:积分时间常数Ti越大,积分系数Ki越小,系统稳定性增加,但是调节速度变慢;积分时间常数Ti越小, 积分系数Ki越大,系统稳定性降低,甚至振荡发散。无论增大还是减小积分时间常数Ti,被调量最后都没有静差。

    描述微分Kd的性能:
    微分时间常数Td。主要用于克服调节对象有较大的时滞。Td越大,微分作用越强,系统阻尼程度增加。

    比例P调节作用:
    系统一旦出现偏差,比例调节立即产生调节作用用以减少偏差
    比例作用大,可以加快调节,减少调节时间,减少稳态误差
    过大的比例作用,使系统的稳定性下降
    在这里插入图片描述

    积分I调节作用:
    消除稳态误差
    系统稳定性下降,动态响应变慢
    在这里插入图片描述

    微分D调节作用:
    具有预见性,能预见偏差变化趋势,有超前的控制作用,增强系统动态性能
    减少超调量,减少调节时间

    在这里插入图片描述

    展开全文
  • PID控制模糊控制神经网络控制-PID控制 模糊控制 神经网络控制.rar PID控制\模糊控制\神经网络控制 模型 有偿代做,请联系QQ 1170906655 ,中介勿扰! PID控制 模糊控制 神经网络控制.rar
  • PID控制-PID控制.rar

    2019-08-13 10:13:10
    PID控制-PID控制.rar 本文回顾了PID控制器的发展历程,重点介绍了基于专家系统、模糊控制和神经网的智能PID控制器的研究概况,并对今后的PID控制今后的发展进行了展望。也给我们对PID控制技术以及改进有所帮助。
  • PID控制器开发笔记之十二:模糊PID控制器的实现

    万次阅读 多人点赞 2018-11-10 19:14:06
    在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊PID控制器是将模糊算法与PID控制参数的自整...

    在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊PID控制器是将模糊算法与PID控制参数的自整定相结合的一种控制算法。可以说是模糊算法在PID参数整定上的应用。

    1、模糊算法的原理

    模糊算法是一种基于智能推理的算法,虽然称之为模糊算法其实并不模糊,实际上是一种逐步求精的思想。一个模糊控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的。在此我们近讨论模糊控制的几个主要问题。

    1.1、输入量的量化

    输入数据都是精确的,要实现模糊算法需要现对其实现量化。所谓量化就是通过量化函数将输入量投射到一定的数字级别,一般都是相对于0对称的数字区间。具体投射到怎样的区间根据实际情况而定,因为这会直接影响到计算的精度。

    1.2、模糊化

    模糊化是模糊算法非常重要的一步,首先确定对应各语言变量的模糊子集,然后根据量化的结果,我们就可以判断该输入所属的集合并计算出对应的隶属度。计算隶属度的方法有很多,最常用的是使用三角形隶属度函数或梯形隶属度函数等来计算获得。

    1.3、规则库

    规则库是基于控制量的模糊化而的味道的,是实现模糊推理的基础,很大程度上依赖于经验来完成。规则库的表现形式可以有多种,具体实现的形式根据我们实现的方便。

    1.4、推理机

    推理决策才是模糊控制的核心,它利用知识库中的信息和模糊运算方式,模拟人的推理决策的思想方法,在一定的输入条件下激活相应的控制规则给出适当的模糊控制输出。

    1.5、精确化

    我们通过模糊推理,得到一系列的模糊表达,需要进行解模糊操作才能得到紧缺的数据。常用的解模糊方法有:

    • 最大隶属度法——计算简单,适用于控制要求不高场合。

    • 重心法——输出更平滑,但计算难度大

    • 加权平均法——一般在工业上应用最广泛

    1.6、工程量化

    系统控制输出是一个精确的数,但不是可以直接用于对象控制的物理量,所以在最后还要按照我们的需要进行转换。比如对应PID的参数则可进行必要的转换和修正在输出给PID控制器。

    2、模糊PID算法的设计

    前面简单的描述了模糊算法的基本原理,接下来我们将讨论如何将其应用于PID控制当中。所谓模糊PID控制是以偏差e及偏差的变化ec为输入,利用模糊控制规则在线对PID参数进行调整,以满足不同的偏差e和偏差的增量ec对PID参数的不同要求。其结构图如下:

    2.1输入值的模糊化

    输入值的模糊化就是将用于计算的输入对应到标准化的数值区间,并根据量化结果和模糊化子集得到该输入对子集的隶属度。我们在使用偏差e和偏差增量ec作为输入实现控制参数调整则需要对e和ec进行模糊化。

    首先,我们确定e和ec的模糊子集,对于PID控制我们选则:负大[NB]、负中[NM]、负小[NS]、零[ZO]、正小[PS]、正中[PM]、正大[PB]等7个语言变量就能够有足够精度表达其模糊子集。所以我们定义e和ec的模糊子集均为{NB,NM,NS,ZO,PS,PM,PB}。

    确定了模糊子集,我们怎么将e和ec的具体值和模糊集对应上呢?我们需要引入量化函数。要确定量化函数,我们先引入e和ec模糊集对应的论域,定义为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}。对于任何一个物理量测量信号都有一个量程范围,我们记为Vmax和Vmin,和自然在PID调节时设定值的范围预期相同,所以偏差e的范围就是Vmin-Vmax到Vmax-Vmin的范围内,而偏差的增量范围则是其两倍。这里我们采用线性方式量化,则其函数关系为:

    利用上述的量化函数就可以将e和ec量化,我们可以采用如4舍5入的方式获取确定的模糊子集。但考虑到e和ec的变化是连续变化的,4舍5入对控制精度可能存在影响,所以我们引入隶属度来实现这一过程。

    最后我们确定e和ec在模糊子集上的隶属度。隶属度是一个介于0和1之间的值,用以描述对应一个输入属于某一个模糊自己的程度。一般我们描述成隶属度函数,可采用的隶属度函数很多,我们在次采用线性的隶属度函数,或者称为三角隶属度函数,其函数关系如下:

    如果我们量化后的结果是1,那么属于ZO的隶属度为0.5,同样属于PS的隶属度也是0.5。至此,模糊化全部完成。

    2.2、建立模糊规则表

    前面我们简述了输入的模糊化,但模糊推理才是模糊控制的根本。为了实现模糊推理首先我们要建立模糊推理的规则库或者称知识库,然后建立推理机进行推理。

    首先,我们来建立模糊规则库,在这里我们要对Kp、Ki和Kd三个参数进行调整,所以要建立这3个变量的模糊规则库。

    2.2.1、Kp模糊规则设计

    在PID控制器中,Kp值的选取决定于系统的响应速度。增大Kp能提高响应速度,减小稳态偏差;但是,Kp值过大会产生较大的超调,甚至使系统不稳定减小Kp可以减小超调,提高稳定性,但Kp过小会减慢响应速度,延长调节时间。因此,调节初期应适当取较大的Kp值以提高响应速度,而在调节中期,Kp则取较小值,以使系统具有较小的超调并保证一定的响应速度;而在调节过程后期再将Kp值调到较大值来减小静差,提高控制精度。基于上述描述我们定义Kp的模糊规则如下:

    2.2.2、Ki模糊规则设计

    在系统控制中,积分控制主要是用来消除系统的稳态偏差。由于某些原因(如饱和非线性等),积分过程有可能在调节过程的初期产生积分饱和,从而引起调节过程的较大超调。因此,在调节过程的初期,为防止积分饱和,其积分作用应当弱一些,甚至可以取零;而在调节中期,为了避免影响稳定性,其积分作用应该比较适中;最后在过程的后期,则应增强积分作用,以减小调节静差。依据以上分析,我们制定的Ki模糊规则如下:

    2.2.3、Kd模糊规则设计

    微分环节的调整主要是针对大惯性过程引入的,微分环节系数的作用在于改变系统的动态特性。系统的微分环节系数能反映信号变化的趋势,并能在偏差信号变化太大之前,在系统中引入一个有效的早期修正信号,从而加快响应速度,减少调整时间,消除振荡.最终改变系统的动态性能。因此,Kd值的选取对调节动态特性影响很大。Kd值过大,调节过程制动就会超前,致使调节时间过长;Kd值过小,调节过程制动就会落后,从而导致超调增加。根据实际过程经验,在调节初期,应加大微分作用,这样可得到较小甚至避免超调;而在中期,由于调节特性对Kd值的变化比较敏感,因此,Kd值应适当小一些并应保持固定不变;然后在调节后期,Kd值应减小,以减小被控过程的制动作用,进而补偿在调节过程初期由于Kd值较大所造成的调节过程的时间延长。依据以上分析,我们制定Kd的模糊规则如下:

    接下来,根据偏差E和偏差增量EC模糊化的结果以及规则库推理出∆Kp、∆Ki、∆Kd对应的模糊子集。由于前面我们设计的是采用隶属度函数来定义输入输出量在模糊子集的隶属度,所以推理出来的∆Kp、∆Ki、∆Kd的模糊子集通常是一个由模糊变量组成的矩阵。而输入量E和EC则是一个由模糊变量组成的向量。

    最后,我们需要明确不同的模糊变量所对应的量化数据。这个量化数据与物理量的对应则根据具体的不同对象是完全不一样的。

    2.3、解模糊处理

    对于求得的目标对象,我们还需要将其你模糊处理以使其与具体的物理量相对应。在模糊PID调解中,我们需要的是Kp,Ki和Kd,所以我们需要根据模糊推理的结果得到我们想要的Kp,Ki和Kd值。

    我们前面设计了三角隶属度函数,并采用相同的量化目标即论域{-6,6},所以在某一时刻,输入输出所处的模糊变量的隶属度是相同的,基于这一基础,我们采用重心法计算各输出量的量化值。其公式如下:

    其实因为我们采用的隶属度函数的特性,在任何方向的计算隶属度的和均为1,所以分母可以省略。于是每一个对象的计算实际上就是矩阵操作,公式如下:

    如果使用的是量化值,则还需要转为实际值,关于这一点直接使用物理量值也是没问题的,怎么处理根据实际需要确定。得到增量后,我们也可以引入系数来放大和缩小Kp,Ki和Kd变化量,具体实现公式如下:

    ,其中∆K为我们所计算得到的值,而α为系数,设定增量对最终只的影响。

    3、模糊PID算法实现

    前面我们描述了算法的全过程,接下来我们编码实现之。首先我们依然需要定义一个模糊PID控制器的结构对象。

    /*定义结构体和公用体*/
    typedef struct
    {
      float setpoint;               /*设定值*/
      float kp;                     /*比例系数*/
      float ki;                     /*积分系数*/
      float kd;                     /*微分系数*/
      float lasterror;              /*前一拍偏差*/
      float preerror;               /*前两拍偏差*/
      float deadband;               /*死区*/
      float output;                 /*输出值*/
      float result;                 /*物理量输出值*/
      float maximum;                /*输出值的上限*/
      float minimum;                /*输出值的下限*/
    
      float maxdKp;                 /*Kp增量的最大限值*/
      float mindKp;                 /*Kp增量的最小限值*/
      float qKp;                    /*Kp增量的影响系数*/
      float maxdKi;                 /*Ki增量的最大限值*/
      float mindKi;                 /*Ki增量的最小限值*/
      float qKi;                    /*Ki增量的影响系数*/
      float maxdKd;                 /*Kd增量的最大限值*/
      float mindKd;                 /*Kd增量的最小限值*/
      float qKd;                    /*Kd增量的影响系数*/
    }FUZZYPID;

    接下来,实现输入值的模糊化。我们前面已经设计了采用线性量化函数以及三角隶属度函数,所以实现就简单了。

    /*线性量化操作函数,论域{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}*/
    static void LinearQuantization(FUZZYPID *vPID,float pv,float *qValue)
    {
      float thisError;
      float deltaError;
    
      thisError=vPID->setpoint-pv;                  //计算偏差值
      deltaError=thisError-vPID->lasterror;         //计算偏差增量
    
      qValue[0]=6.0*thisError/(vPID->maximum-vPID->minimum);
      qValue[1]=3.0*deltaError/(vPID->maximum-vPID->minimum);
    }

    对于量化函数实际上可根据需要采用不同的函数,如速降曲线函数,正太分布函数以及其它一元函数等都是可以的,但对于我们在这里的实现目标使用线性函数就足够了。还有隶属度函数也是一样有多种选择,我们这里采用计算量较小的三角隶属度函数:

    /*隶属度计算函数*/
    static void CalcMembership(float *ms,float qv,int * index)
    {
      if((qv>=-NB)&&(qv<-NM))
      {
        index[0]=0;
        index[1]=1;
        ms[0]=-0.5*qv-2.0;  //y=-0.5x-2.0
        ms[1]=0.5*qv+3.0;   //y=0.5x+3.0
      }
      else if((qv>=-NM)&&(qv<-NS))
      {
        index[0]=1;
        index[1]=2;
        ms[0]=-0.5*qv-1.0;  //y=-0.5x-1.0
        ms[1]=0.5*qv+2.0;   //y=0.5x+2.0
      }
      else if((qv>=-NS)&&(qv<ZO))
      {
        index[0]=2;
        index[1]=3;
        ms[0]=-0.5*qv;      //y=-0.5x
        ms[1]=0.5*qv+1.0;   //y=0.5x+1.0
      }
      else if((qv>=ZO)&&(qv<PS))
      {
        index[0]=3;
        index[1]=4;
        ms[0]=-0.5*qv+1.0;  //y=-0.5x+1.0
        ms[1]=0.5*qv;       //y=0.5x
      }
      else if((qv>=PS)&&(qv<PM))
      {
        index[0]=4;
        index[1]=5;
        ms[0]=-0.5*qv+2.0;  //y=-0.5x+2.0
        ms[1]=0.5*qv-1.0;   //y=0.5x-1.0
      }
      else if((qv>=PM)&&(qv<=PB))
      {
        index[0]=5;
        index[1]=6;
        ms[0]=-0.5*qv+3.0;  //y=-0.5x+3.0
        ms[1]=0.5*qv-2.0;   //y=0.5x-2.0
      }
    }

    接下来,我们实现模糊推理的函数,有了前面的基础和模糊规则库,模糊计算的函数其实已经简单了。

    /*解模糊化操作,根据具体的量化函数和隶属度函数调整*/
    static void FuzzyComputation (FUZZYPID *vPID,float pv,float *deltaK)
    {
      float qValue[2]={0,0};        //偏差及其增量的量化值
      int indexE[2]={0,0};          //偏差隶属度索引
      float msE[2]={0,0};           //偏差隶属度
      int indexEC[2]={0,0};         //偏差增量隶属度索引
      float msEC[2]={0,0};          //偏差增量隶属度
      float qValueK[3];
    
      LinearQuantization(vPID,pv,qValue);
    
      CalcMembership(msE,qValue[0],indexE);
      CalcMembership(msEC,qValue[1],indexEC);
    
      qValueK[0]=msE[0]*(msEC[0]*ruleKp[indexE[0]][indexEC[0]]+msEC[1]*ruleKp[indexE[0]][indexEC[1]])
                +msE[1]*(msEC[0]*ruleKp[indexE[1]][indexEC[0]]+msEC[1]*ruleKp[indexE[1]][indexEC[1]]);
      qValueK[1]=msE[0]*(msEC[0]*ruleKi[indexE[0]][indexEC[0]]+msEC[1]*ruleKi[indexE[0]][indexEC[1]])
                +msE[1]*(msEC[0]*ruleKi[indexE[1]][indexEC[0]]+msEC[1]*ruleKi[indexE[1]][indexEC[1]]);
      qValueK[2]=msE[0]*(msEC[0]*ruleKd[indexE[0]][indexEC[0]]+msEC[1]*ruleKd[indexE[0]][indexEC[1]])
                +msE[1]*(msEC[0]*ruleKd[indexE[1]][indexEC[0]]+msEC[1]*ruleKd[indexE[1]][indexEC[1]]);
    
      deltaK[0]=LinearRealization(vPID->maxdKp,vPID->mindKp,qValueK[0]);
      deltaK[1]=LinearRealization(vPID->maxdKi,vPID->mindKi,qValueK[1]);
      deltaK[2]=LinearRealization(vPID->maxdKd,vPID->mindKd,qValueK[2]);
    }

    至此,Kp、Ki和Kd的增量已经得到,剩下的就是修正三个参数,并用于实现PID调节,与普通的增量型PID无异,不再赘述。

    4、总结

    模糊PID算法是模糊算法在PID参数整定上的应用,与纯粹的模糊控制算法是有区别的。普通的模糊控制器适用于直接推理控制器的输出,而模糊PID算法使用模糊算法修改PID参数,最终的控制器输出依然是由PID控制器来实现的。

    模糊控制本身是非常复杂且具体应用方式很多。大多是针对特定对象的专业控制器,已经脱离了PID这种通用性控制器的范畴。此外比较热门的还有模糊多变量控制器是属于先进控制系统(APC)的范畴,有机会再讨论。

    欢迎关注:

    展开全文
  • pid控制算法,pid算法介绍,从熟悉到精通pid,pid控制实际应用例程
  • PID控制算法

    2018-04-09 22:13:44
    PID控制算法 PID控制算法 PID控制算法 PID控制算法 PID控制算法
  • PID控制教程-PID控制.ppt 是mathwork官网视频截图教程,个人觉得不错。当然大家也可以去官网看视频的。
  • 自动控制系统的PID调节及PID控制知识。 介绍了关于自动控制系统的PID调节及PID控制知识的详细说明,提供控制理论工程的技术资料的下载。
  • pid控制总结

    2019-01-13 21:06:22
    pid控制总结
  • 先进PID控制及其MATLAB仿真-matlab PID控制程序.rar 各种PID控制的程序
  • PID控制概念

    2019-04-16 14:35:23
    在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
  • pid控制算法

    2018-02-04 20:29:32
    pid控制算法,超级好用,谁用谁知道。pid控制算法,超级好用,谁用谁知道。pid控制算法,超级好用,谁用谁知道
  • 如何实现PID控制

    2021-01-20 03:14:49
    在一些系统中,需要进行PID控制,如一些板卡采集系统,甚至在一些DCS和PLC的系统中有时要扩充系统的PID控制回路,而由于系统硬件和回路的限制需要在计算机上增加PID控制回路。在紫金桥系统中,实时数据库提供了PID...
  • 实用PID控制

    2017-07-25 19:54:32
    实用的PID控制
  • 数字PID控制算法数字PID控制算法数字PID控制算法
  • PID控制原理及手动调谐PID参数。 介绍了关于PID控制原理及手动调谐PID参数的详细说明,提供控制理论工程的技术资料的下载。
  • 先进PID控制MATLAB仿真

    2021-01-09 11:21:21
    先进PID控制MATLAB仿真;先进PID控制MATLAB仿真;先进PID控制MATLAB仿真;先进PID控制MATLAB仿真
  • 资源包括:两相混合步进电机数学模型、PID控制初始参数求解、PID控制、模糊PID、基于PSO的PID控制和基于BAS的PID控制的性能对比,压缩文件包括详细WORD说明文档、参考文献列表、README说明、M文件、MATLAB-Simulink...
  • 电机模糊pid控制

    2018-11-19 21:58:18
    用于串激电机的闭环控制,可以实现pid控制或模糊pid控制
  • PID口决PID控制

    2011-10-19 22:02:44
    PID口决PID口决PID控制PID口决PID控制PID口决PID控制PID口决PID控制PID口决PID控制
  • 自适应PID控制算法

    2019-01-11 14:57:30
    自适应PID控制算法
  • PID控制算法控制算法

    2010-08-01 19:59:50
    讲述PID PID控制算法控制算法PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法控制算法 PID控制算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,700
精华内容 5,480
关键字:

pid控制