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.
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
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 ostatnim 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.
III. Regulator PD
Kolejna część projektu obejmowała zbudowanie oraz przetestowanie działania regulatora PD za pomocą sterownika PLC. W tym celu do kodu z poprzedniej części należało dodać elementy odpowiedzialne za obliczanie części różniczkującej sygnału sterującego i zsumowanie tego sygnału z częścią proporcjonalną z poprzedniego zadania. Poniżej schemat stanowiska oraz wzór, według którego został zbudowany regulator.
Sygnał sterujący jest w tym przypadku sumą składowych różniczkującej i proporcjonalnej.
ZMIENIC PROGRAM I RESZTE POTRZEBA DZIECIACZKI I KLESZCZYKI
Poniżej opis modyfikacji wprowadzonych w kodzie programu względem poprzedniej wersji obejmującej regulator P.
Najpierw potrzebujemy zapisać wartość uchybu z poprzedniego cyklu. Realizujemy to poprzez przepisanie starej wartości przed obliczeniem aktualnej wartości uchybu.
Teraz możemy zająć się wyznaczeniem części różniczkującej.
Na początku tej części programu odejmujemy poprzednią wartość uchybu od aktualnej, potem mnożymy otrzymaną wartość przez iloraz stałej różniczkującej i czas próbkowania. Stosunek tych współczynników ustalamy zmieniając wartość rejestru D218 na panelu. W kolejnej linii dodajemy do siebie składową różniczkującą i proporcjonalną obliczoną wcześniej otrzymując sumę, którą mnożymy przez wzmocnienia Kp otrzymując wartość sygnału sterującego.
Tak zbudowany układ pozwalał na przeprowadzenie pomiarów odpowiedzi skokowych oraz porównanie regulatora P oraz regulatora PD. Od następnej strony zostały pokazane uzyskane wykresy wraz z wnioskami.
Regulator PD uzyskane odpowiedzi skokowe
Obserwacje regulatora PD zostały przeprowadzone przy wzmocnieniu Kp = 144, zostało zarejestrowanych 7 pomiarów
1. Pierwszy pomiar z wyłączonym działaniem części różniczkującej, układ osiąga stabilność po około 0.65s, posiada lekkie przeregulowanie oraz oscylacje, skok położenia 1500.
2. Pomiar z częścią różniczkującą Td/Ts = 1 oraz skokiem położenia 1500, oscylacje oraz przeregulowanie zmniejszyły się, czas regulacji nieznacznie zmalał do około 0.6s.
3. Pomiar dla Td/Ts = 2 oraz zmienionego skoku położenia równego 2000. Mimo zwiększonego skoku położenia układ stabilizuje się po 0.65s (czas taki sam jak regulator P dla skoku położenia 1500), nie występują oscylacje, przeregulowanie jest bardzo małe.
4. Pomiar dla Td/Ts = 3 oraz skoku położenia równego 2000. Jak w poprzednim przypadku czas regulacji około 0.65s, brak oscylacji oraz praktyczni niezauważalne przeregulowanie.
5. Pomiar dla Td/Ts = 5 oraz skoku położenia równego 2000. Czas regulacji około 0.65s, brak przeregulowania oraz oscylacji.
6. Pomiar dla Td/Ts = 10 oraz skoku położenia równego 2000. Czas regulacji 0.65s, jednak po osiągnięciu zadanego położenia zaczynają występować minimalne oscylacje pokazane na zbliżonym wykresie.
Przybliżenie:
7. Pomiar dla Td/Ts = 20 oraz skoku równego 2000, czas regulacji wydłuża się, oscylacje zaczynają rosnąć.
Przybliżenie:
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.
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;
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