解析PID算法及代码的实现_pid代码实现

(1)比例P控制
 比例控制是一种最简单的控制方式,其控制器的输出与输入信号误差成比例关系。
 比例控制考虑当前误差,误差 值和一个正值的常数KP(比例系数)相乘。

(2)积分I控制
 积分控制考虑过去误差,将过去一段时间误(差值和)乘以一个正值的常数KI。
 KI从过去的平均误差值来找到系统的输出结果和预定值的平均误差。

(3)微分D控制
 在微控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
 自动控制系统在克服误差的调节过程中可能会出现震荡甚至失稳,其原因是由于存在较大惯性组件。
 解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就是应该是零。


2.PID****控制器的参数整定(需要反复理解)

(1)稳态误差:
比例控制中,经过一定时间后误差稳定在一定值时。
仅用比例控制,会出现不同的稳态误差。
若要让受控输出为非零的数值,就需要有一个稳态误差或偏移量。
稳态误差和比例增益成正比,和受控系统本身的增益成反比。
若加入一偏执,或是加入积分控制,可以消除稳态误差

(2)一个简单的比例系统会震荡,会在再预定值的附近来回震荡,因为系统无法消除多余的纠正,通过加上累计的平均值误差值,平均系统误差值就会渐渐减少,所以最终这个PID回路系统会在设定值稳定下来

(3)积分控制会加速系统趋近设定值的过程,并且消除纯比例控制器会出现的稳态误差
 积分增益越大,趋近设定值的速度越快,不过因为积分控制器会累计过去所有的误差,可能会使输出过冲的情形。

(4)在控制器中仅引入“比例”,项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,她能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。

(5)所以有较大惯性或滞后的被控量的被控对象,**比例+微分(PD)**控制器能改善系统在调节过程中的动态特性.

(6)微分控制考虑将来误差,计算误差的一阶导数,并和一个正值的常数KD相乘
 这个导数的控制会对系统的改变做出反应,导数的结果越大(系统误差变化率大),那么控制系统就对系统的变化做出反应。

**(7)**P是最基本的,可以衍生出来很多算法P,PI ,PD

**(8)**比例系数KP越大,控制作用越强,则过渡过程越快。


3.位置式离散PID

(1)公式:

Pwm = Kp*e(K) + Ki * &e(K) + Kd[e(K) - e(K-1)]
 e(K):本次偏差
 e(K - 1): 上一次偏差
 &e(K):e(K) 以及之前的偏差的积累和,其中K为1,2

(2)通过c语言实现:位置式PID

Int Position_PID (int Encoder, int Target)
{
   Static flost Bias, Pwm, Integral_bias, Last_Bias;
   Bias = Encoder - Target;      //计算偏差
   Integral_bias += Bias;       //求出偏差的积分
   Pwm = KP * Bias + KI * Integral_bias KD * (Bias -  Last_Bias);
   Last_Bias:               //保存上一次偏差
   Return Pwm;            //输出
} 

(3)关于P,I,D三参数的主要作用,可以不完全地概况为:P用于提高响应速度I用于减小静差D用于抑制震荡

(4)如果P值过大,会出现震荡。 但是静差一般在P值较小而I值为零的时候出现的,增大P值可以一定程度上消除静差提高响应速度,但会导致系统震荡,而加入微分控制可以有效抑制震荡。

(5)加入微分控制之后,系统的震荡得到了抑制,震荡减少。 微分控制也是有弊端的,加入微分,系统的响应明显变慢了,因为引入微分控制相当于增大系统的阻尼

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值