Nie rozumiem integralnej części regulatora PID

12

Nie rozumiem integralnej części regulatora PID. Załóżmy ten pseudokod z Wikipedii:

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

Na początku całka jest zerowana. A potem w pętli z czasem integruje błąd. Kiedy dokonam (dodatniej) zmiany wartości zadanej, błąd stanie się dodatni, a całka „zje” wartości w czasie (od początku). Ale nie rozumiem, że gdy błąd ustabilizuje się ponownie do zera, integralna część nadal będzie miała pewną wartość (zintegrowane błędy w czasie) i nadal przyczyni się do wartości wyjściowej sterownika, ale nie powinna, ponieważ jeśli błąd wynosi zero, wyjście PID powinno również wynosić zero, prawda?

Czy ktoś może mi to wytłumaczyć?

użytkownik561838
źródło

Odpowiedzi:

16

Głównym celem integralnego terminu jest wyeliminowanie błędu stanu ustalonego. W normalnym przypadku wystąpi mały błąd stanu ustalonego, a całka służy głównie do wyeliminowania tego błędu. Prawdą jest jednak, że gdy błąd osiągnie wartość 0, całka nadal będzie dodatnia i spowoduje przekroczenie wartości. Następnie po przekroczeniu całka zacznie ponownie opadać. Jest to negatywny wpływ terminu integralnego. Dlatego zawsze występuje kompromis i należy dostroić regulator PID, aby upewnić się, że przekroczenie jest tak małe, jak to możliwe, i że błąd stanu ustalonego jest zminimalizowany. Tutaj pojawia się termin pochodna. Termin pochodny pomaga zminimalizować przekroczenie w systemie.

JuliusG
źródło
8
Dobrym przykładem błędu stanu ustalonego jest tarcie w złączu. Powiedzmy, że kontroler PD osiada blisko docelowego kąta stawu, ale nie może się tam dostać z powodu tarcia. Termin „ja” będzie powoli narastał i ostatecznie wygeneruje wystarczająco duży wkład, aby pokonać tarcie.
Ben
2
Innym przykładem jest stronniczość w sterowaniu. Jeśli okaże się, że w kierownicy występuje niewielkie odchylenie lub, w przypadku robotów w stylu bieżnika, jeden bieżnik obraca się nieco wolniej niż drugi, mimo że kontroler ustawił je na tę samą wartość, nastąpi odchylenie. Prawidłowo ustawiony całka poprawia to.
ViennaMike
8

Wyobraź sobie, że ustawiłeś kontroler PID na swoim ramieniu, abyś mógł trzymać przed sobą filiżankę kawy.

  • Element proporcjonalny kontrolowałby siłę ramienia w stosunku do zbyt wysokiej lub zbyt niskiej pozycji dłoni.
  • Element pochodny dostosowuje tę siłę na podstawie tego, jak szybko się poruszasz, abyś nie przekroczył swojego celu.
  • Zintegrowany element kompensowałby skutki grawitacji; bez niego kielich zatrzymałby się tam, gdzie proporcjonalna siła była równa sile grawitacji.

Wygląda na to, że część kodu, na którym utknąłeś, polega na tym, że system musi w jakiś sposób zmierzyć ciężar kawy, a jednym ze sposobów jest nagromadzenie błędu pozycji w czasie. Większość regulatorów PID ma dodatkowy termin określający rozsądne ograniczenie wielkości, jaką może stanowić integralny element.

Ian
źródło
2
+1. „jeśli błąd wynosi zero, wyjście PID również powinno wynosić zero, prawda?” Jak wyjaśnia Ian, nawet gdy filiżanka kawy znajduje się w idealnej pozycji, a błąd wynosi zero, moc wyjściowa PID musi mieć pewną siłę skierowaną do góry, aby utrzymać filiżankę w tej pozycji.
David Cary,