增量式pid算法的输出量是什么量

  一开始见到PID计算公式时总是疑问为什么是那样子?为了理解那几道公式,当时将其未简化前的公式&活生生&地算了一遍,现在想来,这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一定看法后再进行演算则会理解的更快!
  首先推荐白志刚的《由入门到精通&吃透PID&2.0版》看完一、二章之后,建议你先通过实践练习然后再回来看接下来的所有章节,这样你对这本书的掌握会更加牢固、节省时间。
  PID就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。实践练习中,如何把这一原理转化为程序?为什么是用那几个error进行计算?
  以下是我摘录的一段PID程序,我曾用其对智能车的速度进行闭环控制:
  P:Proportional&&比例
  I:Integrating&积分
  D:Differentiation&微分
  Pwm_value:输出Pwm暂空比的值
  Current_error:当前偏差&&last_error:上次偏差&&&prev_error:上上次偏差
  增量式PID计算公式:&
  P=Kp*(current_error﹣last_error);
  D=Kd*(current_error﹣2*last_error﹢prev_error);
  I=Ki*current_error;
  PID_add=Pwm_value+P﹢I﹢D;
一、为什么是PID_add=Pwm_value+(P﹢I﹢D)而不是PID_add=P+I+D?
如左图,有一个人前往目的地A,他用眼睛视觉传感器目测到距离目的地还有100m,即当前与目的地的偏差为100,他向双脚输出&D=100J的能量,跑呀跑,10s之后,他又目测了一次,此时距离为40m,即current_error=40,他与10s前的偏差last_error=10对比,即current_error&last_error=&60,这是个负数,他意识到自己已经比较接近目的地,可以不用跑那么快,于是输出&D=100+(&60)=40J的能量,40J的能量他刚好以4m/s的速度跑呀跑,10s之后,他发现已经到达目的点,此时current_error=0,大脑经过思考得出current_error&last_error=0&40=&40,两脚获得的能量&D=40+(&40)=0,即他已经达到目的地,无需再跑。在刚才的叙述中,可知增量式P+I+D输出的是一个增量,将该增量与调节量相加后的到的才是最终输出量,P+I+D反应的是之前的输出量是在当前的状态中是该增加还是该减少。
二、纯比例控制P=Kp*(current_error﹣last_error),怎样理解﹙current_error﹣last_error&﹚?
  PID中纯比例控制就是把被控制量的偏差乘以一个系数作为调节器的输出,在增量式PID中,反映在程序上的,我们被控制量就是error,而实际上,例如在速度控制中error=目标速度﹣当前速度,所以明确目的:我们通过控制error趋近于0,最终使得当前速度趋近于目标速度。
