PID超详细教程——PID原理+串级PID+C代码+在线仿真调参

误差计算

计算PID的第一步就是计算误差(Error):误差=目标值-反馈值,在这个例子中,误差就是小球当前位置与目标值间的距离。

接下来的运算我们都会围绕误差进行,分为三个步骤使用误差分别算出一个分力,并将三个分力一起施加在小球上。

比例环节

第一个环节是比例环节P(Proportion),这个环节产生的分力是:

F_p=k_p*Error

也就是说分力大小与误差成正比,当小球在目标左边的时候分力向右,当小球在目标右边的时候分力向左,其中k_p是比例系数。

比例环节的计算方法其实就与上面大家通过直觉得出的方法差不多,如果只有这个分力作用的话,会产生什么效果呢?

大家可能会发现这不就跟中学物理里的弹簧滑块模型是一样的嘛,力与距离成正比,很明显小球会以目标位置为中心进行左右摆动(简谐振动)(注:图中蓝色短线表示控制力):

只有比例环节时的小球运动

微分环节

那么如何让小球能够静止在目标点呢?这就要请出PID的另一个环节:微分环节D(Differential)

微分环节也会计算出一个分力,计算方法是:

F_d=k_d*\frac{\mathrm{d} Error}{\mathrm{d} t}

也就是说,这个分力与误差的变化速度有关,在目标位置不变的情况下,小球向右运动时误差变化速度为负,分力向左;反之当小球向左运动时分力向右;综合看来,微分环节产生的分力始终阻碍小球的运动。

因此如果在刚刚的基础上加入微分产生的分力,就会产生一个阻尼效果,小球会仿佛始终受到一个阻力,因此左右摆动的幅度会逐渐减小,最终收敛到目标位置上:

有比例和微分环节时的小球运动

由公式还可以看出,微分系数k_d可以影响这个“阻力”的大小,因此如果我们把系数调大一些,就可以让小球的运动收敛得更快一些:

调大kd后的小球运动

到这里,其实我们已经完成我们的目标任务了,小球可以在驱动力的作用下运动到目标位置。

积分环节

但现在,我们更希望在小球有一些外部干扰时也能实现上面的效果,比如我们在小球上加上一个水平向右的恒力,此时会发生什么呢?

恒力干扰下小球静止状态

小球在运动过程中仍然会像之前一样接近目标点,但在最终停下来时我们会发现,小球无法精确停在目标点上,而是像上图一样停在离目标点有一定距离的地方,此时控制力与干扰恒力平衡,小球静止。

稍加分析我们就能发现,此时小球静止,微分环节产生的分力为零,控制力完全由比例环节产生,且若距离更小则比例环节的输出更小,更无法平衡干扰力,因此小球无法继续向目标点接近。

此时就需要我们的第三个环节出场了:积分环节I(Integral)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值