一:位式控制:
位式控制算法输出信号一般只有高低两种状态。
算法输出信号out的依据 PV < SP => H; PV >= SP => L
对于系统惯性,会导致系统震荡
- PID算法 (基于位式控制,做了很多优化)
SP: Set Point
PV: Process Value
- PID算法分析:
采样的温度系列: X, X, X, ......, X, X, X
1). 当前偏差: E = SP - X
>0: 当前未达标; =0; 正好达标; <0: 当前超标
P= K * E + Out ---比例控制 (只考虑现在偏差,偏差越大,输出PWM越大)
因为如果 E 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。)
2). 历史的偏差系列: E, E, E, ......, E, E, E
S = E+ E + E+ ...... + E + E + E
>0: 表示过去这段时间,大多数情况下未达标; =0: 总体可以; <0: 表示过去这段时间,大多数情况下超标;
I = K * S + Out ---积分算法控制(只考虑历史偏差,缺点很大)
因为如果 E 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。)
3). 最近两次的偏差相减:
D = E - E ---偏差变化率,变化趋势
D = K * D + Out ---微分算法控制(只考最近两次的变化率,预测下一次的走势(可以适当通过系数增大变化率,这样可以提前控制未来的变化))
>0: 表示偏差有增大趋势; =0: 表示偏差趋势没有改变; <0: 表示偏差有减小趋势;
因为如果 E 为0表述没有PWM输出了,为了维持系统温度, 需要有一个维持的默认常数输出值Out这样可以保证系统能温度在目标温度SP (根据不同系统,调试得到具体值。)
二:PID算法的数学模型:
PID = P + I + D
= (K * E + Out) + (K * S + Out) + (K * D + Out)
= K * ( E + S + D) + Out
S 的处理:
S = * E * T
T: 采样周期(PID计算周期)
T : 积分常数(积分时间)越大影响越弱 (不能太大也不能太小)
第一次达到目标温度SP之前,会产生错误,导致超调,过冲。为了避免超调, 可以做积分分离处理,可以在第一次达到目标温度SP之前,可以设置T为一个很大的值,把 S 忽略掉。
积分项一般是在积分项在比例项失效时再起作用,用历史经验继续来控制。
两个关键因素的选择:T 和 T
D 的处理:
D = T * (( E - E ) / T)
T: 微分常数
三:位置式PID 算法表达式:
OUT = (K * E) + (K * T/T * E) + ( K * T/T * ( E - E )) + OUT
四: K K 和 K的关系:
K
K = K * T/T
K = K * T/T
五:增量式PID (输出是一个增量,计算出控制量的增加值):
= OUT - OUT
OUT = (K * E) + (K * T/T * E) + ( K * T/T * ( E - E )) + Out
OUT = (K * E) + (K * T/T * E) + ( K * T/T * ( E - E )) + Out
= (K * ( E - E)) + K * T/T * E + K * T/T * ( E - 2 * E + E)
E : 当前本次偏差值
E :上次偏差值文章来源:https://www.toymoban.com/news/detail-647732.html
E :上上次偏差值文章来源地址https://www.toymoban.com/news/detail-647732.html
到了这里,关于PID 算法 (温控为例子)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!