PID算法之模糊PID

在实际的控制系统中,线性系统毕竟是少数,大部分的系统属于非线性系统,或者说是系统模型不确定的系统,如果控制精度要求较高的话,那么对于参数的整定过程是有难度的。专家 PID 和模糊 PID 就是为满足这方面的需求而设计的。专家算法和模糊算法都归属于智能算法的范畴,智能算法最大的优点就是在控制模型未知的情况下,可以对模型进行控制。这里需要注意的是,专家PID 也好,模糊 PID 也罢,绝对不是专家系统或模糊算法与 PID 控制算法的简单加和,他是专家系统或者模糊算法在 PID 控制器参数整定上的应用。也就是说,智能算法是辅助 PID 进行参数整定的手段。
如果偏差太大的话,就去除积分项,这本身就是含有经验的专家系统。专家系统、模糊算法,需要参数整定就一定要有整定的依据,也就是说什么情况下整定什么值是要有依据的,这个依据是一些逻辑的组合,只要找出其中的逻辑组合关系来,这些依据就再明显不过了。下面先说一下专家 PID 的 C 语言实现。正如前面所说,需要找到一些依据,还得从 PID 系数本身说起。
1.比例系数 Kp 的作用是加快系统的响应速度,提高系统的调节精度。Kp 越大,系统的响应速度越快,系统的调节精度越高,但是容易产生超调,甚至会使系统不稳定。Kp 取值过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,是系统静态、动态特性变差;
2.积分作用系数 Ki 的作用是消除系统的稳态误差。Ki 越大,系统的静态误差消除的越快,但是 Ki 过大,在响应过程的初期会产生积分饱和的现象,从而引起响应过程的较大超调。若 Ki 过小,将使系统静态误差难以消除,影响系统的调节精度;
3.微分系数 Kd 的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。但是 kd 过大,会使响应过程提前制动,从而延长调节时间,而且会降低系统的抗干扰性。反应系统性能的两个参数是系统误差e 和误差变化律ec,这点还是好理解的:
首先我们规定一个误差的极限值,假设为 Mmax;规定一个误差的比较大的值,假设为 Mmid;规定一个误差的较小值,假设为 Mmin;
当 abs(e)>Mmax 时,说明误差的绝对值已经很大了,不论误差变化趋势如何,都应该考虑控制器的输入应按最大(或最小)输出,以达到迅速调整误差的效果,使误差绝对值以最大的速度减小。此时,相当于实施开环控制。
当 eec>0 时,说明误差在朝向误差绝对值增大的方向变化,此时,如果abs(e)>Mmid,说明误差也较大,可考虑由控制器实施较强的控制作用,以达到扭转误差绝对值向减小的方向变化,并迅速减小误差的绝对值。此时如果abs(e)<Mmid,说明尽管误差是向绝对值增大的方向变化,但是误差绝对值本身并不是很大,可以考虑控制器实施一般的控制作用,只需要扭转误差的变化趋势,使其向误差绝对值减小的方向变化即可。
当 e
err<0 且 eerr(k-1)>0 或者 e=0 时,说明误差的绝对值向减小的方向变化,或者已经达到平衡状态,此时保持控制器输出不变即可。当 eerr<0 且 e*err(k-1)<0 时,说明误差处于极限状态。如果此时误差的绝对值较大,大于 Mmin,可考虑实施较强控制作用。如果此时误差绝对值较小,可以考虑实施较弱控制作用。
当 abs(e)<Mmin 时,说明误差绝对值很小,此时加入积分,减小静态误差。
上面的逻辑判断过程,实际上就是对于控制系统的一个专家判断过程。

