1. 程式人生 > >PID三個引數的簡單理解

PID三個引數的簡單理解

Kp

Kp為PID中的比例引數,比例項根據當前量(Now)與設定量(Set)的差值按Kp比例放大後得到輸出的控制量,即:
Out = Kp(Set - Now)

Ki

通過比例項調節後,在當前量和設定量差距越來越小的情況下,有可能Kp調節輸出的控制量太小(考慮到外界諸如摩擦,零件磨損等影響),使得實際量到達設定量的速度過慢或實際量與設定量總是存在一定差距,此時需要使用積分項進行調節。積分項會根據之前的多次誤差的積分值,適當加大或縮小控制量輸出。

基本公式:Out(當前) = Out(上一次) + Ki(Set - Now)x dt
其中dt為系統取樣週期,一般為較小的浮點數。微控制器浮點運算慢,故可改進為:
Out(當前) = Out(上一次) + Ki(Set - Now)/F


F為取樣頻率,大於等於1,F = 1/dt

PS.由於在PID調節剛開始時,實際量與設定量差值較大(誤差較大),這一部分依舊被積分到了積分項中,可能會導致積分項輸出過大,導致超調,可以考慮設定一個誤差閥值,當誤差小於閥值時再啟用積分項。

Kd

對於慣性系統(停止施加控制量後,系統實際量會因為慣性繼續改變一段時間)通過微分項預測實際值變化趨勢,並調整控制量,可以儘量避免實際量超出設定量並加快調節速度。

基本公式:Out(當前) = Out(上一次) + Kd((Set - Now_Last) - (Set - Now))/dt
其中Now_Last為上次的實際值,dt為系統取樣週期,一般為較小的浮點數。微控制器浮點運算慢,故可改進為:
Out(當前) = Out(上一次) + Kd((Set - Now_Last) - (Set - Now))x F


F為取樣頻率,大於等於1,F = 1/dt

最終輸出

Out(最終) = Out_Kp + Out_Ki + Out_kd

結果位移

在微控制器中,浮點數運算比較慢,故引數大多設定為整數,但大多數時候,整數1都是過大的值。所以,在最終輸出控制量之前,對控制量進行位移(右移),即右移n位相當於除以2的n次方,調整這個n可以使輸出控制量在一個合理的範圍內。

參考文章地址