Saya tidak mengerti bagian Integral dari kontroler PID

12

Saya tidak mengerti bagian integral dari kontroler PID. Mari kita asumsikan kodesemu ini dari Wikipedia:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Integral diatur ke nol di awal. Dan kemudian dalam loop itu mengintegrasikan kesalahan dari waktu ke waktu. Ketika saya membuat perubahan (positif) dalam setpoint, kesalahan akan menjadi positif dan integral akan "memakan" nilai-nilai dari waktu ke waktu (dari awal). Tapi apa yang saya tidak mengerti adalah, ketika kesalahan menstabilkan kembali ke nol, bagian integral masih akan memiliki beberapa nilai (kesalahan terintegrasi dari waktu ke waktu) dan masih akan berkontribusi pada nilai output pengontrol, tetapi seharusnya tidak, karena jika kesalahan adalah nol, output PID harus nol juga, bukan?

Adakah yang bisa menjelaskannya pada saya?

pengguna561838
sumber

Jawaban:

16

Tujuan utama dari istilah integral adalah untuk menghilangkan kesalahan kondisi tunak. Dalam kasus normal akan ada kesalahan kecil kondisi tunak dan integral terutama digunakan untuk menghilangkan kesalahan ini. Namun benar bahwa ketika kesalahan mencapai 0 integral akan tetap positif dan akan membuat Anda melampaui batas. Kemudian setelah overshoot integral akan mulai turun lagi. Ini adalah efek negatif dari istilah integral. Jadi selalu ada trade-off dan Anda harus menyetel pengontrol PID untuk memastikan bahwa overshoot sekecil mungkin dan bahwa kesalahan kondisi stabil diminimalkan. Di sinilah istilah derivatif ikut bermain. Istilah derivatif membantu meminimalkan overshoot dalam sistem.

JuliusG
sumber
8
Dan contoh yang bagus dari kesalahan kondisi tunak adalah gesekan pada sambungan. Katakanlah kontroler PD Anda mendekati sudut sendi target Anda, tetapi tidak bisa sampai di sana karena gesekan. Istilah "I" perlahan akan menumpuk dan pada akhirnya menghasilkan input yang cukup besar untuk mengatasi gesekan.
Ben
2
Contoh lain adalah bias dalam kemudi. Jika ternyata ada sedikit bias dalam kontrol kemudi, atau, untuk robot gaya tapak, satu tapak berubah sedikit lebih lambat daripada yang lain meskipun controller menyetelnya ke nilai yang sama, akan ada bias. Istilah integral, diatur dengan benar, mengoreksi untuk itu.
ViennaMike
8

Bayangkan Anda memasang pengontrol PID di lengan Anda sendiri, sehingga Anda bisa memegang secangkir kopi langsung di depan Anda.

  • Elemen proporsional akan mengontrol kekuatan lengan Anda relatif terhadap posisi tangan Anda yang terlalu tinggi atau terlalu rendah.
  • Elemen turunan akan menyesuaikan kekuatan itu berdasarkan seberapa cepat Anda sudah bergerak, sehingga Anda tidak melampaui target Anda.
  • Elemen integral akan mengkompensasi efek gravitasi; tanpa itu, cawan akan beristirahat di mana gaya proporsional menyamai gaya gravitasi.

Kedengarannya seperti bagian dari kode yang Anda tempati adalah bahwa sistem entah bagaimana harus mengukur berat kopi, dan salah satu cara untuk melakukannya adalah dengan mengakumulasi kesalahan posisi dari waktu ke waktu. Sebagian besar pengontrol PID memiliki istilah tambahan untuk menentukan batas yang masuk akal pada ukuran elemen integral.

Ian
sumber
2
+1. "Jika kesalahan adalah nol, output dari PID juga harus nol, kan?" Seperti yang dijelaskan Ian, bahkan ketika cangkir kopi berada di posisi yang sempurna dan kesalahannya nol, output dari PID perlu memiliki kekuatan ke atas untuk menahan cangkir itu di posisinya.
David Cary