D部分PID计算

时间:2015-11-18 19:26:18

标签: c pid derivative

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

enter image description here

现在我所理解的是,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。非常感谢提前。抱歉英文不好。

1 个答案:

答案 0 :(得分:0)

每当采样时间足够高并且测量的灵敏度很高时,D只会增加噪声,因为D控制会立即攻击任何小的变化,最后会产生可怕的波动。 在大多数系统中,如果您可以使用较慢的控件,则不需要D。如果你仍想使用D,那么请确保它远小于P和I.

也许你可以改变你的最后一个符号。