Pakiet LabVIEW w sterowaniu suwnicą 3D
Robert Kuck, Mariusz Pauluk print
W artykule przedstawiono mechaniczny model suwnicy laboratoryjnej o wymiarach 1 m × 1 m × 1 m wraz z układem sterowania, a następnie zaprezentowano utworzony dla tego obiektu w środowisku graficznym LabVIEW panel kontrolno-pomiarowy, umożliwiający realizację eksperymentów z wykorzystaniem regulatora rozmytego. Przedstawiono także możliwości wykorzystania opracowanego panelu do stworzenia stanowiska laboratoryjnego na potrzeby e-learningu.
Postęp technologiczny i wiążący się z tym powszechny dostęp do szybszych systemów komputerowych sprawia, że dla coraz większej liczby obiektów z różnych obszarów aktywności człowieka spełniane są warunki konieczne do sterowania cyfrowego w czasie rzeczywistym [3, 4]. W wyniku tego obserwuje się dużą popularność systemów typu SCADA (Supervisory Control And Data Acquisition) łączących w sobie możliwości: sterowania, gromadzenia danych z czujników pomiarowych oraz monitorowania i nadzorowania procesu regulacji. Coraz większa moc obliczeniowa sprzyja również usprawnianiu interfejsu użytkownika nie tylko przez rozbudowę strony graficznej, ale także przez wykorzystywanie nowych form komunikacji (panele dotykowe, kamery, czujniki bioidentyfikacyjne, zdalne łącza internetowe). Wszystkie powyższe czynniki sprawiają, że proces projektowania układów regulacji za pomocą współczesnych systemów SCADA jest znacznie bardziej efektywny. W dalszym ciągu wymagana jest wiedza projektanta i to nie uległo zmianie, ale faza realizacji zaprojektowanego układu jest szybsza i wygodniejsza, także w obszarze dostrajania i modyfikowania wdrożonego już systemu. W artykule przedstawiono aplikację monitorująco-sterującą opracowaną w pakiecie LabVIEW na przykładzie laboratoryjnego modelu suwnicy 3D.
Stanowisko laboratoryjne
Na rys. 1. przedstawiono laboratoryjny model suwnicy [2], dla której stworzono w pakiecie LabVIEW [5, 6] aplikację kontrolno-pomiarową. Suwnica przemieszcza w płaszczyźnie XY wózek, na którym podwieszono na lince ładunek. Ładunek może być podnoszony lub opuszczany.
Przemieszczenie ładunku, a także jego odchylenie kątowe od pionu mierzone jest za pomocą pięciu układów formujących impulsy cyfrowe na podstawie ruchu tarcz enkoderowych. Położenie ładunku opisywane jest więc za pomocą pięciu zmiennych: xw – położenie wózka (rys. 2) wzdłuż osi x, yw – położenie wózka wzdłuż osi y, r – długość linki, α – odchylenie ciężaru od pionu w płaszczyźnie XZ i β – odchylenie ciężaru od pionu w płaszczyźnie YZ. Suwnica napędzana jest trzema silnikami prądu stałego. Długość, wysokość i szerokość ramy suwnicy wynosi 1 m. Ładunek ma masę 1 kg.
Celem sterowania suwnicą jest przeniesienie podwieszonego na linie ładunku z wybranego punktu początkowego do zadanego punktu końcowego w taki sposób, aby transport odbywał się szybko i bezkolizyjnie. Ruch ładunku powinien być także kontrolowany pod względem jego odchyleń od pionu.
Ręczne sterowanie suwnicą (przez operatora) polega na przemieszczaniu wózka suwnicy wzdłuż zadanej i bezpiecznej trasy. Ewentualny wzrost amplitudy wahań ładunku minimalizuje się przez zatrzymanie wózka. Po określonym czasie, wymaganym na wytłumienie wahań ładunku kontynuuje się sterowanie wózkiem. Doświadczony operator dobiera taką prędkość transportu, aby nie dochodziło do niebezpiecznych wychyleń ładunku, ewentualnie w prostych sytuacjach steruje wózkiem w taki sposób, aby wytłumić wahania.
Znacznie trudniejszym zadaniem jest sterowanie suwnicą w otwartej przestrzeni, gdzie mogą występować dodatkowe zakłócenia w postaci nagłych podmuchów wiatru lub kołysania się podłoża w przypadku, gdy dźwig zamontowany jest na jednostce pływającej. W takich sytuacjach szczególnie pożądanym jest wsparcie operatora sterowaniem automatycznym, które podczas niekorzystnych warunków zewnętrznych korygowałoby sterowanie ręczne. Wówczas zadaniem operatora jest obieranie bezkolizyjnej trasy, a zadaniem automatycznego regulatora takie sterowanie, aby nie dochodziło do odchyleń ładunku od pionu.
Sterownik urządzenia
Pakiet LabVIEW umożliwia zaimplementowanie dla szerokiej grupy obiektów sterowania w czasie rzeczywistym, czyli ogólnie rzecz ujmując, zaprojektowany w LabVIEW regulator wylicza sterowanie wystarczająco szybko, aby nadążyć za zmianami zachodzącymi w środowisku sterowanego obiektu.
Warunki sterowania suwnicą w czasie rzeczywistym spełniono przez zastosowanie pętli LabVIEW typu Timed Loop, którą wykorzystuje się do precyzyjnego zadawania okresu powtórzeń wybranego fragmentu programu, a także do ustalania priorytetów zadań.
Suwnica laboratoryjna sterowana jest z komputera klasy PC wyposażonego w kartę pomiarowo-sterującą RT-DAC [1]. Wysyłane przez kartę sygnały sterujące silnikami wzmacniane są przez sterownik mocy, który także pośredniczy w przesyłaniu do komputera informacji o położeniu enkoderów (rys. 3).
Funkcje sterowania silnikami oraz odczytu położenia suwnicy umieszczono razem w jednym bloku LabVIEW o nazwie 3dCrane.vi (rys. 4). Rozszerzenie nazwy jest zgodne z przyjętą w LabVIEW konwencją – Virtual Instrument. Blok ten stanowi wirtualną reprezentację suwnicy (device driver) w środowisku LabVIEW i umożliwia w praktyce sterowanie w czasie rzeczywistym. Podane na wejścia bloku sterowania są bezpośrednio przesyłane do obiektu mechanicznego, a informacja odczytana z tarcz enkoderowych na bieżąco dostępna jest na wyjściach bloku dla algorytmu realizującego sterowanie w czasie rzeczywistym.
Powyższy driver suwnicy umieszczono w pętli Timed Loop, którą tak skonfigurowano, aby nowa wartość sterowania wyliczana była 100 razy na sekundę, w równych odstępach czasu wynoszących 10 ms.
Model mechaniczny suwnicy wyposażony jest w trzy złącza krańcowe informujące o osiągnięciu przez suwnicę maksymalnego przesunięcia wzdłuż osi x i y oraz o podniesieniu ciężaru na maksymalną wysokość. Powyższa informacja została także uwzględniona w wirtualnej reprezentacji suwnicy i oznaczona jako wyjścia: X Switch, Y Switch oraz Z Switch.
Suwnicą można sterować niezależne w trzech kierunkach: PWM X, PWM Y i PWM Z, a wartość dopuszczalna sterowania zawiera się w przedziale [–1, 1]. Wartość ujemna sterowania oznacza przemieszczanie suwnicy w kierunku przeciwnym do ruchu odpowiadającego wartościom dodatnim. Nazwy wejść sterujących poprzedzone są przedrostkiem PWM (Pulse Width Modulation), ponieważ wartość sterowania zamieniana jest na falę prostokątną o współczynniku wypełnienia równym wartości sterowania. Na przykład, wartość 0,5 powoduje przyłożenie do silnika sygnału napięciowego w formie fali prostokątnej o współczynniku wypełnienia 0,5. Dlatego sterowanie równe 0 zatrzymuje silnik, a sterowanie równe 1 przemieszcza ładunek w wybranym kierunku z maksymalną prędkością.
Wyjścia z bloku 3dCrane.vi oznaczone jako ALFA, BETA, X, Y i Z odpowiednio reprezentują: kąt αwyrażony w radianach, kąt β wyrażony w radianach, położenie wózka wzdłuż osi x wyrażone w metrach, położenie wózka wzdłuż osi y wyrażone w metrach, oraz długość linki r z zawieszonym ładunkiem wyrażoną w metrach.
Program powyższego sterownika „napisany” jest także w języku graficznym LabVIEW (rys. 6). W strukturze diagramu sterownika suwnicy wyróżniono trzy części:
- Configuration – część konfiguracyjna
- Control – część odpowiedzialna za sterowanie
- Measurement – część odczytująca dane pomiarowe.
W części konfiguracyjnej znajdują się funkcje obsługujące ustawianie flag, ograniczeń przestrzeni roboczej ruchu ładunku, częstotliwości generowanego sygnału PWM, a także funkcje zerujące liczniki enkoderów. Ze względu na modułową budowę środowiska wszystkie funkcje stanowią osobne podprogramy i mogą być używane niezależnie. W tym celu wymagają jedynie podania na ich wejścia adresu bazowego karty RT-DAC, sygnału logicznego True lub False odpowiadającego zapisywaniu lub czytaniu wybranych rejestrów w pamięci karty oraz w przypadku zapisu podania nowych wartości, które mają być zapisane. Wszystkie parametry konfiguracyjne przechowywane są jako zmienne globalne w pliku 3DCrane_Parameters.vi, dzięki czemu są dostępne dla wszystkich podprogramów (rys. 5).
Wartości parametrów są wartościami domyślnymi i odczytywane są po każdym uruchomieniu programu. Adres bazowy karty (Base Address) jest automatycznie wykrywany poprzez funkcję RT-DACBaseAddress, wykorzystującą bibliotekę Rtdacapi.dll dostarczaną wraz ze sterownikami karty, a następnie zapisywany jako zmienna globalna. Poprawna wartość tego parametru jest niezbędna do działania wszystkich pozostałych funkcji. Pozostałe parametry mogą być zmieniane przez użytkownika i zapisywane do rejestrów karty poprzez omawiany driver jak również opisana dalej aplikację główną.
W części Control diagramu sterownika następuje sprawdzanie zadanych wartości sterujących i w razie konieczności ograniczenie ich do dopuszczalnego zakresu [–1, 1]. Następnie zostają one przekazane do funkcji PWM, której zadaniem jest wygenerowanie dla każdego z trzech kierunków odpowiadającego zadanej wartości sterowania PWM. Sterowanie nie zostanie wygenerowane, gdy flagi Rail Limit wskazują na osiągnięcie granicy dopuszczalnego obszaru roboczego a żądane sterowanie spowoduje przekroczenie tego obszaru. Sterowanie nie zostanie także wygenerowane, gdy z karty RT-DAC nadejdzie informacja o przegrzaniu sterownika mocy – ThermFlagSource.
W trzeciej części diagramu – Measurements – znajduje się funkcja odczytująca stany czujników krańcowych (Limit Switch) oraz funkcje odczytujące wartości z liczników położenia (Encoder X, Encoder Y, Encoder Z) i kątów (Encoder Alfa, Encoder Beta). Liczniki enkoderów są szesnastobitowe, zatem odczytana z nich wartość mieści się w przedziale [0, 65535]. Odczytane wartości położeń są skalowane do rzeczywistych przesunięć wyrażanych w metrach i radianach za pomocą współczynników skalujących – scale coefficients. Odczytane wartości są następnie zwracane na zewnątrz programu.
Dla bloku 3dCrane.vi utworzono w LabVIEW podstawowy interfejs użytkownika (Front Panel) umożliwiający manualne sterowanie suwnicą oraz prostą obserwację wartości chwilowych jej stanu (rys. 7).
Aby przesunąć ładunek w wybranym kierunku sterując ręcznie należy zadać wartość sterowania za pomocą suwaków lub pól edycyjnych. Wartości sterujące mogą zawierać się w przedziale [–1, 1], gdzie wartości 1, 0 i –1 odpowiednio oznaczają: maksymalne sterowanie w dodatnim kierunku, brak sterowania i maksymalne sterowanie w kierunku przeciwnym do przyjętego za dodatni. Wpisanie z klawiatury w polu edycyjnym nowej wartości sterowania powoduje przesunięcie także suwaka w odpowiednie położenie. Analogicznie, przesunięcie przez użytkownika suwaka powoduje automatycznie uaktualnienie wartości sterowania w polu tekstowym. Pola znajdujące w prawej części interfejsu prezentują numerycznie wartości odczytane z enkoderów (położenia w metrach, kąty w radianach) oraz w postaci binarnej wartości odczytane z czujników krańcowych. Kontrolka zabarwiona na czerwono oznacza osiągnięcie wartości maksymalnej w wybranym kierunku, kolor szary oznacza położenie suwnicy w obszarze dopuszczalnym.
Panel 3D Crane
Dysponując sterownikiem suwnicy przystąpiono do tworzenia panelu kontrolnego dla modelu laboratoryjnego, który udostępnia w kompleksowy sposób funkcje systemu. Działanie aplikacji można podzielić na trzy fazy: inicjalizacji, obsługi interfejsu i zakończenia programu. W pierwszym etapie realizowana jest detekcja karty RT-DAC. Gdy próba wykrycia karty nie powiedzie się, wyświetlany jest odpowiedni komunikat i program kończy działanie. Po wykryciu karty następuje faza inicjalizacji, w czasie której parametry konfiguracyjne przechowywane w pliku 3dCrane_Parameters zostają zapisane w odpowiednich rejestrach karty. Następuje także zapisanie ustawień wykorzystywanych podczas dostępu zdalnego do panelu. Następnie uruchamiana jest faza obsługi interfejsu. Po kliknięciu na przycisk EXIT aplikacja przywraca wszystkie ustawienia zmiennych do wartości domyślnych i kończy działanie.
W celu uzyskania większej przejrzystości aplikacji, udostępniane przez nią funkcje zostały pogrupowane w zakładki:
- Basic Test – podstawowe testy urządzenia
- Manual Setup – konfiguracja parametrów systemu
- Remote Access Control – edycja ustawień dla dostępu zdalnego
- Fuzzy Control Algorithm – rozmyty algorytm sterowania.
Zakładka Basic Tests
W pierwszej zakładce (rys. 8) umieszczone zostały funkcje służące do sprawdzania prawidłowego działania systemu. Procedura testowa została podzielona na pięć kroków, których numeracja odpowiada kolejności, w jakiej należy je wykonać podczas testowania poprawnej pracy stanowiska laboratoryjnego. Poniżej omówiono wybrane funkcje testowe.
Przed rozpoczęciem testów, ciężarek należy umieścić w dowolnej pozycji, różnej od bazowej. Pierwszą funkcją znajdującą się w omawianej zakładce jest funkcja Test Limit Switches, która testuje funkcjonowanie czujników położenia krańcowego. Po jej uruchomieniu na ekranie pojawia się okno dialogowe z trzema kontrolkami (rys. 9), z których każda reprezentuje jeden czujnik.
W kolejnej podgrupie (Step 2) znajdują się funkcje testowe: Go Home X-Axis, Go Home Y-Axis oraz Go Home Z-Axis. Uruchomienie dowolnej z nich powoduje przesunięcie ciężarka wzdłuż wybranej osi do położenia bazowego, gdzie następuje automatyczne wyzerowanie licznika położenia. Eksperyment można przerwać klikając na przycisk STOP (rys. 9).
W grupie czwartej (Step 4, rys. 8) znajdują się polecenia Go Home oraz Go To Center. Wybór pierwszego z nich powoduje przesunięcie ciężarka do pozycji bazowej, gdzie następuje automatyczne wyzerowanie liczników położenia. Operację tą należy przeprowadzać przed każdym eksperymentem w celu ustalenia prawidłowej pozycji początkowej. Drugi przycisk aktywuje funkcję przesuwającą ciężarek na środek obszaru roboczego.
W piątej podgrupie testów (Step 5, rys. 8) umieszczono funkcje testujące procedury mierzące kąty odchylenia ciężarka od pionu. Na początku należy skalibrować pomiar kątów przez wyzerowanie liczników mierzących kątowe odchylenie ciężarka, gdy kąty α i β są równe zero.
Kolejne narzędzie testowe: Check Angles drukuje graficznie historię wahania się ładunku. Odchylając od pionu ciężarek (np. ręcznie) można obserwować jego zmiany kątowe w czasie rzeczywistym. Wyniki przykładowego testu kalibracji kątów α i β przedstawia rys. 10.
Zakładka Remote Control
Korzystając z dostępnego w środowisku LabVIEW narzędzia Remote Panel, zaimplementowano w aplikacji głównej możliwość zdalnego przejęcia kontroli nad suwnicą poprzez sieć LAN lub Internet, za pomocą standardowej przeglądarki WWW. Niedogodnością obecnego rozwiązania jest brak w aplikacji przejmującej zdalnie kontrolę nad suwnicą podglądu zachowania sterowanego obiektu w formie sygnału wideo. Wyniki eksperymentów obserwuje się na bieżąco jedynie na wykresach z przebiegami czasowymi wybranych zmiennych. Powyższy problem można wyeliminować doposażając stanowisko w kamerę. LabVIEW dysponuje narzędziem NI IMAQ Vision Development Module, które przewidziane jest do takich zastosowań.
Warunkiem koniecznym, aby dostęp zdalny przez przeglądarkę był możliwy jest wcześniejsze zainstalowanie na komputerze klienta darmowych bibliotek LabVIEW Run-time Engine. Po udanym podłączeniu do panelu użytkownik automatycznie znajduje się w trybie viewing i tym samym może obserwować poczynania innego użytkownika korzystającego z aplikacji bezpośrednio na komputerze hoście lub połączonego zdalnie. Aby zgłosić żądanie przejęcia kontroli nad aplikacją należy w oknie przeglądarki kliknąć prawym przyciskiem myszy na panelu i z menu kontekstowego wybrać opcję Request Control of VI. Gdy użytkownik posiada odpowiednie uprawnienia, a panel kontrolujący suwnicą jest dostępny sterowanie aplikacją zostaje przekazane i wyświetlany zostaje komunikat Control Granted. Na serwerze pojawia się informacja Control Transferred to [address]. Użytkownik zdalny może obsługiwać aplikację dokładnie tak samo, jak ma to miejsce na komputerze laboratoryjnym. Po opuszczeniu strony z panelem sterowanie jest automatycznie przekazywane serwerowi lub następnemu użytkownikowi oczekującemu w kolejce na obsługę stanowiska.
Użytkownik korzystający z aplikacji na komputerze bezpośrednio podłączonym do suwnicy jest uprzywilejowany w stosunku do użytkowników zdalnych, ponieważ może zablokować możliwość przejmowania kontroli panelem przez innych (opcja Lock Control). W każdym momencie może również odzyskać sterowanie aplikacją poprzez wybranie opcji Regain Control.
Przykładowe eksperymenty
Pełny rozmyty układ regulacji suwnicy został zrealizowany przy użyciu narzędzia Fuzzy Logic Controller Design, wchodzącego w skład Fuzzy Logic Toolkit. Z regulatora można korzystać przy pomocy prezentowanego w niniejszym artykule panelu kontrolnego lub niezależnie od niego poprzez osobną aplikację.
W czwartej zakładce aplikacji głównej, Fuzzy Control Algorithm (rys. 11), umieszczono przykładowe algorytmy sterowania z wykorzystaniem regulatora rozmytego (fuzzy). Umieszczono w niej standardowe procedury testowe, przygotowujące sprzęt laboratoryjny do eksperymentu (Preparation Steps) oraz podgrupę funkcji konfigurujących eksperyment. Dostępne są cztery typy sygnałów zmiennych w czasie jako wartości zadane w układzie regulacji: prostokątny, trójkątny, sinusoidalny oraz sygnał typu piła.
Dostępne są trzy rodzaje regulacji niezależnie dla każdej z osi lub dla wszystkich kierunków jednocześnie:
- Position and Angular Control – regulator generuje sterowanie nadążające za zadaną pozycją, przy jednoczesnym tłumieniu drgań ładunku
- Only Position Control – wyliczane sterowanie minimalizuje tylko uchyb położenia ładunku, powstałe podczas eksperymentu drgania nie są tłumione
- Only Angular Control – regulator tłumi drgania ciężarka powstałe w wyniku jego ręcznego poruszania. Wartość zadana położenia jest ignorowana.
Przyciski X-Axis, Y-Axis, Z-Axis Enabled pozwalają na wybranie aktywnych w procesie regulacji kierunków.
Regulacja tłumiąca wychylenie ładunku
W pierwszym eksperymencie sprawdzono skuteczność działania regulatorów tłumiących oscylacje ładunku. Ładunek wychylono o maksymalny, dopuszczalny konstrukcyjnie kąt, a następnie puszczony swobodnie. Odczytane oscylacje ładunku przedstawiono graficznie na wykresach (rys. 12).
|
|
Następnie wybrano algorytm tłumiący oscylacje ładunku i powtórzono eksperyment. Po upływie ok. 5 s ładunek został ustabilizowany – a amplituda oscylacji zmniejszyła się do wartości mniejszej niż jeden stopień. Wyniki drugiego eksperymentu przedstawiono na rys. 13.
Regulacja nadążna z tłumieniem oscylacji ładunku
Wyniki eksperymentu, w którym wartość zadana dla wszystkich kierunków ma kształt „piły” przedstawiono na rys. 14. Zadaniem regulatora jest nadążać za wartością zadaną położenia wózka i długości linki oraz tłumić w trakcie przenoszenia ładunku jego odchylenia od pionu. Dwa górne wykresy prezentują położenie wózka, a wykres lewy-dolny długość liny wyrażoną w metrach. Kolorem białym oznaczono wartość zadaną, a czerwonym zmiany położenia wózka i długości liny podczas trwania eksperymentu. Czwarty wykres (prawy dolny) prezentuje zmiany w czasie kątów α i β wyrażone w stopniach.
Podsumowanie
Pakiet LabVIEW okazał się być pomocnym i praktycznym narzędziem w realizacji postawionego zadania. Istotną własnością tego narzędzia jest łatwość w projektowaniu interfejsu operatora. Możliwości LabVIEW pozwoliły w sposób efektywny i przejrzysty: zaimplementować zaprojektowany regulator, przystosować go do pracy w czasie rzeczywistym, oraz przeanalizować zachowanie całego układu regulacji. Graficzne możliwości pakietu zapewniają projektantowi wiele swobody w doborze wyglądu końcowego aplikacji, a rezultaty z pewnością mogą być powodem do odczuwania satysfakcji.
Bibliografia
- www.inteco.com.pl, RT-DAC4/PCI Multi I/O Board User’s Manual
- www.inteco.com.pl, 3DCrane User’s Manual
- Grega W., Metody i algorytmy sterowania cyfrowego w układach scentralizowanych i rozproszonych, Uczelniane Wydawnictwa Naukowo-Dydaktyczne AGH, Kraków 2004.
- Piątek P., Wykrzystanie specjalizowanych architektur sprzętowych do realizacji krytycznych czasowo zadań sterowania – rozprawa doktorska, Akademia Górniczo Hutnicza, Kraków 2007.
- Bitter R., Mohiuddin T., Nawrocki M., LabView advanced programming techniques, CRC Press, 2006.
- www.ni.com/labview/
mgr inż. Robert Kuck, dr inż. Mariusz Pauluk – Katedra Automatyki, Akademia Górniczo-Hutnicza