Akademia Górniczo-Hutnicza
im. Stanisława Staszica w Krakowie
Wydział Inżynierii Mechanicznej i Robotyki
Katedra Automatyzacji Procesów
Sterowanie dyskretne
Prezentacja uzyskanych wyników
w formie sprawozdania.
Opracowali (stanowisko nr 3):
Maciej Jarosz
Jakub Kleszcz
Paweł Jóźwik
Stanowisko pomiarowe
1. Komputer wraz z odpowiednim oprogramowaniem
2. Sterownik PLC FX3U-48M
3. Panel dotykowy skonfigurowany do bezpośredniej współpracy ze sterownikiem
4. Przetwornik AC/CA firmy Mitsubishi - model FX2N- 5A
Wybrane podstawowe parametry przetwornika odczytane z noty katalogowej:
5. Magnetostrykcyjny czujnik położenia silnika na prowadnicy - Micropulse AT firmy Balluff.
6. Silnik prądu stałego.
Układ regulacji z regulatorem P
Przedmiotem ćwiczenia było przeprowadzenie pomiarów mających na celu pomoc w zrozumieniu zasady działania oraz praw rządzących regulatorami zastosowanymi do opanowania silnika suwnicowego.
Po napisaniu odpowiedniego kodu w programie GX-Developer oraz czy użyciu dostępnej dzięki niemu funkcji TRACE, przeprowadzone zostało 10 różnych prób. Poniższe wykresy oraz opisy dotyczą każdego z nich włącznie z uwzględnieniem zadanych parametrów.
Następnie zamieszczamy kod programu wraz z komentarzami obrazującymi działanie naszego regulatora.
Kod programu (w raz z opisem) utworzony w GX-developer
Ustawienie czasu cyklu wstępnie na wartość 4ms, uzyskując stały czas próbkowania.
Umożliwienie zmiany czasu cyklu, poprzez przepisanie wartości rejestru D208 do rejestru specjalnego D8039
Określenie trybu przetwarzania A/C modułu FX2N-5A: Wartość 5 przesyłana jest do pamięci wewnętrznej BFM0 modułu nr 0.
Określenie trybu przetwarzania C/A modułu FX2N-5A: Wartość 6 przesyłana jest do pamięci wewnętrznej BMF1 modułu nr 0.
Odczytywanie bieżącego położenia suwnicy. Wartość z pamięci wewnętrznej BFM10 modułu nr 0 jest odczytywana i wprowadzana do D202.
Przepisanie wartości z rejestru D204 do rejestru D25
Wyznaczenie uchybu odejmując od wartości zadanej znajdującej się w rejestrze D200 wartość położenia bieżącego suwnicy znajdującej się w rejestrze D202 i wpisanie wyniku do rejestru D204
Obliczenie wartości sygnału sterującego poprzez pomnożenie wyznaczonego w poprzednim kroku uchybu i wzmocnienia(Kp) znajdującego się w rejestrze D224, w postaci Kp*10. Wzmocniona dziesięciokrotnie wartość sygnału zapisywana jest do rejestru D220.
Podzielenie wartości z rejestru D220 przez 10 w celu uzyskania właściwej wartości sygnału sterującego.
Wprowadzenie warunku obustronnych ograniczeń sygnału sterującego w celu zabezpieczenia układu przed przekroczeniem dopuszczalnych wartości wejściowych przetwornika.
Wprowadzenie funkcjonalności polegającej na konfiguracji przycisków M21 i M22 dających możliwość dynamicznej edycji wartości zadanej w rejestrze D200 o wartość skoku D206 ustawianego na panelu operatorskim.
Wartość rejestru D230, przesyłana jest do pamięci wewnętrznej BMF14 modułu nr 0.
Instrukcja zakończenia programu
Regulator P (część różniczkująca równa 0)
Czas próbkowania = 12, skok = 3000, położenie początkowe = 7000, kp = 15, limit sygnału sterującego = 5000
Pierwszy pomiar wykonany został dla wzmocnienia Kp=15. W celu poprawy, jakości pomiaru, ustawiamy skok na dużą wartość (w tym wypadku 3000). Układ działa całkiem dobrze. Po zadaniu położenia na 7000 silnik rusza. Następuje niewielkie przeregulowanie (około 500). Analizując wykresy możemy stwierdzić, iż układ wykonuje swoje zadanie w zadowalającym stopniu, regulując się w ciągu 3 sekund Uchyb wynosi, około 200, co jest dopuszczalne, jeżeli pracujemy w warunkach, gdzie nie jest konieczna duża precyzyjność i dokładność.
Czas próbkowania = 12, skok = 2000, położenie początkowe = 7000, kp = 15, limit sygnału sterującego = 5000
Następnie wykonujemy pomiar również dla Kp=15, jednak zmniejszamy wielkość skoku do 2000. Czas regulacji jest niemalże identyczny. Podobnie jest z wartością uchybu. Nieznaczna zmiana skoku nie wpływa, zatem znacząco, na jakość regulacji badanego przez nas układu.
Czas próbkowania = 12, skok = 1000, położenie początkowe = 6300, kp=30, limit sygnału sterującego = 10000
W kolenym pomiarze zwiększamy wzmocnienie do wartości Kp=30, gdyż naszym zadaniem jest znalezienie Kp=Kr. Po zwiększeniu dwukrotnie Kp można zauważyć znaczacy wzrost czasu regulacji układu. Terazwynosi on dla naszego układu układu 5 sekund. Możemy również zauważyć że w raz ze wzrostem czasu regulacji zyskujemy również znacznie na dokłądności uzyskując mniejszy uchyb, który w tym przypadku biski jest zeru. W porównaniu z poprzednimi pomiarami różnica jest znacząca.
Czas próbkowania = 12, skok = 1000, położenie początkowe = 6300, kp=50, limit sygnału sterującego = 10000
Po kolejnej zwiększeniu naszego wzmocnienia tym razem do wartości Kp=50 obserwujemy oscylacje niegasnące. Nasz układ nigdy się nie reguluje, co oznacza, że osiągnęliśmy wzmocnienie krytyczne dla badanego przez nas układu. Jest to dla nas bardzo cenna informacja gdyż przy jej pomocy możemy wyznaczyć wielkość nastaw z użyciem metody Zieglera-Nicholsa.
Czas próbkowania= 12, skok = 1000, położenie początkowe = 6300, kp=25, limit sygnału sterującego = 10000
Po znalezieniu wzmocnienia krytycznego zbadaliśmy jak zachowuje się układ, gdy Kp=0.5Kr (Kryterium doboru nastaw Zieglera-Nicholsa). Wyniki pomiaru dla Kp=0,5Kr, czyli w naszym przypadku równego 25, są zadowalające. Czas potrzebny na regulację układu to tylko 2 sekundy, czyli najkrócej z przeprowadzonych dotychczas pomiarów. Również uchyb jest bliski zeru. Kryterium Zieglera-Nicholsa nie jest znane ze zbyt dużej dokładności, jednak w tym przypadku okazuje się być bardzo precyzyjne. Po wyregulowaniu położenie nie przekracza położenia zadanego.
Czas próbkowania = 12, skok = 1000, położenie początkowe = 4000, kp = 15, limit sygnału sterującego = 5000
Po odnalezieniu wartości wzmocnienia krytycznego oraz próby z połową jego wartości kolejna próba miała się opierać na znalezieniu wartości wzmocnienia, dla którego nie dochodzi do przekroczenia położenia zadanego. Po przedyskutowaniu sposobów rozwiązania tego problemu zdecydowaliśmy, że spróbujemy osiągnać zamierzony efekt poprzez zmianie ograniczenia sygnału sterującego. Odpowiedni rezultat uzyskaliśmy dopiero przy zmianie tej wartości, aż o połowę.Jak widać na załączonych wykresach wprowadzenie ograniczenia sygnalu sterującego wpłynęło korzystnie przeregulowanie układu. Sam uchyb sygnału także uległ zmniejszeniu, niemniej w dalszym ciągu nie uzyskaliśmy zadowalającego rezultatu. Czas po jakim sygnał sterujący ulega ustabilizowaniu jest wielokrotnie krótszy i stabilizuje się w okolicach 200.
Czas próbkowania = 12, skok = 500, położenie początkowe = 7000, kp = 15, limit sygnału sterującego = 10000
Kolejna próba zakładała zobaczenie wyniku podobnej operacji jak w poprzednim przykładzie jednak wychodząc z sytuacji przedstawionej w przykładzie 5, Zmianie uległ tylko i wyłącznie skok o połowę swojej wartości.
Wynik operacji jest prosty do przewidzenia. Doszło do zmniejszenia przeregulowania oraz uchybu sygnału. Podobnie jak poprzednio czas, po którym sygnał sterujący ulega stabilizacji jest o wiele krótszy niż w przykładzie 5 a wartość sygnału sterującego zbliżyła się po ustabilizowaniu układu do 0.
Czas próbkowania = 12, skok = 300, położenie zadane = 5128, kp = 30, limit sygnału sterującego = 1000
Celem ostatnich trzech przeprowadzonych przez nas prób była obserwacja zachowania się całego układu w momencie, kiedy skok jest na tyle mały, że teoretycznie układ nie powinien się nawet poruszyć.
Najciekawszym jest pierwszy przypadek, ponieważ przy skoku 300 układ, mimo wszystko próbuje się poruszyć. Dochodzi do zmiany położenia, jednak uchyb w tym przypadku wynosi, aż 250, a samo przemieszczenie wynosi znikome 50. Przyjęliśmy tę wartość za graniczą, w czasie, której możemy jeszcze naocznie zobaczyć jakąkolwiek jego reakcję. Sygnał sterujący przeciwnie niż w poprzednich przykładach nie ustala się na wartości zero a około wartości 450 i pozostaje na niej cały czas.
Czas próbkowania = 12, skok = 20, położenie początkowe = 3528, kp = 10, limit sygnału sterującego = 10000
Po ustaleniu wartości, dla której układ jeszcze się przemieszcza, uznaliśmy, że poza drastycznym zmniejszeniem skoku(z góry wiemy jak zareaguje układ) warto będzie także nieco zmniejszyć wzmocnienie. W tym przypadku, jak się spodziewaliśmy układ nawet nie drgnął, nie udało nam się naocznie zaobserwować jakiejkolwiek zmiany położenia jednak słychać było przez moment pracujący układ, przez co można domyślać się, że doszło do przemieszczenia. Sygnał sterujący podobnie jak w przypadku poprzednim zachowuje się bardzo nietypowo, ponieważ ustala się dla wartości ujemnej. Wykres przemieszczenia również wygląda nietypowo, ponieważ wydaje się, że układ, pomimo, iż w rzeczywistości doznał prawie żadnej zmiany położenia, tutaj jego przeregulowanie wynosi około 500.
Czas próbkowania = 12, skok = 5, położenie początkowe = 3463, kp = 10, limit sygnału sterującego = 10000
W tym pomiarze przyjęliśmy wartość skoku iście ekstremalną mającą na celu wyeliminowanie błędu programu w poprzedniej próbie. Jak się okazuje, niemożliwa do uzasadnienia wartość przeregulowania nie jest pomyłką. Tak samo można się odnieść do wartości sygnału sterującego. Jedynym sensowym wnioskiem nasuwającym się na myśl, jest to, że poniżej pewnych wartości zarówno skoku jak i wzmocnienia układ nie powinien być użytkowany, ponieważ ocena jego pracy oraz zdiagnozowanie błędów będzie wyjątkowo trudne.
Po wykonaniu 10 pomiarów na następnych zajęciach w trakcie testowania programu zauważyliśmy niespodziewane zachowanie układu, które zarejestrowaliśmy na dwóch kolejnych pomiarach.
Czas próbkowania = 12, skok = 2000, położenie początkowe = 4061, kp = 22, limit sygnału sterującego = 10000 pz=4100
Powyższe wykresy przedstawiają sygnał sterujący oraz położenie bieżące dla silnika poruszającego się na prowadnicy w prawo. Ruch był wykonywany płynnie nie zauważyliśmy żadnych zakłóceń.12. Czas próbkowania = 12, skok = 2000, położenie początkowe = 6143, kp = 22, limit sygnału sterującego = 10000 pz=6100
Powyższe wykresy przedstawiają sygnał sterujący i położenie bieżące w trakcie ruchu silnika w lewo na prowadnicy w funkcji czasu. Możemy zauważyć wystąpienie oscylacji. Układ nie potrafił uzyskać położenia zadanego. W trakcie wykonywania pomiaru słychać było zgrzyt pomiędzy elementami układu. Spowodowane mogło to być szumami generowanymi przez analogowe elementy stanowiska, jak i zmęczeniem dość mocno eksploatowanego układu mechanicznego. Na podstawie powyższych eksperymentów możemy zauważyć, iż badany przez nas układ jest mocno nieliniowy. Nie możemy również wykluczyć, iż w trakcie ruchu w prawą stronę wystąpiły oscylacje jednak były one na tyle małe, że nie wpłynęły zauważalnie na działanie samego układu.
III. Regulator PD
Kolejnym krokiem w celu poprawienia parametrów regulacji naszego układu było dodanie części różniczkującej oraz określenie parametrów, przy których układ zachowuje się najlepiej. W celu uwiarygodnienia naszych pomiarów przetestowaliśmy wartości od skrajnie najmniejszych do absurdalnie dużych. Poniżej zaprezentowaliśmy schemat stanowiska oraz wzory, według których został zbudowany regulator.
Sygnał sterujący jest w tym przypadku sumą składowych różniczkującej i proporcjonalnej.
Regulator PD uzyskane odpowiedzi skokowe
Obserwacje regulatora PD zostały przeprowadzone przy wzmocnieniu Kp = 22. W trakcie zajęć udało nam się wykonać 7 pomiarów dla badanego układu.
Czas próbkowania = 12 skok 2000 położenie początkowe = 4102 limit = 10000
położenie zadane = 4100 roz = 2
Pierwszy pomiar dla regulatora PD został wykonany dla małej składowej różniczkującej. Pierwsza wybrana przez nas wartość składowej różniczkującej wynosi Td/Ts = 2. Czas regulacji naszego układu nie uległ poprawieniu. Wynosi on 3 sekundy podobnie jak przy regulatorze typu P, jednak dzięki Przypomnijmy, że dla regulatora proporcjonalnego czas regulacji wynosił w najlepszym wypadku ponad 2 sekundy, a w najgorszym ponad 3 sekundy. Tutaj regulacja położenia zajmuje około 3 sekundy. Czas regulacji się nie poprawił. Warto jednak zwrócić uwagę na jeden szczegół: przy regulatorze P położenie regulowało się w podobnym czasie, jednak wciąż w niektórych przypadkach zauważaliśmy bardzo minimalne oscylacje położenia. Tutaj - całkowity brak oscylacji i po trzech sekundach mamy dokładne położenie. Uchyb praktycznie zerowy.
Czas próbkowania = 12 skok 2000 położenie początkowe = 4237 limit = 10000
położenie zadane = 4100 roz = 8
W kolejnym pomiarze zwiększyliśmy wielkość części różniczkującej do wartości Td/Ts=8. Czas regulacji uległ delikatnemu zmniejszeniu do wartości 2.9 sekundy. Na wykresie sygnału sterującego można zauważyć minimalny wzrost oscylacji oraz wzrost przeregulowania.
Czas próbkowania = 12 skok 2000 położenie początkowe = 4221 limit = 10000
położenie zadane = 4100 roz = 20
Następnie zwiększyliśmy wartość składowej różniczkującej 10 krotnie w stosunku do pierwszej próby Td/Ts=20. Analizując uzyskane wykresy możemy zauważyć, że nie nastąpiła znacząca poprawa układu regulacji. Sprawia to, że możemy sądzić, iż nasz układ regulacji nie działa prawidłowo.
Czas próbkowania = 12 skok 2000 położenie początkowe = 4081 limit = 10000
położenie zadane = 4100 roz = 80
Td/Ts osiąga wartość 80 i nareszcie zauważamy pewne zmiany. Czas regulacji położenia zmniejsza się do około 2,5 sekundy, co oznacza że regulator PD spełnia swoją funkcje, jaką jest skrócenie czasu regulacji. Zmianom uległ również sygnał sterujący, który w największym wychyleniu osiąga wartość nawet -5000.
Kolejny pomiar wykonaliśmy dla Td/Ts=80. Czas regulacji położenia zmniejsza się do około 2,5 sekundy. Na tej podstawie możemy twierdzić że regulator PD spełnia swoją funkcje, którą jest skrócenie czasu regulacji kosztem przeregulowania. Sygnał sterowania w największym wychyleniu osiągnął wartość -5000.
Czas próbkowania = 12 skok 1000 położenie początkowe = 4880 limit = 10000
położenie zadane = 4100 roz = 20
Powtarzamy pomiar dla sygnału różniczkującego Td/Ts=20. Tym razem jednak zmniejszamy skok położenia do 1000. W porównaniu do pomiaru przy skoku 2000 czas regulacji uległ poprawie.
Czas próbkowania = 12 skok 2000 położenie początkowe = brak limit = 10000
położenie zadane = 4100 roz = 600
W kolejnym pomiarze doprowadziliśmy do pomiaru stabilności. Dokonaliśmy tego poprzez zwiększenie stosunku Td/Ts. Utratę stabilności dla naszego układu uzyskaliśmy dla wartości 600. Na wykresach położenia i sygnału sterującego możemy zaobserwować oscylacje niegasnące.
Czas próbkowania = 12 skok 500 położenie początkowe =6643 limit = 10000
położenie zadane = 6100 roz = 20
W tym pomiarze zmniejszyliśmy skok do wartości 500 przy wartości Td/Ts=20. Początkowo czas regulacji dla skoku 2000 wynsił 3s. Po zmniejszeniu skoku do wartości 500 czas regulacji wzrósł dwukrotni. Układ osiągnął stabilność dopiero w 6 sekundzie.
Podsumowanie:
Celem naszego ćwiczenia było sprawdzenie czy czas regulacji układu z wykorzystaniem regulatora PD uległ poprawie względem układu z regulatorem P. Regulator PD pozwolił nam głownie wyeliminować przeregulowanie oraz oscylacje, osiągnęliśmy również niewielkie skrócenie czasu regulacji, sięgające maksymalnie około 0.5s.
Zestawienia wykresów:
Poniżej zaprezentowane zostały zbiorowe wyniki naszej pracy, mające na celu zobrazowanie wpływu części różniczkującej na poszczególne podstawowe parametry układu.
Symulacja układu inercyjnego 2 rzędu z wykorzystaniem regulatora PI w celu zaprezentowania efektu windup oraz prostego sposobu jego eliminacji.
Układ Simulink ® przedstawiający układ regulacji z regulatorem PI oraz obiektem 2 rzędu
Wykres po windup
Wykres bez windup
W celu wykonania wykresów użyliśmy programu Matlab® oraz naszych autorskich skryptów, których przykładowe kody zaprezentowane zostały poniżej.
%% Wyświetlanie trzech osobnych wykresów na podstawie danych pobranych z pliku utworzonego w czasie laboratoriów Ts=12;
t=count.*Ts;
figure;
plot(t,D220)
title('Sygnal sterujacy [Ts12 skok=2000 pol=6900 kp=22 ulim=10000 pz=6400 roz=20]');
xlabel('czas[s]');
ylabel('wartości D220')
grid;
figure;
plot(t,D202)
title('Polozenie biezace [Ts12 skok=2000 pol=6900 kp=22 ulim=10000 pz=6400 roz=20]')
xlabel('czas[s]');
ylabel('wartości D202')
grid;
figure;
plot(t,D46)
title('Wartosc czlonu rozniczkujacego [Ts12 skok=500 pol=6900 kp=22 ulim=10000 pz=6400 roz=20]');
xlabel('czas[s]');
ylabel('wartości D46')
grid;
%% Zestawienie wykresów plot(t,D46_2,'r')
title('Zestawienie odpowiedzi czlonow rozniczkujacych');
xlabel('czas[s]');
ylabel('wartości D46')
grid;
hold on
plot(t,D46_8,'b')
plot(t,D46_20,'k')
plot(t,D46_80,'g')
plot(t,D46_600,'m')
hold off
Wnioski:
Ze względu na specyficzne cechy naszego układu dodanie części różniczkującej regulatora nieznacznie wpłynęło na poprawę, jakości regulacji. Zauważalne wyniki osiągnęliśmy dopiero przy wartościach Td/Ti = 20, dla skoku 2000 i wzmocnienia równego 22.