在 PID 控制算法的 C 语言实现九中,文章已经对模糊 PID 的实质做了一个简要说明。本来打算等到完成毕业设计,工作稳定了再着力完成剩下的部分。鉴于网友的要求和信任,抽出时间来,对模糊 PID 做一个较为详细的论述,这里我不打算做出仿真程序了,但就基本概念和思路进行一下说明,相信有 C 语言基础的朋友可以通过这些介绍性的文字自行实现。这篇文章主要说明一下模糊算法的含义和原理。
实际上模糊算法属于智能算法,智能算法也可以叫非模型算法,也就是说,当我们对于系统的模型认识不是很深刻,或者说客观的原因导致我们无法对系统的控制模型进行深入研究的时候,智能算法常常能够起到不小的作用。这点是方便理解的,如果一个系统的模型可以轻易的获得,那么就可以根据系统的模型进行
模型分析,设计出适合系统模型的控制器。但是现实世界中,可以说所有的系统都是非线性的,是不可预测的。但这并不是说我们就无从建立控制器,因为,大部分的系统在一定的条件和范围内是可以抽象成为线性系统的。问题的关键是,当我们系统设计的范围超出了线性的范围,我们又该如何处理。显然,智能算法
是一条很不错的途径。智能算法包含了专家系统、模糊算法、遗传算法、神经网络算法等。其实这其中的任何一种算法都可以跟 PID 去做结合,而选择的关键在于,处理的实时性能不能得到满足。当我们处理器的速度足够快速时,我们可以选择更为复杂的、精度更加高的算法。但是,控制器的处理速度限制了我们算法的选择。当然,成本是限制处理器速度最根本的原因。这个道理很简单,51 单片机和 DSP 的成本肯定大不相同。专家 PID 和模糊 PID 是常用的两种 PID 选择方式。其实,模糊 PID 适应一般的控制系统是没有问题。文章接下来将说明模糊算法的一些基本常识。
模糊算法其实并不模糊。模糊算法其实也是逐次求精的过程。这里举个例子说明。我们设计一个倒立摆系统,假如摆针偏差<5°,我们说它的偏差比较“小”;
摆针偏差在 5°和 10°之间,我们说它的偏差处于“中”的状态;当摆针偏差>10°的时候,我们说它的偏差有点儿“大”了。对于“小”、“中”、“大”这样的词汇来讲,他们是精确的表述,可问题是如果摆针偏差是 3°呢,那么这是一种什么样的状态呢。我们可以用“很小”来表述它。如果是 7°呢,可以说它是“中”偏“小”。那么如果到了 80°呢,它的偏差可以说“非常大”。而我
们调节的过程实际上就是让系统的偏差由非常“大”逐渐向非常“小”过度的过程。当然,我们系统这个调节过程是快速稳定的。通过上面的说明,可以认识到,其实对于每一种状态都可以划分到大、中、小三个状态当中去,只不过他们隶属的程度不太一样,比如 6°隶属于小的程度可能是 0.3,隶属于中的程度是
0.7,隶属于大的程度是 0。这里实际上是有一个问题的,就是这个隶属的程度怎么确定?这就要求我们去设计一个隶属函数。详细内容可以查阅相关的资料,这里没有办法那么详细的说明了。http://baike.baidu.com/view/150383.htm(见附录 3)这里面有些说明。那么,知道了隶属度的问题,就可以根据目前隶
属的程度来控制电机以多大的速度和方向转动了,当然,最终的控制量肯定要落实在控制电压上。这点可以很容易的想想,我们控制的目的就是让倒立摆从隶属“大”的程度为 1 的状态,调节到隶属“小”的程度为 1 的状态。当隶属大多一些的时候,我们就加快调节的速度,当隶属小多一些的时候,我们就减慢调节的
速度,进行微调。可问题是,大、中、小的状态是汉字,怎么用数字表示,进而用程序代码表示呢?其实我们可以给大、中、小三个状态设定三个数字来表示,比如大表示用 3 表示,中用 2 表示,小用 1 表示。那么我们完全可以用0.3+20.7+3*0.0=1.7 来表示它,当然这个公式也不一定是这样的,这个公式的设计是系统模糊化和精确化的一个过程,读者也可参见相关文献理解。但就1.7 这个数字而言,可以说明,目前 6°的角度偏差处于小和中之间,但是更偏向于中。我们就可以根据这个数字来调节电机的转动速度和时间了。当然,这个数字与电机转速的对应关系,也需要根据实际情况进行设计和调节。
前面一个例子已经基本上说明了模糊算法的基本原理了。可是实际上,一个系统的限制因素常常不是一个。上面的例子中,只有偏差角度成为了系统调节的参考因素。而实际系统中,比如 PID 系统,我们需要调节的是比例、积分、微分三个环节,那么这三个环节的作用就需要我们认清,也就是说,我们需要根据超
调量、调节时间、震荡情况等信息来考虑对这三个环节调节的比重,输入量和输出量都不是单一的,可是其中必然有某种内在的逻辑联系。所以这种逻辑联系就成为我们设计工作的重点了。下一篇文章将详细分析 PID 三个变量和系统性能参数之间的联系。
这几天一直在考虑如何能够把这一节的内容说清楚,对于 PID 而言应用并没有多大难度,按照基本的算法设计思路和成熟的参数整定方法,就算是没有经过特殊训练和培训的人,也能够在较短的时间内容学会使用 PID 算法。可问题是,如何能够透彻的理解 PID 算法,从而能够根据实际的情况设计出优秀的算法呢。通过讲述公式和基本原理肯定是最能说明问题的,可是这样的话怕是犯了“专家”的错误了。对于门槛比较低的技术人员来讲,依然不能透彻理解。可是说的入耳了,能不能透彻说明也是一个问题,所以斟酌了几天,整理了一下思路才开始完成 PID 系列文章的最后一篇。我所说的最后一篇不代表 PID 的功能和发展就止步与此,仅仅是说明,透过这一些列的文章,基本上已经可以涵盖 PID 设计的要点,至于更深入的研究,就交给有需要的读者去做。上一节中大致讲述了一下模糊算法。实际上模糊算法的很多概念在上一节中并没有深入的解释。举的例子也只是为了说明模糊算法的基本含义,真正的模糊算法是不能这么设计的,当然也不会这么简单。模糊算法的核心是模糊规则,如
果模糊规则制定的出色,那么模糊算法的控制效率就高。其实这是智能算法的一般特性,规则是系统判断和处理的前提。那么就说说 PID 的规则该怎么制定。

