C语言 PID计算的D部分

qacovj5a  于 2023-05-28  发布在  其他
关注(0)|答案(1)|浏览(188)

我正在对电机速度控制实施PID控制。在说明书中,我被告知使用以下等式来实现D部分的滤波技术。我完成了PI控制的实现,它对我来说非常好。

到目前为止,我理解的是,s代表"dx/dt",它通常对应于误差的变化率,但这里我可以把它和反馈的变化率联系起来。Td/N是用于限制所有的增益输出(希望我得到了这个权利)。现在,为了用C代码来表示这一点,我尝试了以下方法。

s = (CurrentFeedback()-Old_Feedback)*100/(MaxFeedback()); //to calculate the % change in feedback
    s = s*1000/sampleTime;      //1000 is multiplied because sampleTime is in milliseconds
    D = (Td*s)/(1+(s*Td/N));
    D = D*KP;   //Kp is multiplied as per the standard pid equation.

    Old_Feedback = CurrentFeedback();
    PID = P+I-D;

加上D的结果不是我所预测的。我只是想知道..我是否正确地实现了D部分方程?我在理解微分学的基础数学时犯了错误吗?
注:我无权更改重新计算kp、ti、td,因为它直接来自VFD。先谢谢你。抱歉英语不好。

ryevplcw

ryevplcw1#

当采样时间足够长且测量灵敏度很高时,D只会增加噪声,因为任何微小的变化都会受到D控制的攻击,最终产生可怕的涟漪。在大多数系统中,如果你能忍受较慢的控制,你就不需要D。如果你仍然想用D,那么要确保它远小于P和I。
也许你可以改变你最后的符号。

相关问题