如右图,假如考试时有这么一种题:函数经过时间&Dt,由y1变化为y2时,问y增长的比例为多少?你很容易地得出答案:K=﹙y2-y1﹚/&Dt;
以速度控制为例,若y为error,得右图,在时间t1到t2的过程中,我们可以得到输出控制量error变化的趋势为(current_error&last_error)/&Dt。得到偏差的变化趋势后,乘以Kp使输出量与error相对变化。这个道理犹如模拟电子电路中,声音信号经过功放管放大输出的信号与输入信号相对应变化。
三、微分控制:
然而,通常情况下,我们的被控制量并非纯比例式地变化,如下图:
比例表示变化趋势,微分则表示变化趋势的变化率,映射到一个图像曲线中即为导数的变化!图3中若求曲线中x2至x1某点的斜率,当&Dt足够小时,则可近似为(y2&y1)/&Dt&,可知x3到x1导数的变化为﹛﹙y3&y2﹚&(y2&y1﹚﹜/&Dt&=﹙y3&2*y2﹢y1﹚/&Dt&。将不同时间的y1、y2、y3映射为prev_error、last_error、current_error;则error变化趋势的变化为﹛﹙current_error&last_error﹚﹣﹙last_error&prev_error﹚﹜/&Dt=﹛﹙current_error&2*last_error﹢prev_error﹚﹜/&Dt,可得微分D=Kd*(current_error﹣2*last_error﹢prev_error)。 在系统中加入微分放映系统偏差信号的变化率,能预知偏差变化的趋势,具有超前控制作用,提前处理偏差。
四、积分控制:
积分控制可以消除偏差,体现在公式中较容易理解,当前的偏差差经过系数Ki的放大后映射为输出控制量,即I=Ki*current_error。P只要前后偏差之差为0,即current_error&last_current=0,则不进行调节,D只要前后偏差变化率为0,即(current_error﹣2*last_error﹢prev_error)=0,则不进行调节。而对于积分只要偏差存在,调节就始终进行,因此积分可以消除误差度,但在在某些情况下,一定范围内的误差是允许的,而如果此时积分调节始终存在,可能会导致系统稳定性下降,如右图,此时可通过弱化积分系数Ki使系统稳定。
阅读(...) 评论()TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&位置式和增量式PID 区别_中华文本库
第3页/共3页
一般计算机控制系统的采样周期T在选定后就不再改变,所以,一旦确定了Kp、Ti、Td,只要使用前后3次测量的偏差值即可由式(3)或式(4)求出控制增量。
增量式算法优点:①算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果;②计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程;③手动—自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换。
注意:PID的数学模型就应该是位置式,单独的增量式里面那样的式子能算积分吗?显然不是,增量式的提出就是为了解决计算机运算的问题。实际的PID就应该是位置式,如果你的执行机构硬件不具备累加功能,就得用软件把增量式累加上前一次的控制值再送执行机构控制。譬如,电机的调速。PWM1(这次的控制)=PWM0(上一次的控制量)+ ⊿PWM(增量)。
第3页/共3页
寻找更多 ""后使用快捷导航没有帐号?
只需一步,快速开始
扫一扫,访问微社区
查看: 4439|回复: 13
增量式PID的输出量是什么量?
主题帖子精华
注册会员, 积分 78, 距离下一级还需 122 积分
注册会员, 积分 78, 距离下一级还需 122 积分
在线时间4 小时
毕业学校广东工业大学
如题。&&我用的增量式PID用于小车的速度控制。目标速度是10米每秒吧假设,而实际的速度是9米每秒,如增量式PID输出结果为一个数值X,那么对于这个X的理解下面两个哪个才对?
1)这个X是一个速度的增量Δ,Δ与实际速度叠加,把得道的值输出到电机。(忽略单位转换等等)
2)这个X是速度控制的最终值,即直接把X转换成转速速出到电机。& && && && &(忽略单位转换等等)
主题帖子精华
金牌会员, 积分 1921, 距离下一级还需 1079 积分
金牌会员, 积分 1921, 距离下一级还需 1079 积分
在线时间110 小时
毕业学校本科
控制器(就是你运行在单片机上的程序)输出的是控制量
是加载在电机上的电压
把这个电压加到9m/s的电机上
最终它会变成10m/s
主题帖子精华
注册会员, 积分 78, 距离下一级还需 122 积分
注册会员, 积分 78, 距离下一级还需 122 积分
在线时间4 小时
毕业学校广东工业大学
灰原哥哥 发表于
控制器(就是你运行在单片机上的程序)输出的是控制量
是加载在电机上的电压
把这个电压加到9m/s的电机上 ...
我知道输出的是控制量.&&你就和我说是1)还是2)得了.
主题帖子精华
注册会员, 积分 78, 距离下一级还需 122 积分
注册会员, 积分 78, 距离下一级还需 122 积分
在线时间4 小时
毕业学校广东工业大学
灰原哥哥 发表于
控制器(就是你运行在单片机上的程序)输出的是控制量
是加载在电机上的电压
把这个电压加到9m/s的电机上 ...
我没有在问PID控制的原理,原理我是懂得。我的疑问是: PID输出的值是额外的调整值,还是说是最终的结果。&&打个比方,我现在输出到电机的PWM占空比是50%,实际速度是9,但是比我的设定速度10要小。&&然后PID得到一个值X,把X同样也转换成PWM占空比的形式,那么现在我应该输出到电机的PWM占空比是X,还是X+50%& &
主题帖子精华
金牌会员, 积分 2295, 距离下一级还需 705 积分
金牌会员, 积分 2295, 距离下一级还需 705 积分
在线时间278 小时
Blank.Lee 发表于
我没有在问PID控制的原理,原理我是懂得。我的疑问是: PID输出的值是额外的调整值,还是说是最终的结果。&&...
应该是50%+x,因为pid的作用就是将你的即时速度稳定在期望速度附近
主题帖子精华
金牌会员, 积分 1921, 距离下一级还需 1079 积分
金牌会员, 积分 1921, 距离下一级还需 1079 积分
在线时间110 小时
毕业学校本科
Blank.Lee 发表于
我没有在问PID控制的原理,原理我是懂得。我的疑问是: PID输出的值是额外的调整值,还是说是最终的结果。&&...
主题帖子精华
注册会员, 积分 78, 距离下一级还需 122 积分
注册会员, 积分 78, 距离下一级还需 122 积分
在线时间4 小时
毕业学校广东工业大学
灰原哥哥 发表于
虽然你没搞懂我在问什么. 不过还是谢谢了
主题帖子精华
注册会员, 积分 78, 距离下一级还需 122 积分
注册会员, 积分 78, 距离下一级还需 122 积分
在线时间4 小时
毕业学校广东工业大学
奔跑追梦 发表于
应该是50%+x,因为pid的作用就是将你的即时速度稳定在期望速度附近
嗯 谢谢啦!!
主题帖子精华
注册会员, 积分 62, 距离下一级还需 138 积分
注册会员, 积分 62, 距离下一级还需 138 积分
在线时间5 小时
叫增量了,就是在原来基础上增加或者减少。所以得选 第一 (1)
主题帖子精华
高级会员, 积分 995, 距离下一级还需 5 积分
高级会员, 积分 995, 距离下一级还需 5 积分
在线时间133 小时
毕业学校理工学院
恩,是第一个;如果是位置应该是第二个;《计算机控制技术》说的很清楚。
站长推荐 /1
智能车制作四轮类
智能车制作直立类
智能车制作追逐类
智能车制作电磁节能组
智能车制作双车对抗组
智能车制作四旋翼组
Powered by随笔- 123&
&&&&&&&&&&&
位置式PID与增量式PID算法
PID控制是一个二阶线性控制器
定义:通过调整比例、积分和微分三项参数,使得大多数的工业控制系统获得良好的闭环控制性能。
a. 技术成熟
b. 易被人们熟悉和掌握
c. 不需要建立数学模型
d. 控制效果好
通常依据控制器输出与执行机构的对应关系,将基本数字PID算法分为位置式PID和增量式PID两种。
位置式PID控制算法
基本PID控制器的理想算式为
u(t)——控制器(也称调节器)的输出;
e(t)——控制器的输入(常常是设定值与被控量之差,即e(t)=r(t)-c(t));
Kp——控制器的比例放大系数;
Ti ——控制器的积分时间;
Td——控制器的微分时间。
设u(k)为第k次采样时刻控制器的输出值,可得离散的PID算式
由于计算机的输出u(k)直接控制执行机构(如阀门),u(k)的值与执行机构的位置(如阀门开
度)一一对应,所以通常称式(2)为位置式PID控制算法。
位置式PID控制算法的缺点:当前采样时刻的输出与过去的各个状态有关,计算时要对e(k)进
行累加,运算量大;而且控制器的输出u(k)对应的是执行机构的实际位置,如果计算机出现故
障,u(k)的大幅度变化会引起执行机构位置的大幅度变化。
增量式PID控制算法
增量式PID是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的实际位置,因此要求执行机构必须具有对控制量增量的累积功能,才能完成对被控对象的控制操作。执行机构的累积功能可以采用硬件的方法实现;也可以采用软件来实现,如利用算式 u(k)=u(k-1)+Δu(k)程序化来完成。
由式(2)可得增量式PID控制算式
式中 Δe(k)=e(k)-e(k-1)
进一步可以改写成
式中 、 、
一般计算机控制系统的采样周期T在选定后就不再改变,所以,一旦确定了Kp、Ti、Td,只要使用前后3次测量的偏差值即可由式(3)或式(4)求出控制增量。
增量式算法优点:①算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果;②计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程;③手动—自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换。
阅读(...) 评论()}

我要回帖

更多关于 位置式pid和增量式pid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信