我正在对电机速度控制实施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。先谢谢你。抱歉英语不好。
1条答案
按热度按时间ryevplcw1#
当采样时间足够长且测量灵敏度很高时,D只会增加噪声,因为任何微小的变化都会受到D控制的攻击,最终产生可怕的涟漪。在大多数系统中,如果你能忍受较慢的控制,你就不需要D。如果你仍然想用D,那么要确保它远小于P和I。
也许你可以改变你最后的符号。