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ć?

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.


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.


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,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.