Regulacja PID – w teorii i praktyce
| TechnikaRegulacja PID to najpopularniejsza technika sterowania układami ze sprzężeniem zwrotnym. Metoda ta upowszechniła się i jest ceniona za skuteczność oraz łatwość realizacji. W artykule rozszyfrowujemy skrót PID, analizując rolę poszczególnych członów regulatorów tego typu oraz przedstawiamy przykład ich implementacji.
Na wstępie warto przypomnieć teorię i podstawowe terminy używane do opisu układów regulacji ze sprzężeniem zwrotnym. Takimi są: zmienne procesowe i wartość zadana. Zwykle w systemie sterowania zmienną procesową jest parametr, który należy kontrolować. Przykładami takich są: przepływ, temperatura, ciśnienie. Zmienne procesowe są mierzone przez czujniki i stanowią w systemie regulacji informację zwrotną. Wartość zadana z kolei to wartość docelowa zmiennej procesowej, osiągnięcie której jest celem systemu sterowania. Przykład to konkretna wartość temperatury, do której należy podgrzać wodę w kotle.
Jak się wyznacza uchyb?
Aktualna wartość zmiennych procesowych w układach regulacji ze sprzężeniem zwrotnym jest porównywana z wartością zadaną. Różnica między nimi stanowi błąd (uchyb). Jest on wielkością sterującą regulatorem – na jej podstawie algorytm w nim zaimplementowany wyznacza nastawy elementu wykonawczego. Przykładowo obliczana jest wymagana moc wyjściowa kotła, której osiągnięcie zniweluje różnicę pomiędzy temperaturą wody w nim podgrzewanej a wartością zadaną tej wielkości. W układach regulacji pracujących w pętli sprzężenia zwrotnego odczyt danych pomiarowych, porównanie wartości zmiennych procesowych z zadanymi i aktualizowanie nastaw elementu wykonawczego odbywają się w sposób ciągły.
Warto dodać, że na zmienne procesowe wpływają nie tylko elementy wykonawcze, ale także różnego typu zaburzenia, które występują w urządzeniach i instalacjach będących obiektami regulacji. Za takie można uznać na przykład zimną wodę, która jest dolewana do kotła. W efektywnym systemie sterowania wpływ tego typu zaburzeń na zmienne procesowe jest kompensowany.
Podsumowując, układ regulacji powinien śledzić zmiany wartości zadanej i mieć jak najlepsze parametry odpowiedzi na jej skokową zmianę. Musi również w stanie ustalonym utrzymywać wartość zmiennej procesowej jak najbliżej tej zadanej. Cele te realizuje się na różne sposoby, z różną skutecznością.
Jaka jest rola członu P?
Układem regulacji ze sprzężeniem zwrotnym najłatwiejszym w implementacji jest sterowanie włącz-wyłącz. Jednocześnie niestety reaguje on najwolniej, gdyż ignoruje wielkość, szybkość zmian sygnału błędu oraz czas trwania rozregulowania. Efektywniejsze sterowanie zapewnia regulator proporcjonalny, będący jednym z członów (proportional, P) regulatorów PID.
W członie proporcjonalnym pod uwagę brana jest tylko różnica między wartością zadaną a zmienną procesową. Jego parametr, wzmocnienie (Kp), określa stosunek odpowiedzi wyjściowej do sygnału błędu. Typowo zwiększenie wzmocnienia zwiększa szybkość odpowiedzi układu sterowania. Może temu niestety również towarzyszyć przeregulowanie, czyli znaczące przekroczenie przez zmienną procesową wartości zadanej. Jeżeli Kp jest dalej zwiększane, zwykle układ nie stabilizuje się już szybciej niż przy niższym wzmocnieniu, ale występuje więcej przeregulowań. W końcu, kiedy Kp będzie za duże, zmienna procesowa zacznie oscylować względem wartości zadanej. Wtedy, jeżeli wzmocnienie będzie wciąż zwiększane, oscylacje staną się jeszcze większe, system stanie się niestabilny, a nawet może ulec kompletnemu rozregulowaniu.
Człon całkujący a człon różniczkujący
Człon całkujący (integral, I) służy do zwiększenia długoterminowej precyzji pętli sterowania. Sumuje on uchyb w czasie, dzięki czemu nawet minimalny błąd powoduje powolną zmianę tej składowej. Oznacza to, że sygnał sterujący będzie stopniowo wzmacniany lub osłabiany, dopóki uchyb ma wartość niezerową. W rezultacie w stanie ustalonym błąd jest zniwelowany. Człon całkujący jest prawie zawsze używany w połączeniu ze sterowaniem proporcjonalnym, które zapewnia lepszą dynamikę reakcji.
Człon różniczkujący (derivative, D) z kolei generuje sygnał sterujący proporcjonalny do pochodnej uchybu, czyli do szybkości jego zmiany. Jego celem jest przewidzenie oraz zniwelowanie błędu. Zwiększenie parametru Td tego członu powoduje, że układ sterowania silniej reaguje na zmiany uchybu i zwiększa się szybkość ogólnej odpowiedzi układu sterowania. W większości systemów sterowania ustawia się jednak bardzo krótki czas różniczkowania Td ze względu na wrażliwość tego członu na szum w sygnale pomiarowym zmiennej procesowej. Generalnie bowiem, jeżeli sygnał sprzężenia zwrotnego czujnika jest zaszumiony lub gdy szybkość pętli sterowania jest za mała, człon różniczkujący może się przyczynić do niestabilności układu sterowania. Na rysunku 1 przedstawiamy schemat blokowy układu regulacji PID.
Na czym polega strojenie?
Optymalne nastawy członów regulatora proporcjonalnocałkująco- różniczkującego wyznacza się w procesie jego strojenia. Korzysta się w tym zakresie z różnych metod, na przykład wyznaczając nastawy metodą prób i błędów. Podejście to jest łatwe, o ile rozumie się wkład, jaki wnoszą poszczególne parametry członów P, I oraz D.
Typowo w tej metodzie rozpoczyna się od wyzerowania członów całkującego i różniczkującego, a wzmocnienie członu proporcjonalnego stopniowo się zwiększa aż do oscylacji. Należy pamiętać, że w miarę zwiększania wzmocnienia członu proporcjonalnego regulacja będzie szybsza, lecz równocześnie łatwo jest doprowadzić do niestabilności.
Po ustawieniu wzmocnienia członu P trzeba zwiększać wkład członu całkującego, aby zmniejszyć oscylacje. Należy pamiętać jednak, że ten składnik równania regulatora opisującego algorytm PID wprawdzie zmniejsza błąd stanu ustalonego, ale też zwiększa przeregulowanie. Tutaj warto dodać, że pewne przeregulowanie jest zazwyczaj warunkiem szybkiej reakcji. Podsumowując, parametry członu całkującego są modyfikowane aż do wyzerowania błędu stanu ustalonego. Jako ostatnie dobiera się parametry członu różniczkującego tak, by zmniejszyć przeregulowanie i zapewnić stabilność układu regulacji.
Metoda prób i błędów w ustalaniu nastaw regulatora proporcjonalno- całkująco-różniczkującego najczęściej wymaga pójścia na kompromis. To zwykle oznacza, że cechy układu regulacji ważniejsze w danym zastosowaniu są uzyskiwane kosztem tych mniej ważnych.
Arduino PID Library
Algorytm regulacji PID jest skuteczny, stosunkowo prosty i dość elastyczny, co zapewnia mu szeroki zakres zastosowań i przyczynia się do jego niesłabnącej popularności. Nic dziwnego, że zainteresowała się nim również społeczność Arduino i wychodząc naprzeciw potrzebom osób, chcących w swoich projektach wdrożyć ten typ regulacji, udostępniła bibliotekę PID Library. Strona internetowa poświęcona temu projektowi znajduje się pod adresem playground.arduino.cc/ Code/ PIDLibrary/. Dalej przedstawiamy najważniejsze funkcje biblioteki Arduino PID Library.
Są to: PID(), Compute(), SetMode(), SetOutputLimits(), SetTunings(), SetSampleTime(), SetControllerDirection() i funkcje prezentacyjne. Pierwsza tworzy regulator PID powiązany z określonym wejściem, wyjściem oraz wartością zadaną, które należy podać jako jej argumenty. Funkcja Compute() implementuje algorytm PID. Jest ona wywoływana z częstotliwością określoną przez parametr SetSampleTime, który można zmienić, podając nową wartość jako argument funkcji SetSampleTime(). Trzecia funkcja określa tryb pracy regulatora PID: on albo off . Ten drugi jest domyślny. SetOutputLimits() pozwala zmienić zakres sygnału wyjściowego. Domyślnie jest to 0–255 (zakres PWM w Arduino). Funkcja SetTunings() z kolei pozwala na dostrojenie regulatora przez podanie parametrów wzmocnienia dla poszczególnych członów, czyli Kp, Ki, Kd. Ten pierwszy, w uproszczeniu, determinuje reakcję regulatora PID na aktualną wartość uchybu, następny określa ją w dłuższej perspektywie czasowej, z kolei trzeci determinuje reakcję na zmianę uchybu. Funkcja SetControllerDirection() natomiast pozwala zmienić tryb pracy regulatora z direct na reverse. Określa on sposób reakcji na wystąpienie różnicy pomiędzy wartością zadaną a zmienną procesową. Funkcje prezentacyjne: GetKp(), GetKi(), GetKd(), GetMode(), GetDirection() zwracają wartości przypisanych im parametrów.
Na stronie projektu Arduino PID Librabry zamieszczono także przykładowe kody implementujące regulator PID w przypadku m.in.: sterowania wyjściem PWM na podstawie odczytu sygnału na wejściu (Basic), sterowania przekaźnikiem (RelayOutput) oraz adaptacyjnego strojenia (AdaptiveTunings). Należy ich szukać w sekcji Examples.
Uzupełnieniem biblioteki Arduino PID Library jest PID Autotune Library. Ułatwia ona strojenie regulatora. Strona internetowa tego projektu znajduje się pod adresem playground.arduino.cc/Code/PIDAutotuneLibrary/.
Monika Jaworowska