我们知道,模糊算法的本质是对 PID 的三个参数进行智能调节。那么首先要提出的问题是如何对 PID 的参数进行调节?这个问题其实是参数整定的问题,现实当中有很多整定方法。可是我们需要从根本上了解为什么这么整定,才能知道该如何建立数学模型进行分析。那么要回答如何整定参数的问题,就需要先明白PID 参数的作用都是什么?对系统有什么影响?
我们从作用和副作用两个方面说明参数对系统的影响。
1.比例环节 Kp,作用是加快系统的响应速度,提高系统的调节精度,副作用是会导致超调;
2.积分环节 Ki,作用是消除稳态误差,副作用是导致积分饱和现象;
3.微分环节 Kd,作用是改善系统的动态性能,副作用是延长系统的调节时间。理解了上述问题,那么就可以“辩证施治,对症下药”了。比如说,如果系统
响应速度慢,我们就加大 Kp 的取值,如果超调量过大我们就减小 Kp 的取值等等。可是问题这些语言的描述该如何用数学形式表达出来呢。我们所知道的,反馈系统的实质就是系统的输出量作为反馈量与系统的输入量进行作差,从而得到系统的误差 e,那么这个误差 e 就能够反应目前系统所处的状态。误差 e 可以表明目前系统的输出状态到底偏离要求多少。而误差 e 的变化律 ec,表示误差变化的速度。这样,我们可以根据这两个量的状态来分析三个参数此时应该如何取值,假如 e 为负方向比较大,ec 也为负方向增大状态,此时比例环节要大一些,从而加快调节速度,而积分环节要小一些,甚至不加积分环节,从而防止负方向上出现饱和积分的现象。微分环节可以稍加一些,在不影响调节时间的情况下,起到改善系统动态性能的作用。

