PID三个参数的简单理解
2017-02-13 13:54
597 查看
Kp
Kp为PID中的比例参数,比例项根据当前量(Now)与设定量(Set)的差值按Kp比例放大后得到输出的控制量,即:Out = Kp(Set - Now)
Ki
通过比例项调节后,在当前量和设定量差距越来越小的情况下,有可能Kp调节输出的控制量太小(考虑到外界诸如摩擦,零件磨损等影响),使得实际量到达设定量的速度过慢或实际量与设定量总是存在一定差距,此时需要使用积分项进行调节。积分项会根据之前的多次误差的积分值,适当加大或缩小控制量输出。基本公式:Out(当前) = Out(上一次) + Ki(Set - Now)x dt
其中dt为系统采样周期,一般为较小的浮点数。单片机浮点运算慢,故可改进为:
Out(当前) = Out(上一次) + Ki(Set - Now)/F
F为采样频率,大于等于1,F = 1/dt
PS.由于在PID调节刚开始时,实际量与设定量差值较大(误差较大),这一部分依旧被积分到了积分项中,可能会导致积分项输出过大,导致超调,可以考虑设定一个误差阀值,当误差小于阀值时再启用积分项。
Kd
对于惯性系统(停止施加控制量后,系统实际量会因为惯性继续改变一段时间)通过微分项预测实际值变化趋势,并调整控制量,可以尽量避免实际量超出设定量并加快调节速度。基本公式:Out(当前) = Out(上一次) + Kd((Set - Now_Last) - (Set - Now))/dt
其中Now_Last为上次的实际值,dt为系统采样周期,一般为较小的浮点数。单片机浮点运算慢,故可改进为:
Out(当前) = Out(上一次) + Kd((Set - Now_Last) - (Set - Now))x F
F为采样频率,大于等于1,F = 1/dt
最终输出
Out(最终) = Out_Kp + Out_Ki + Out_kd结果位移
在单片机中,浮点数运算比较慢,故参数大多设定为整数,但大多数时候,整数1都是过大的值。所以,在最终输出控制量之前,对控制量进行位移(右移),即右移n位相当于除以2的n次方,调整这个n可以使输出控制量在一个合理的范围内。参考文章地址
http://www.cnblogs.com/cj695/p/3274798.html相关文章推荐
- 一个简单的排序例子理解闭包作为参数
- C语言可变参数的简单理解-计算最大值
- 深度学习超参数简单理解------>learning rate,weight decay和momentum
- 深度学习超参数简单理解------>learning rate,weight decay和momentum
- 深度学习超参数简单理解------>learning rate,weight decay和momentum
- 关于封装,继承,多态三个概念的简单理解
- 深度学习超参数简单理解 learning rate,weight decay和momentum
- 数据降维和参数降维的简单理解
- 关于java中参数传递的简单理解
- Java中参数的简单理解
- 理解except脚本几个简单参数
- java中request,application,session三个域及参数简单示例
- 关于AsyncTask<Params, Progress, Result>中三个参数的理解
- c++ 简单理解main参数
- 三个简单的案例来理解读取方式
- java参数后面 跟 三个点 含义 理解
- Image Cropper简单的参数理解
- c语言中对可变参数列表的简单理解
- 对象参数的简单应用,理解对象传参
- Log4J日志配置详解 一、Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方