【问题标题】:D portion of PID calculationPID计算的D部分
【发布时间】:2016-02-20 16:41:27
【问题描述】:

我正在为电机速度控制实施 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。非常感谢提前。抱歉英语不好。

【问题讨论】:

  • 变化百分比不应该是(current-old)/old吗?为什么分母中有max
  • 好吧,我放了最大值,因为反馈的最大可能变化是它自己的 mx 反馈......
  • 我怀疑整数除法。 Ns*Td 相比有多大?如果它更大,你的下限被四舍五入为 1。如果N 小于Td,整个公式被截断为 0。
  • N 通常为 5,但在系统中有一个限制,它不会超过 10
  • @AShelly 我怀疑整数值被缩放 x100 以获得 2 个小数点的精度?像这样的缩放通常用于整数计算,例如在控制回路中。

标签: c pid derivative


【解决方案1】:

只要采样时间足够长并且测量的敏感性很高,D 只会增加噪音,因为任何微小的变化都会立即受到 D 控件的攻击,最后会产生可怕的涟漪。 在大多数系统中,如果您可以忍受较慢的控制,则不需要 D。如果您仍想使用 D,请确保它远小于 P 和 I。

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

【讨论】:

  • 大多数情况下 D 将保持关闭状态。但如果用户激活它,系统应该有足够的能力处理它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
相关资源
最近更新 更多