(文章是从另一个文章找到的,忘记具体是哪里,单纯分析,很有帮助)

  • 31
    点赞
  • 231
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: PID算法是一种在控制系统中常用的反馈控制算法,用于根据系统输出与期望输出之间的差异,来调整系统输入,使系统输出接近期望输出。PID算法的三个参数分别是比例系数P、积分系数I和微分系数D。 模糊PID算法是在传统PID算法的基础上引入模糊逻辑方法,用于处理非线性和模糊性控制系统。它通过模糊化输入和输出,建立模糊化规则,并根据规则进行模糊推理和解模糊化,从而实现对系统的控制。 增量式PID算法是对传统PID算法的一种改进,它将系统输出值的变化作为反馈信号,而不是直接使用输出值。通过比较当前的输出值和上一次的输出值之差,来调整系统输入。这种算法可以减少系统的抖动和震荡,提高系统的动态性能。 总之,PID算法是一种常用的控制算法,通过比例、积分和微分的组合,对控制系统进行调整。而模糊PID算法是在传统PID算法基础上引入模糊逻辑方法,用于处理非线性和模糊性系统。增量式PID算法则是一种对传统PID算法的改进,通过比较输出值的变化来调整系统输入。这些算法在工业控制系统中被广泛应用,以提高系统的稳定性和性能。 ### 回答2: PID算法是一种经典的控制算法,用于控制系统的反馈控制。PID是三个控制参数的缩写,分别是比例项(P)、积分项(I)和微分项(D)。 在PID算法中,比例项根据当前误差与设定值之间的差异进行调整。比例参数的增大会加大响应速度,但可能导致振荡或超调;比例参数的减小则会减小响应速度,但可能导致系统的静态误差。 积分项通过对误差随时间的累积进行调整,用于消除系统的静态误差。积分参数的增大可以缩小静态误差,但也增加了系统的超调和震荡的风险。 微分项通过监测误差的变化率来调整控制参数。微分参数的增大可以减小超调和提高系统的稳定性,但过大的微分参数可能导致系统的噪声放大。 模糊PID算法是在PID算法的基础上引入了模糊逻辑,用于解决传统PID算法在非线性系统控制中存在的问题。模糊PID算法通过将输入和输出模糊化,并设计一组模糊控制规则,来实现对非线性系统的精确控制。 增量式PID算法是一种改进的PID算法,通过计算当前误差与上一次误差之间的差异来替代单纯的误差值,从而减小系统的抖动和超调。增量式PID算法可以避免因比例参数和积分参数的调整而引起的系统过调。 总的来说,PID算法及其衍生算法模糊PID算法和增量式PID算法都是常用的控制算法,根据具体的控制需求选择合适的算法来实现稳定和准确的控制。 ### 回答3: PID算法是一种常用的控制算法,可用于自动控制系统中对被控对象进行控制。PID算法包括三个组成部分:比例(P)、积分(I)和微分(D)。比例控制使得控制器的输出与误差成正比,积分控制使得控制器的输出与误差之和成正比,微分控制则是控制器根据误差变化的速率来调整输出。通过合理设置三个控制参数,可以实现稳定准确的控制。 模糊PID算法是对传统PID算法的改进,它引入模糊控制的概念,通过模糊化输入输出,运用模糊集合和模糊规则来调节PID参数,并利用模糊推理的方法实现对系统的精确控制。模糊PID算法具有较好的适应性和鲁棒性,能够应对系统参数不确定性和非线性等问题,提高了控制系统的性能。 增量式PID算法是传统PID算法的一种改进,它以每个采样周期当前的误差和前一周期的误差之差作为控制器的输入,从而避免了对误差的积分操作。增量式PID算法能够减小输出控制量的抖动,在响应速度和稳定性之间取得平衡。同时,增量式PID算法也比传统PID算法更加适合于数字控制系统,能够实现较高的精度和稳定性。 总之,PID算法是一种常用的控制算法模糊PID算法是对其的改进,增量式PID算法是对传统PID算法的优化,它们都有不同的适用场景和优势,可以根据具体的控制需求选择合适的算法进行应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值