pid --- Kontroler Proporsional-Integral-Derivatif¶
Modul pid menyediakan kelas kontroler Proporsional-Integral-Derivatif (PID) sederhana dengan pemfilteran low-pass derivatif dan pembatasan windup integrator.
Contoh:
from pid import PID
pid1 = PID(p=0.07, i=0, imax=90)
while True:
error = 50 # error should be calculated as: target - measure
output = pid1.get_pid(error, 1)
# control value with output
class PID¶
- class pid.PID(p: float = 0, i: float = 0, d: float = 0, imax: float = 0)¶
Membuat sebuah kontroler PID.
padalah gain proporsional (Kp).iadalah gain integral (Ki).dadalah gain derivatif (Kd).imaxadalah nilai maksimum absolut tempat term integrator dibatasi (batas anti-windup). Output integrator dibatasi pada rentang[-abs(imax), +abs(imax)].
Term derivatif difilter oleh filter low-pass orde pertama tetap dengan frekuensi cutoff 20 Hz.
- get_pid(error: float, scaler: float) float¶
Menghitung dan mengembalikan output kontroler PID untuk
erroryang diberikan.erroradalah error saat ini (biasanyatarget - measurement).scaleradalah faktor skala perkalian yang diterapkan pada jumlah proporsional + derivatif dan pada kenaikan integrator.
Delta waktu antara pemanggilan berturut-turut diukur secara internal menggunakan
time.ticks_ms(). Jika lebih dari 1000 ms berlalu antara pemanggilan (atau pada pemanggilan pertama), integrator direset melaluiPID.reset_I()dan delta waktu diperlakukan sebagai nol untuk langkah tersebut.Mengembalikan output PID sebagai
float.
- reset_I() None¶
Mereset status integrator. Menghapus term integral yang terakumulasi menjadi nol dan menghapus nilai derivatif yang di-cache (diatur ke
NaN) sehingga pemanggilan berikutnya kePID.get_pid()menginisialisasi ulang filter derivatif.