我正在实施电机速度控制的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的结果不是我预测的结果。我只是想知道..did我正确地实现了D部分方程式吗?我是否在理解差异化的基本数学时犯了错误?
注意:我不能自由地改变重新计算kp,ti,td,因为它直接来自VFD。非常感谢提前。抱歉英文不好。
答案 0 :(得分:0)
每当采样时间足够高并且测量的灵敏度很高时,D只会增加噪声,因为D控制会立即攻击任何小的变化,最后会产生可怕的波动。 在大多数系统中,如果您可以使用较慢的控件,则不需要D。如果你仍想使用D,那么请确保它远小于P和I.
也许你可以改变你的最后一个符号。