Politechnika Aódzka Instytut Automatyki ZakÅ‚ad Sterowania Robotów Laboratorium sterowania robotów Aódz 2001 Ćwiczenie A i B Cel ćwiczenia Celem ćwiczenia jest pokazanie budowy, dziaÅ‚ania oraz zasad programowania prostych robotów i manipulatorów na przykÅ‚adzie robotów dydaktycznych L1 i L2. Przed wykonaniem ćwiczenia należy zapoznać siÄ™ z przeznaczeniem i danymi technicznymi tych robotów korzystajÄ…c z niniejszego opracowania oraz instrukcji technicznych zawierajÄ…cych szczegółowy opis. Należy dokÅ‚adnie sprawdzić możliwoÅ›ci ruchowe manipulatorów w trybie rÄ™cznym (patrz akapit Software) ze szczególnym zwróceniem uwagi na zakresy ruchów i dozwolone prÄ™dkoÅ›ci. Zadania do wykonania Zadaniem studentów jest zapoznanie siÄ™ ze wszystkimi możliwoÅ›ciami robotów L1 i L2 oraz sposobem tworzenia algorytmu ich dziaÅ‚ania. Wynikiem ćwiczeÅ„ A i B powinny być dwa programy dla robotów L1 i L2. Oba roboty muszÄ… ze sobÄ… współpracować w nastÄ™pujÄ…cy sposób: robot L1 przekazuje styropianowy detal do robota L2, który wrzuca otrzymany element do przygotowanego pudeÅ‚ka. Roboty powinny informować siÄ™ wzajemnie o fazie pracy w jakiej siÄ™ znajdujÄ…, by programy mogÅ‚y dziaÅ‚ać zarówno w trybie pracy krokowej jak i automatycznej. Opis stanowiska UkÅ‚ad napÄ™dowy i sterowania UkÅ‚ad napÄ™dowy każdej osi zawiera sterownik, silnik krokowy oraz wyÅ‚Ä…cznik kraÅ„cowy. UkÅ‚ad pracuje w pÄ™tli otwartej przez co wymaga każdorazowego bazowania. Głównym elementem ukÅ‚adu sterowania jest komputer klasy PC wyposażony w specjalizowane karty wejść/wyjść, klawiaturÄ™ i w przypadku robota L2 panel sterowania. StrukturÄ™ systemu sterowania robotów L1 i L2 pokazano na rys. 1. IBM compatible IO 8255 IO card MULTI digital teachbox Step motor Step motor IO controler controler Joint Joint Joint Joint Joint Joint of of of of of of robot robot robot robot robot robot Rys. 1 System sterowania robotów przemysÅ‚owo-dydaktycznych Część manipulacyjna Robot L1 jest typowym robotem kartezjaÅ„skim ze sferycznym nadgarstkiem. Posiada 6 stopni swobody i elektryczny chwytak. Widok robota L1 oraz dane techniczne przedstawiono poniżej. Rys. 2 Robot L1 RS 232C RS 232C Tabela 1 3.2 kg producenta) 400mm 300mm 160mm n×360° 180° n×360° 4 m/min 0.5 rad/s Ä…0.02mm Robot L2 ma Å‚aÅ„cuch kinematyczny typu Puma z 5 stopniami swobody. Efektor stanowi pudeÅ‚ko do odbierania detalu. Wyposażony jest w teachbox do rÄ™cznego sterowania. Użycie teachboxu jest wskazane w sytuacjach awaryjnych oraz przed bazowaniem. Widok robota L2 oraz teachboxu przedstawiono na rys. 3, a dane techniczne w tabeli 2. Tabela 2 3.2 kg 320° 100° 270° 170° 340° Ä…0.02mm DokÅ‚adność pozycjonowania(jw.) Ä…0.05mm.. Ä…0.15mm Rys. 3 Robot L2 oraz teachbox Software Program L1/L2 umożliwia tworzenie, edycjÄ™ oraz uruchamianie programów sterowania robotów. Hierarchiczne menu oraz fragment okna edycyjnego prezentuje rys. 4 Rys. 4 Menu programu L2 Tabela 3 - opcje menu: Menu Funkcja File Operacje plikowe i dyskowe Edit Otwarcie okna edycyjnego. WejÅ›cie do sterowania rÄ™cznego. Start Bazowanie oraz uruchamianie programu. Dodatkowo w L1 uproszczone sterowanie rÄ™czne manipulatorem Options Funkcje dodatkowe Wybranie menu Edit spowoduje otwarcie okna edycyjnego jak na rys. 5. Linia statusu Program sterowania Polecenia edytora Rys. 5 Okno edycji Polecenia edytora: poruszanie kursorem PgUp, PgDn, Ä™!“! Enter wywoÅ‚anie menu instrukcji Ctrl-Y skasowanie podÅ›wietlonej linii Ins wstawienie linii F1 informacja o edytowanym programie F2 zapis ESC wyjÅ›cie Program zbudowany jest z makroinstrukcji i ich parametrów wstawianych z menu instrukcji (wywoÅ‚ywanego za pomocÄ… ENTER). Widok okna z instrukcjami przedstawia rys. 6, zaÅ› opis instrukcji zawarto w tabeli 4. Rys. 6 Menu instrukcji Tabela 4 Mnemonik Parametry Opis MOVE przesuniÄ™cie wzglÄ™dne o wektor dx, dy, dz [mm or °] podany jako parametr dÄ…, d², dÅ‚ [°] MOVE TO j.w. przesuniÄ™cie do pozycji okreÅ›lonej w ciele instrukcji, pozycja zerowa okreÅ›lona przez NULL SPEED ustawienie prÄ™dkoÅ›ci sx, sy, sz, sÄ…, s², sÅ‚ {21..4000} NULL XYZ - ustalenie pozycji zerowej - ustalenie orientacji zerowej NULL Ä…²Å‚ INTERPOL XYZ i {0,1,2} ustalenie pary osi 0 - XY, 1 - XZ, 2 - YZ wykonujÄ…cych ruch jednoczeÅ›nie i {0,1,2} ustalenie pary osi INTERPOL Ä…²Å‚ wykonujÄ…cych ruch 0 - Ä…², 1 - ²Å‚, 2 - Ä…Å‚ jednoczeÅ›nie REPEAT n otwarcie pÄ™tli n powtórzeÅ„ REPEAT END - zamkniÄ™cie pÄ™tli OUTPUT ON nr ustawienie wyjÅ›cia nr OUTPUT OFF nr wyzerowanie wyjÅ›cia nr WAIT t [sec] pauza na t sekund END - koniec programu Przebieg ćwiczenia: W celu rozpoczÄ™cia ćwiczenia należy: a) uruchomić komputer, b) wÅ‚Ä…czyć sterownik silników krokowych (pod komputerem), c) uruchomić program L1.exe (lub L2.exe) z katalogu C:\ROBOTY\L1.V4 (C:\ROBOTY\L2.V4), d) wybrać opcjÄ™ sterowania przewodowego. Uwaga: Przed synchronizacjÄ… robota należy upewnić siÄ™, że znajduje on siÄ™ w przestrzeni roboczej, a w szczególnoÅ›ci nie Å›wieci siÄ™ żadna kontrolka HOME na sterowniku silników krokowych. W przeciwnym przypadku należy sprowadzić robota do przestrzeni roboczej przy użyciu: a) teachboxu (dla robota L2) b) opcji sterowania rÄ™cznego z menu START i strzaÅ‚ek (dla L1). W czasie programowania ruchów robotów należy ponadto uwzglÄ™dniać interakcje miÄ™dzy ruchami w poszczególnych osiach, dla L1 w osiach Ä…, ², Å‚ a dla L2 w Ä… i ². Ćwiczenie D Cel ćwiczenia Celem ćwiczenia jest zapoznanie siÄ™ ze sposobem programowania robotów przemysÅ‚owych za pomocÄ… panelu sterowania. Zadania do wykonania W trakcie ćwiczenia należy uruchomić i zsynchronizować robota IRp-6, a nastÄ™pnie zapoznać siÄ™ z obsÅ‚ugÄ… panelu programowania. Pierwsze zadanie do wykonania polega na obrysowaniu w przestrzeni ksztaÅ‚tki styropianowej wskazanej przez prowadzÄ…cego. Główna część ćwiczenia polega na uÅ‚ożeniu i uruchomieniu programów przenoszenia niewielkich przedmiotów w przestrzeni roboczej manipulatora. Opis stanowiska Uruchomienie i synchronizacja robota Panel sterowania robotem (rys. 15) wmontowany jest w szafÄ™ sterowniczÄ…. Uruchomienie robota dokonywane jest przez wÅ‚Ä…czenie stacyjki. Po jej wÅ‚Ä…czeniu Å›wiecÄ… siÄ™ lampki sygnalizacyjne SIEĆ oraz STOP AWARYJNY . WciÅ›niÄ™cie przycisku GOTOWOŚĆ wÅ‚Ä…cza zasilanie ukÅ‚adu elektronicznego i jest sygnalizowane zapaleniem lampek GOTOWOŚĆ i UTRATA PROGRAMU oraz zgaÅ›niÄ™ciem lampki STOP AWARYJNY . W tym stanie pracy silniki pozostajÄ… bez zasilania z brak synchronizacji robota jest sygnalizowany systematycznym zapalaniem i gaÅ›niÄ™ciem lampki SYNCHRONIZACJA . WciÅ›niÄ™cie klawisza praca powoduje zasilenie silników manipulatora i jest sygnalizowane zapaleniem lampki PRACA i zgaÅ›niÄ™ciem lampki GOTOWOŚĆ. RAM BAT LAMP BAT PRACA SYNCHRONIZACJA GOTOWOŚĆ Rys. 15 Panel sterowania Przed przystÄ…pieniem do dalszych czynnoÅ›ci należy zsynchronizować manipulator. W tym celu, używajÄ…c joystick'a panelu programowania, należy sprowadzić manipulator do nastÄ™pujÄ…cego poÅ‚ożenia: a) ramiÄ™ dolne powinno być pochylone do przodu o ok. 15 od pionu, b) ramiÄ™ górne powinno być pochylone w dół o ok. 30 od poziomu, c) kolumna powinna być obrócona o ok. 30 w lewo (patrzÄ…c od przodu) od poÅ‚ożenia Å›rodkowego, d) przegub powinien być ustawiony na przedÅ‚użeniu ramienia górnego, e) otwór ustalajÄ…cy w koÅ„cówce koÅ‚nierzowej powinien być skierowany do góry. Po sprowadzeniu manipulatora do poÅ‚ożenia wyjÅ›ciowego należy wcisnąć przycisk SYNCHRONIZACJA. Zostaje wtedy zgaszona lampka UTRATA PROGRAMU i manipulator jest automatycznie sprowadzany do poÅ‚ożenia podstawowego. ZakoÅ„czenie synchronizacji sygnalizowane jest zgaÅ›niÄ™ciem lampki SYNCHRONIZACJA i wyÅ›wietleniem wstÄ™pnego komunikatu na panelu programowania. RÄ™czne sterowanie manipulatorem Panel programowania robota zawiera miÄ™dzy innymi joystick umożliwiajÄ…cy rÄ™czne sterowanie manipulatorem. Joystick ten ma trzy stopnie swobody i jest aktywny tylko przy wciÅ›niÄ™tej pÅ‚ytce zezwolenia. Nad joystickiem znajduje siÄ™ przeÅ‚Ä…cznik umożliwiajÄ…cy przeÅ‚Ä…czanie joystick'a na sterowanie poÅ‚ożeniem ramion lub orientacjÄ… chwytaka. ZnajdujÄ…ce siÄ™ w Å›rodkowej części panelu przeÅ‚Ä…czniki umożliwiajÄ… sterowanie chwytakiem i wybór ukÅ‚adu współrzÄ™dnych dla rÄ™cznego operowania manipulatorem. Należy dokÅ‚adnie zapoznać siÄ™ z możliwoÅ›ciami rÄ™cznego sterowania manipulatorem we wszystkich ukÅ‚adach współrzÄ™dnych, przy użyciu joystick'a, a także z możliwoÅ›ciÄ… otwierania i zamykania chwytaka. Otwieranie chwytaka realizowane jest sekwencjÄ… poleceÅ„ CHWYTAK 2 ZWOLNIJ CHWYTAK 1 CHWYĆ natomiast zamykanie sekwencjÄ… CHWYTAK 2 CHWYĆ CHWYTAK 1 ZWOLNIJ Fig. 17 Teachbox PeÅ‚ny opis obsÅ‚ugi panelu sterowania studenci znajdÄ… w podrÄ™czniku programowania robota Irp-6 dostÄ™pnym w trakcie ćwiczeÅ„. Edycja programu Dla sprawnego przebiegu ćwiczenia należy zapoznać siÄ™ z podstawowymi możliwoÅ›ciami edytora programu: wyÅ›wietlenie instrukcji nastÄ™pnej / poprzedniej / pierwszej / ostatniej / okreÅ›lonej numerem, usuniÄ™cie instrukcji, wstawienie dodatkowej instrukcji oraz zmiana parametrów instrukcji (rys. 17). Rys. 17 Funkcje edycyjne Uruchamianie programu IstniejÄ… trzy sposoby uruchomienia manipulatora w trybie pracy automatycznej: - STPOCZ pozwala uruchomić program od jego pierwszej instrukcji, - START pozwala uruchomić program od instrukcji pokazanej na wyÅ›wietlaczu, - KROK pozwala wykonać jednÄ…, aktualnie wyÅ›wietlonÄ… instrukcjÄ™. W czasie uruchamiania programu korzystnie jest używać opcji KROK do testowania i korygowania każdej instrukcji osobno a dopiero po sprawdzeniu caÅ‚ego programu zaleca siÄ™ jego uruchomienie od pierwszej instrukcji. Należy uruchomić krokowo, od pierwszej i od aktualnie wyÅ›wietlanej instrukcji program dostarczony przez prowadzÄ…cego ćwiczenie. Programowanie podstawowych operacji robota Każdy program dziaÅ‚ania robota powinien rozpoczynać siÄ™ instrukcjami wyboru narzÄ™dzia i zmiany prÄ™dkoÅ›ci podstawowej. W poczÄ…tkowej fazie ćwiczenia mogÄ… one mieć nastÄ™pujÄ…cÄ… postać: 10 NARZDZIE 1 20 PRDKOŚĆ = 100 MM/S, PRDKOŚĆ MAX = 200 MM/S NarzÄ™dzie nr 1 jest w robocie zdefiniowane wstÄ™pnie i dlatego może być używane bez wczeÅ›niejszej definicji jawnej. Należy pamiÄ™tać, że w przygotowywanym programie czÄ™sto wystÄ™pujÄ… bÅ‚Ä™dy uniemożliwiajÄ…ce jego realizacjÄ™. Najczęściej polegajÄ… one na przekroczeniu maksymalnej prÄ™dkoÅ›ci w osiach, nie wÅ‚Ä…czeniu napÄ™dów lub niedozwolonej zmianie konfiguracji. WystÄ…pienie bÅ‚Ä™du jest zawsze sygnalizowane na panelu operacyjnym i na panelu programowania a lista sygnalizowanych bÅ‚Ä™dów jest zamieszczona w instrukcji programowania robota na stronie 74. W razie wystÄ…pienia bÅ‚Ä™du powinien on zostać "skasowany" przyciskiem KAS. NastÄ™pnie należy dokonać odpowiedniej korekty programu i ponownie go uruchomić. Programowanie podstawowych czynnoÅ›ci manipulatora. Instrukcja pozycjonowania. SzczególnÄ… uwagÄ™ w trakcie wykonywania ćwiczenia należy poÅ›wiÄ™cić instrukcji pozycjonowania (rys. 18). W przestrzeni roboczej P manipulatora należy wybrać dwa różne punkty A i B (odlegÅ‚e od siebie o ok. 50-100cm) takie, że odcinek AB jest caÅ‚kowicie zawarty w przestrzeni P. Należy zaprogramować a nastÄ™pnie wykonać w trybie pracy automatycznej przemieszczenie manipulatora z punktu A do B i z powrotem. Przemieszczenie takie programuje siÄ™ umieszczajÄ…c w programie instrukcje pozycjonowania (symbol ###) w odpowiednich punktach przestrzeni roboczej. Należy zastosować pozycjonowanie dokÅ‚adne, bezwzglÄ™dne z zadanÄ… prÄ™dkoÅ›ciÄ… a ruch manipulatora powinien być wykonywany kolejno przy pozycjonowaniu: a) quasiliniowym, b) liniowym, c) koÅ‚owym (punkt poÅ›redni należy wybrać samodzielnie). Należy zaobserwować na czym polegajÄ… różnice pomiÄ™dzy poszczególnymi rodzajami pozycjonowania (a, b, c), a nastÄ™pnie wykonać te same ruchy przy pozycjonowaniu zgrubnym oraz przy pozycjonowaniu z zadanym czasem. Po zapoznaniu siÄ™ z poszczególnymi rodzajami ruchów manipulatora należy uÅ‚ożyć program demonstrujÄ…cy kolejno wszystkie jego proste ruchy. W praktyce czÄ™sto wykorzystuje siÄ™ również pozycjonowanie wzglÄ™dne manipulatora. W czasie wykonywania ćwiczenia należy zapoznać siÄ™ z tym rodzajem pozycjonowania i uÅ‚ożyć krótki program z jego wykorzystaniem. Rys. 18 Instrukcje pozycjonowania Rys. 19 Instrukcje pomocnicze Inne instrukcje robota. Oprócz instrukcji pozycjonowania robot IRp-6 pozwala używać 10 instrukcji pomocniczych (rys. 19). Należy zapoznać siÄ™ z tymi instrukcjami a nastÄ™pnie uÅ‚ożyć program chwytaka i przenoszenia niewielkiego przedmiotu (na przykÅ‚ad pudeÅ‚ka zapaÅ‚ek) wzdÅ‚uż obwodu prostokÄ…ta PQXY. ProstokÄ…t ten powinien leżeć w jednej z pÅ‚aszczyzn kartezjaÅ„skiego ukÅ‚adu współrzÄ™dnych zwiÄ…zanego z podstawÄ… manipulatora. W każdym z wierzchoÅ‚ków prostokÄ…ta manipulator powinien pozostawać nieruchomy przez czas 2 sekund a prÄ™dkoÅ›ci poruszania siÄ™ manipulatora wzdÅ‚uż każdego z boków prostokÄ…ta powinny być różne. WprowadzajÄ…c instrukcjÄ™ powtarzania należy otrzymany program zmodyfikować tak aby koÅ„cówka manipulatora kreÅ›liÅ‚a najpierw kilkakrotnie trójkÄ…t PQX a nastÄ™pnie prostokÄ…t PQXY, a dodatkowo otrzymany program należy uzupeÅ‚nić instrukcjami poczÄ…tku oraz koÅ„ca oscylacji. W koÅ„cowej fazie ćwiczenia należy zmienić definicjÄ™ narzÄ™dzia i zaobserwować wpÅ‚yw tej zmiany na dziaÅ‚anie manipulatora. SzczególnÄ… uwagÄ™ należy zwrócić na wpÅ‚yw definicji narzÄ™dzia, a zwÅ‚aszcza jego orientacji, na możliwość wykonania ruchu koÅ‚owego. Zdefiniowanie narzÄ™dzia polega na okreÅ›leniu poÅ‚ożenia punktu roboczego narzÄ™dzia i orientacji jego osi wzglÄ™dem ukÅ‚adu nadgarstka (rys. 20). PoÅ‚ożenie okreÅ›lone jest przez trzy współrzÄ™dne kartezjaÅ„skie odczytane w ukÅ‚adzie nadgarstka (indeks k na rys. 20). OrientacjÄ™ narzÄ™dzia okreÅ›lajÄ… dwa kÄ…ty: nutacji (N) i precesji (P) odczytane również wzglÄ™dem osi ukÅ‚adu nadgarstka. Rys. 20 Definiowanie narzÄ™dzia Ćwiczenie E Cel ćwiczenia Celem ćwiczenia jest zapoznanie siÄ™ z budowÄ…, dziaÅ‚aniem i programowaniem robota dydaktycznego sterowanego za pomocÄ… przemysÅ‚owego sterownika programowalnego. Zadanie do wykonania polega na zaprojektowaniu dziaÅ‚ania manipulatora w Å›rodowisku w którym dużą rolÄ™ odgrywajÄ… zależnoÅ›ci logiczno-relacyjne. Zadania do wykonania diody 0.6 0.7 1.3 1.7 1.2 1.6 1.1 1.5 1.0 1.3 1.2 1.1 1.0 Zadaniem do wykonania jest napisanie programu, który uwzglÄ™dniajÄ…c powyższy rysunek powinien speÅ‚niać nastÄ™pujÄ…ce warunki: 1. Detal jest Å‚adowany do gniazda rÄ™cznie w dozwolonych 3 orientacjach. Tam przebywa co najmniej przez zadany czas (np. 5s), kiedy to w warunkach przemysÅ‚owych poddawany byÅ‚by obróbce (np.: frezowanie Å›cian). W tym czasie czerwona dioda powinna pulsować. Po upÅ‚ywie zadanego czasu dioda pali siÄ™ w sposób ciÄ…gÅ‚y, aż do odbioru detalu. Wygaszona dioda winna sygnalizować puste gniazdo. 2. Użytkownik ma prawo zgÅ‚osić zapotrzebowanie na okreÅ›lony typ detalu za pomocÄ… jednego z 3 przycisków na Å›ciance bocznej rozgaÅ‚Ä™znika, co powinno być sygnalizowane jednÄ… z zielonych diod 3. Detal z gniazda powinien zostać przeniesiony przez manipulator wedÅ‚ug nastÄ™pujÄ…cych kryteriów: " jeżeli jest zgÅ‚oszone zapotrzebowanie na ten typ detalu jaki jest w gniezdzie manipulator przenosi go bezpoÅ›rednio na pozycjÄ™ koÅ„cowÄ…; " jeżeli w danym momencie nie ma zapotrzebowania skÅ‚aduje w magazynie tymczasowym na pozycjÄ™ przyporzÄ…dkowanÄ… okreÅ›lonej orientacji (segregacja detali); " jeżeli nie ma zapotrzebowania i magazyn tymczasowy jest wypeÅ‚niony (pozycja dla detalu o okreÅ›lonej orientacji jest zajÄ™ta) detal pozostaje w gniezdzie. Zatem wyższy priorytet ma tu zgÅ‚oszenie odbioru detalu w pozycji koÅ„cowej od skÅ‚adowania w magazynie. 4. W przypadku gdy w gniezdzie i w magazynie jest detal okreÅ›lonej orientacji izostaÅ‚o zgÅ‚oszone zapotrzebowanie na detal innego typu, który aktualnie nie jest dostÄ™pny (nie ma go w magazynie) powinien zostać wÅ‚Ä…czony alarm (np.: 3 diody zielone rytmicznie pulsujÄ…), gdyż taka sytuacja grozi zablokowaniem systemu i wymaga ingerencji operatora. Przebieg ćwiczenia: 1. Zapoznać siÄ™ ze strukturÄ… i możliwoÅ›ciami jÄ™zyka programowania. 2. ZaÅ‚Ä…czyć komputer, zasilacz i przyÅ‚Ä…cze pneumatyczne. 3. Uruchomić program fst101.exe. 4. Otworzyć wÅ‚asny projekt w systemie FST101. 5. Przygotować program sterowania robota dla zadania opisanego w części Zadania do wykonania . Opis stanowiska Manipulator o kartezjaÅ„skim Å‚aÅ„cuchu kinematycznym posiada 3 stopnie swobody, przy czym jedna oÅ› napÄ™dzana jest silnikiem prÄ…du staÅ‚ego zaÅ› dwie pozostaÅ‚e siÅ‚ownikami pneumatycznymi. Robot dodatkowo wyposażony jest w przyssawkÄ™. Wszystkie elementy stanowiska sÄ… produkcji firmy Festo. Struktura jÄ™zyka Festo-INTERPRETER JÄ™zyk Festo-INTERPRETER jest problemowym jÄ™zykiem programowania zadaÅ„ sterowania procesami przemysÅ‚owymi o dowolnym stopniu zÅ‚ożonoÅ›ci. Podstawowym elementem strukturalnym jÄ™zyka jest zdanie logiczne postaci: IF THEN OTHRW < rozkazy części wykonawczej 2> W części warunkowej nastÄ™puje sprawdzenie zgodnoÅ›ci rzeczywistego stanu zmiennych ze stanem zaprogramowanym. Wynik sprawdzenia decyduje o realizacji okreÅ›lonej części wykonawczej. PrzykÅ‚ad: IF i1.0 jeÅ›li bit wejÅ›ciowy i1.0=1 THEN SET o1.0 to ustaw bit wyjÅ›ciowy o1.0=1 OTHRW RESET o1.0 w przeciwnym razie wyzeruj bit wyjÅ›ciowy o1.0=0 Część warunkowa może zawierać zÅ‚ożonÄ… funkcjÄ™ logicznÄ… wielu zmiennych, zaÅ› część wykonawcza może skÅ‚adać siÄ™ z wielu rozkazów. Maksymalna liczba instrukcji w jednym zdaniu logicznym wynosi 100. SkÅ‚adnia Festo-INTERPRETER dopuszcza uproszczone struktury zdania logicznego: · bez części warunkowej: THEN < rozkazy części wykonawczej 1> · bez części wykonawczej drugiej: IF < warunek > THEN < rozkazy części wykonawczej 1> · z częściÄ… wykonawczÄ… 1 lub 2 zawierajÄ…cÄ… instrukcje pustÄ… NOP: IF < warunek > THEN NOP ELSE NOP Kolejnym elementem struktury oprogramowania jest KROK bÄ™dÄ…cy zespoÅ‚em zdaÅ„ logicznych. Sekwencja kroków tworzy PROGRAM. W obrÄ™bie programu kroki wykonywane sÄ… kolejno zgodnie z ich numeracjÄ…. Maksymalna liczba kroków wynosi 255. PrzejÅ›cie do kolejnego kroku uwarunkowane jest przez strukturÄ™ zdaÅ„ logicznych np.: STEP 1 THEN < rozkazy części wykonawczej. 1> STEP 2 IF < warunek.> THEN < rozkazy części wykonawczej. 1> STEP 3 IF < warunek.> THEN < rozkazy części wykonawczej. 1> OTHRW < rozkazy części wykonawczej. 2> STEP 4 IF < warunek.> THEN < rozkazy części wykonawczej. 1> OTHRW < rozkazy części wykonawczej. 2> zdanie 4.1 IF < warunek.> THEN < rozkazy części wykonawczej. 1> OTHRW < rozkazy części wykonawczej. 2> zdanie 4.2 IF < warunek.> THEN < rozkazy części wykonawczej. 1> zdanie 4.3 STEP 5 THEN < rozkazy części wykonawczej. 1> PrzejÅ›cie 1-2 zostanie zrealizowane bezwarunkowo z jednoczesnym wykonaniem rozkazów części wykonawczej. PrzejÅ›cie 2-3 nastÄ…pi wyÅ‚Ä…cznie po speÅ‚nienu warunku (i wykonaniu rozkazów). PrzejÅ›cie 3-4 nastÄ…pi zawsze zaÅ› wykonane rozkazy bÄ™dÄ… zależeć od speÅ‚nia warunku zdania. Zdania logiczne w kroku 4 tworzÄ… zestaw niezależnie realizowanych zdaÅ„. Ich wielokrotna realizacja trwa do momentu speÅ‚nienia warunku w ostatnim (4.3) zdaniu. NastÄ…pi wtedy sekwencyjne przejÅ›cie do 5 kroku. Gdyby zdanie 4.3 miaÅ‚o strukturÄ™ zdania z kroku 1 lub 3 wówczas przejÅ›cie do kroku 5 nastÄ…piÅ‚oby natychmiast. PrzejÅ›cie do dowolnego kroku umożliwia instrukcja skoku. Zmienne systemowe Tabela 5 symbol ilość bitów opis możliwe dziaÅ‚ania i. 1 one bit input AND, OR, EXOR, N input word [0..2] bit [0..7] iw 8 input word LOAD, mathematical word number [0..2] relations o. 1 one bit output AND, OR, EXOR, N, output word [0..1] SET, RESET bit [0..7] ow 8 output word LOAD, mathematical word number [0..1] relations f. 1 one bit of memory AND, OR, EXOR, N, memory word [0..15] SET, RESET bit [0..7] fw 16 memory word LOAD, mathematical word number [0..15] relations t 1 timer flag AND, OR, EXOR, N, number of timer [0..31] SET, RESET tp 16 timer set value LOAD number of timer [0..31] tw 16 timer actual value LOAD, mathematical number of timer [0..31] relations c 1 counter flag AND, OR, EXOR, N, number of counter [0..15] SET, RESET cp 16 counter set value LOAD number of timer [0..15] cw 16 counter actual value LOAD, mathematical number of timer [0..15] relations r 16 register LOAD, mathematical number of register [0..63] relations v -- direct argument LOAD System umożliwia użycie wÅ‚asnych nazw zmiennych systemowych. Wymaga to zapisu powiÄ…zaÅ„ w tablicy alokacji. Instrukcje Instrukcje Festo-INTERPRETER można podzielić na nastÄ™pujÄ…ce grupy: 1. Instrukcje tworzÄ…ce strukturÄ™ programu. 2. Instrukcje logiczne tworzÄ…ce część warunkowÄ… zdania logicznego, których argumentami mogÄ… być zmienne binarne jak i wielobitowe. 3. Instrukcje porównania zmiennych wielobitowych tworzÄ…ce również część warunkowÄ…. 4. Rozkazy zmiany stanu zmiennych binarnych lub wartoÅ›ci zmiennych wielobitowych, wystÄ™pujÄ…ce w części wykonawczej zdania logicznego. Zmiana stanu bitu nastÄ™puje przy użyciu jednej instrukcji, zmiana argumentu wielobitowego wymaga dwóch instrukcji. W skÅ‚ad zÅ‚ożonych rozkazów zmiany wartoÅ›ci mogÄ… wchodzić operacje matematyczne lub instrukcje konwersji. 5. Rozkazy obsÅ‚ugi procedury - maksymalnie może być 8 procedur numerowanych 0-7 6. Rozkaz skoku. Szczegółowy opis instrukcji zawiera tabela 6. Tabela 6 mnemonik zmienna część zdania dziaÅ‚anie STEP number fundamental instructions of IF, AWL language syntax THEN, OTHRW AND i, o, f, t, c, r condition logical and OR logical or N logical not EXOR logical exclusive or ( ) >, <, >=, <=, =, r, cw, cp, tw, tp, condition mathematical relations <> iw, ow, fw, v SET o, f, t, c execution set bit RESET reset bit LOAD TO r, v, cp, cw, tp, execution load multibit value to destination tw, fw, iw, ow variable +, -, *, /, (, ) r, cw, cp, v, tw, execution mathematical operations tp, fw, iw, ow DEC iw, ow, fw, tw, execution decrement INC tp, cw, cp, r increment ROR rotation right ROL rotation left SHR shift right SHL shift left BID transcoding binary to BCD DEB trancoding BCD to binary SWAP byte changing CPL x = not x + 1 INV inversion CMP no of procedure execution jump to user procedure [0..7] WITH parameters with parameters [p0..p15] NOP condition/exec. no operating JMP TO step no execution jump to program step Operacje timer-licznik W systemie FPC 101 istnieje możliwość odmierzania jednoczeÅ›nie i niezależnie 32 czasów. Timery dziaÅ‚ajÄ… z podstawÄ… czasu 0.01 sek. i umożliwiajÄ… odmierzanie czasu do 655.32 sek. każdy. W systemie wyróżniono 16 rejestrów do wykorzystania jako liczniki liczÄ…ce w przód lub w tyÅ‚ Zarówno timery jak i liczniki zawierajÄ… rejestr wartoÅ›ci zadanej do inicjacji ukÅ‚adu, rejestr wartoÅ›ci bieżącej oraz flagÄ™ informujÄ…cÄ… o stanie ukÅ‚adu. PrzykÅ‚ad: Odmierzenie 1 sek opóznienia: STEP 10 THEN LOAD V100 load the value 100 TO TP12 to set value register of 12th timer SET T12 start timer 12 STEP 20 IF N T12 if T12=0 timer counted down THEN NOP Powtórzenie pÄ™tli programu 3 razy (zliczanie wstecz): THEN LOAD V3 load the value 3 TO CW3 to actual value register of 3rd counter " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " body of loop THEN DEC CW3 decrement value IF N C3 if counter finished THEN NOP Powtórzenie pÄ™tli 3 razy (zliczanie w przód): THEN LOAD V3 load the value 3 TO CP3 to set value register of 3rd counter LOAD V0 load the value 0 TO CW3 to actual value register " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " body of loop THEN INC CW3 increment value IF N C3 if counter finished THEN NOP Procedury użytkownika System umożliwia zdefiniowanie max. 8 procedur użytkownika. Uaktywnienie procedury powoduje zatrzymanie wykonania programu, wykonanie instrukcji zapisanych w module i wznowienie programu z miejsca zatrzymania. Nie ma możliwoÅ›ci wywoÅ‚ania procedury z innej procedury ani z tej samej. Procedury mogÄ… być parametryzowane (max. 16 argumentów) lub nie. W celu zdefiniowania procedury należy wywoÅ‚ać edytor z nastÄ™pujÄ…cymi ustawieniami (program/module - B, program number - 0..7). Każdy moduÅ‚ ma niezależnÄ… numeracjÄ™ kroków a w przypadku procedur parametryzowanych zmienne zapisywane sÄ… w komórkach: FU32 - FU47. Na przykÅ‚ad procedura numer 0 odmierzania zadanego odcinka czasu ma postać: STEP 10 THEN LOAD FU32 load first parameter value TO TP0 to set value register of 0 timer SET T0 start timer 0 STEP 20 IF N T0 if T0=0 timer counted down THEN NOP WywoÅ‚anie tej procedury dla czasu 1 sekunda ma postać: THEN CMP 0 call user defined module 0 WITH V100 with first argument 100 System manipulatora Festo Stanowisko laboratoryjne zÅ‚ożone jest z komputera klasy PC jako konsoli operatorskiej, programowalnego sterownika przemysÅ‚owego, części mechanicznej manipulatora, zespoÅ‚u zaworów i zasilaczy. Opis poÅ‚Ä…czeÅ„ ukÅ‚adu manipulatora ze sterownikiem przedstawia tabela 7, zaÅ› schemat poÅ‚Ä…czeÅ„ i sterowania silnika DC rys. 23. Tabela 7 Element ukÅ‚adu Adres sterownika Uwagi o0.0 o0.1 ruchu w osi X) o0.2 rozkaz set komora grórna o0.3 rozkaz reset komora dolna o0.4 reset/set - dwie pozycje skrajne zawór przyssawki o0.5 rozkaz set diody sygnalizacyjne (cz. - ziel.) o1.0 - o1.4 rozkaz set czujnik prawy na osi X i1.0 i1.1 dla wygenerowania akcji typu STOP dla i1.2 silnika DC czujnik lewy na osi X i1.3 czujnik osi Y i1.4 Czujniki indukcyjne (lewy - prawy) i0.6 - i0.7 detekcja elementu i1.5 - i1.7 + U _zas (reset 0.0) P1=0 Off (set 0.0) P1=1 On (reset 0.1) P2=0 Left P2=1 Right (set 0.1) I 0V Rys. 23 Obwód sterowania silnika DC