Wstęp
Regulator dwustawny (dwupołożeniowy), to regulator, którego sygnał wyjściowy może przyjąć tylko dwa stany. Najczęściej stany te odpowiadają załączeniu oraz wyłączeniu przekaźnika lub innego elementu przełączającego. W przypadku tego sposobu regulacji wartość regulowana oscyluję w okół wartości zadanej. Co za tym idzie, jakość regulatora jest określana jako zdolność do niwelowania średniej wartości błędu w danym czasie. Regulatory dwupołożeniowe nadają się głównie do sterowania obiektami o niskiej dynamice, najczęściej są to obiekty cieplne.
Podłączenie, program PLC, Autotune
Aplikacja przedstawiona w artykule, będzie realizować funkcje regulacji temperatury wody w szklanym naczyniu. Elementy wykorzystane w aplikacji:
-Sterownik PLC S1211 z wejściem analogowym 0-10V
-Czujnik temperatury 0-10V (Wykorzystałem układ własnej konstrukcji, którego budowę przedstawiłem w poprzednim artykule Najtańszy pomiar temperatury za pomocą plc siemens s 1200)
-Grzałka zanurzeniowa jednofazowa, napięcie zasilania 230V moc 350W
-Stycznik 4xNO, cewka 24V
-Wyłącznik nadprądowy B 10A
Funkcja regulacji temperatury realizowana będzie za pomocą dostępnego w TIA Portal 17 bloku PID_Temp. Blok ten będzie wystawiał impulsy o modulowanej długości na wyjściu Q0.0 do którego podłączony będzie stycznik załączający grzałkę. Temperatura odczytywana będzie za pomocą czujnika temperatury podłączonego do wejścia analogowego AI0.
W środowisku TIA Portal V17 tworzymy nowy projekt. Następnie dodajemy nowy blok organizacyjny (OB) o nazwie HeaterPID. Event class bloku OB musi być ustawiony jako Cyclic interupt, czyli będzie on wywoływany przez cykliczne przerwania, których okres zależy od wartości czasu podanego w wierszu Cyclic time w naszym przypadku 100ms. Bloki typu PID muszą być wywoływane z bloków organizacyjnych wykonywanych cyklicznie, dodanie bloków typu PID w głównej pętli programu może spowodować nieprawidłowe działania układu regulacji jaki i samego sterownika PLC!
Następnie do bloku OB30 dodajemy funkcje PID_Temp z biblioteki Technology->PID Control, do wejścia bloku dodajemy marker NO %M400.1, który będzie aktywował nasz blok PID. Do wejścia Input podłączamy zmienną TempC, w której przechowywana jest wartość temperatury odczytywana przez czujnik, konfiguracja wejścia analogowego znajduję się w artykule opisującym budowę mojego układu pomiary temperatury (Najtańszy pomiar temperatury za pomocą plc siemens s 1200). Do wyjścia OutputHeatPWM podłączamy wyjście Q0.0, które będzie załączać nasz stycznik. Wejście setPoint określa naszą zadaną temperaturę. Następnie klikamy w ikonkę skrzynki narzędziowej, której znajduję się prawy górnym rogu naszej funkcji regulacji temperatury. Przechodzimy do wstępnej konfiguracji regulatora PID.
W zakładce Basic settings ustawiamy typ kontroli na temperaturę, wartości w stopniach Celsjusza. Możemy również wybrać sposób, w jaki zachowa się nasz regulator po restarcie CPU, ja wybrałem tryb automatyczny. Następnie zakładce Input / Output parameters, ustawiamy OutputHeat na OutputHeat_PWM. W zakładce Process value limits warto ustawić krytyczne wartości naszej wielkości sterowanej, ustawiamy wartość Min na 0 °C, a max na 100 °C. Ostatnimi bardzo ważnymi parametrami, które musimy koniecznie ustawić szczególnie podczas sterowania grzałki stycznikiem są parametry określające minimalny czas załączenia oraz wyłączenia stycznika. Wynikają one z noty katalogowych danego stycznika i dopasowane są do maksymalnej dopuszczalnej częstotliwości załączeń stycznika. W moim przypadku obie wartości ustawiłem na 10 sekund. Jeżeli wartości te były by ustawione na bardzo małą wartość np. poniżej jednej sekundy istniało by ryzyko uszkodzenia lub nawet zapłonu stycznika pod wpływem dużych prądów udarowych powstałych w wyniku szybkich przełączeń. Jeżeli w naszej aplikacji konieczne jest zastosowanie niskiego czasu minimalnego załączenia i wyłączenia (obiekty o dość wysokiej dynamice), konieczne będzie zastosowanie przekaźnika półprzewodnikowego SSR cechującego się dużo większą częstotliwością krytyczną przełączeń w danym czasie.
Kolejnym krokiem jest przygotowanie naszego obiektu regulacji, w naszym przypadku jest to słoik wypełniony wodą w którym zanurzono grzałkę i sondę temperaturową.
Po przygotowaniu obiektu załączamy bit M400.1 i uruchamiamy okno AutoTune naszego regulatora, symbolizuje je ikona śrubokręta i kombinerek na bloku PID. Po ukazaniu się okna wybieramy czas próbkowania pomiaru oraz wybór trybu strojenia fine lub pretuning (Narzędzie podpowie, który tryb wybrać dla naszych nastaw). Następnie w dolnej części okna załączamy blok PID_Temp, w kolejnym kroku w prawym górnym rogu startujemy strojenie regulatora. Aktualny status tuningu wyświetlany jest w oknie status. Proces strojenia w moim przypadku trwał około godziny, polecam ustawić temperaturę wyższą o ok 40 stopni Celsjusza od temperatury otoczenia. Przyspieszy to chłodzenie wody poniżej wartości zadanej po jej osiągnięciu, co zmniejszy okres oscylacji wokół wartości zadanej, a to z kolei skróci czas Autotuningu. Ostatnim krokiem jest zapisanie naszych parametrów regulatora z CPU do projektu.
Funkcja Autotune obliczyła dla naszego układu następujące parametry. W późniejszym czasie zachęcam do eksperymentowania ze zmianą tych parametrów manualnie i obserwowania jak nasze zmodyfikację wpływają na jakość regulacji.
Przechodzimy sterownikiem w tryb Stop, a następnie Run w celu potwierdzenia nowych parametrów. Teraz pozostało nam już tylko przetestować nasz układ. W tym celu co jakiś czas będziemy zwiększać temperaturę zadaną o 10 stopni Celsjusza i obserwować jak zmienia się w stosunku do niej wartość aktualna temperatury wody. Cenne będzie również dla nas zaobserwowanie zachowania %Q0.0 w zależności od zmian temperatury. Do przeprowadzenia tych obserwacji doskonale nada się funkcja Trace, która pozwala na sporządzanie wykresów wartości naszych zmiennych w funkcji czasu. W drzewie projektu otwieramy zakładkę Traces następnie add new Trace, do listy zmiennych wykresu dodajemy następujące zmienne:
-„AnalodData”.SetPoint temperatura zadana
-„AnalodData”.TempC temperatura aktualna
-„Tag_11” – Hmi tag wyjścia Q0.0
Po dodaniu zmiennych ustawiamy Samplig naszego wykresu, czyli co ile cykli sterownika będą próbkowane nasze zmienne, ustawiamy próbkowanie co 1500 cykli. Przy niskich wartościach próbkowania np. co jeden cykl sterownik może nie nadążać z próbkowaniem wykresu przez co nasz wykres będzie gubił wartości. Zaznaczamy jeszcze opcję Max recording duration, która zmaksymalizuję długość zapisu naszego wykresu. W następnej kolejności wysyłamy konfigurację naszego wykresu do sterownika i przechodzimy do zakładki time diagram, załączamy obserwacje wykresu, a następnie nagrywanie.
Wracam do bloku OB30 wpisujemy zadaną wartość, od której zaczniemy regulację, u nas 40 stopni Celsjusza, a następnie aktywujemy bit M400.1, który załącza nasz regulator. Przechodzimy do obserwacji wykresu. Po osiągnięciu zadanej temperatury 40 stopni Celsjusza zwiększamy wartość zadaną do 60 stopni Celsjusza, zmiana temperatury zadanej wymaga wyłączenia i ponownego załączenia regulatora (Bit M400.1). Gdy temperatura ustabilizuję się na wartości 60 stopni Celsjusza, wrzucamy kostki lodu do naczynia z wodą, aby sprawdzić jak nasz regulator radzi sobie z zakłóceniami.
Podsumowanie
Podsumowując dobranie nastaw regulatora dwupołożeniowego za pomocą funkcji autotune przyniosła zadowalające efekty. Przeregulowanie wynosiło maksymalnie 10%. Układ regulacji nadspodziewanie dobrze zniwelował zakłócenia powstałe w wyniku dodania kostek lodu do naczynia. Jakość regulacji można poprawić poprzez manualne korekty parametrów regulatora lub/oraz poprzez zastosowanie przekaźnika SSR, który pozwoli skrócić minimalny czas załączenia i wyłączenia wyjścia sterującego.
SPRAWDŹ NAGRODY I WEŹ UDZIAŁ W KONKURSIE !