当前位置:首页 > 物联网 > 区块链
[导读] 每个接触PID的人,都知道PID的公式吧:    然后根据这个公式,就可以编出计算output的arduino程序如下: 注:程序源码可以在原文上复制。

每个接触PID的人,都知道PID的公式吧:

  

然后根据这个公式,就可以编出计算output的arduino程序如下:

注:程序源码可以在原文上复制。

可是在上面的程序中,当PID不规则的调用时就会出现两个问题:

1.有时候定时调用,有时候又停止调用,将得不到PID的持续稳定特性。

2.需要额外对积分和微分进行数学计算,因为他们都是和时间息息相关的。

解决方法:保证PID在一个固定的的时间间隔内被调用,我通过每个周期内事先设置好的采样时间调用compute函数,PID再决定是计算还是立即返回数值。一旦我们知道PID在固定时间间隔内被调用,积分和微分的计算就能被简化。

于是我们的程序就变成了:

灰色部分是新加的语句。

在这个新的程序中,作者在29行把时间转化为秒。这样可以简化运算。同时新加入后面两个函数把PID参数转化为以秒为基准的参数。

当上面的PID程序在运行中,可能会出现微分过冲的问题。

看上面的图,因为error=Setpoint-Input,只要Setpoint发生改变,就会导致error的值发生一个突变。在微分运算里这种微分值的突变是无穷大的。

解决方法:

于是我们的程序就变成了:

可以看到我们只是用-dInput代替掉了+dError。

当我们的PID在运行的时候,这个时候改变PID的参数,会导致输出发生变化,如:

我们只是把ki的值减少一半,输出就减少了一半。为什么会这样呢?可以从下面的积分公式里找到原因:

这就解释了为什么KI没改变之前系统工作的一直很稳定。突然,你乘了一个新的KI值与之前的偏差累计总和。这样带来的变化不是我们所希望的,我们只想改变后能朝着我们希望的方向发展。

解决方法:解决的方法有很多,我在最新的Arduino PID库里使用的方法是重新调整errSum(偏差总和).KI变为原来的两倍时,把errSum变为原来的一半,虽然这个方法有点笨拙,下面有更加明智的方法。这个方法要求有基础的代数基础或者计算技巧。

把KI乘到里面,虽然看起来没什么变化,但是我们将会看到这个小变化带来了很大的不同。现在我们将error和Ki相乘。并且把乘积和保存起来,当Ki变化时,这时不会有很大的变化了,因为之前的KI的乘积和值已经存储起来了。

于是我们的程序就变成了:

这样,我们再改变参数,输出也不会发生很大的变化。

本帖最后由 对折之内 于 2015-4-13 19:17 编辑

当我们的PID在运行的时候,有时候会发生摆尾的情况。如图:

这种情况发生在PID认为它能做一些它实际上做不到的事情时。比如最大只能输出255,可是PID输出了300。原因在于PID并不知道最大的输出只能为255。所以我们在程序里给PID的输出值加一些限制。告诉PID可以输出的最大值为多少。我们的程序就变成了:

当有的时候,你不需要使用PID计算的输出值,想用自己设定的值。(比如想让输出为0),则你的程序可能会这样写:

void loop()

{

Compute();

Output=0;

}

这样的话,不管PID想输出什么,程序始终输出0。这样就会使PID变得很迷惑:“我尝试着改变output,却什么都没有发生,怎么办?我把改变的力度增大吧。”这样,当你停止使用自己设定的值作为输出,重新使用PID作为输出时。PID输出很大的值,这样系统就乱套了。

因此我们要在程序里,加一个开关,在我们使用自己设定的值时,把PID关掉,不让它进行计算。

我们的程序就变成了:

在上面的程序中,我们给PID加了一个开关,但是当我们把PID的开关打开,重新回到PID的时候,会发生下面的情况:

没错,PID的输出值会跳回成它发出的上一个输出值。并且从那个值开始来调整自己。

因此当开关重新打开时,我们需要一个初始化函数,来重新初始化一下数据,先看程序:

可以知道,当换模式的时候,会执行IniTIalize()函数,把lasTInput的值更新成现在的采样值,把ITerm的值更新成output的值,这样就避免了第一次执行PID时的跳变了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