2016-09-28 134 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