2016-09-28 136 views
1

我在生成具有滤波器系数的PID算法时遇到了问题。具有滤波器系数的PID框图如图所示。 enter image description hereMATLAB PID滤波器系数

我在这个链接中找到了一个算法/代码。 https://www.mathworks.com/matlabcentral/answers/63762-filter-coefficient-n-in-pid-block

enter image description here

问:为什么会这样FilterCoefficient有一个未知变量Filter_DSTATE具有FilterCoefficient的未知变量? FilterCoefficient的代码具有Filter_DSTATE的未知变量,并且Filter_DSTATE的代码具有FilterCoefficient的未知变量?

假设。它是否应该以某种价值初始化?

回答

2

如果你打开一个空白Simulink模型,并添加PID controller你会得到一个对话框后,双击

enter image description here

PID控制器的微分项被从未实现,因为一个纯粹的衍生物会对噪音非常敏感。因此,增加了截止频率。

所以,d术语将通过

  Ns 
s ---> -------- 
     s + N 

Ñ像几乎衍生物高达频率是你所提到的滤波器系数。这也使得使用积分器实现D项成为可能,避免了有噪声的微分操作。

enter image description here

+0

我需要一个答案,为什么是这样的代码?其仿佛算法是这样的: x = y;那么, y = x; 这是不可能通过软件实现的。 – mubuss

+0

@PaulJabines它在一个模拟循环中。最后两个'+ ='这不是matlab符号,但原始作者有一些其他语言记住C或Python。所以这不是平等的,而是另外的。这是为了模拟集成商的行为。所以你可以初始化任何valur – percusse

+0

啊好的。所以FILTER_DSTATE用一个值初始化。大多数是0,对吧? – mubuss