{"id":198,"date":"2010-08-29T00:25:58","date_gmt":"2010-08-28T23:25:58","guid":{"rendered":"http:\/\/www.k2site.pl\/?page_id=198"},"modified":"2012-09-19T23:36:54","modified_gmt":"2012-09-19T22:36:54","slug":"scara-control-uklad-sterowania-zrobotyzowanego-stanowiska-pomiarowego-ivax-scara","status":"publish","type":"page","link":"http:\/\/www.k2site.pl\/?page_id=198","title":{"rendered":"SCARA Control &#8211;  Uk\u0142ad sterowania zrobotyzowanego stanowiska pomiarowego IVAX-SCARA"},"content":{"rendered":"<p><strong>Spis tre\u015bci<\/strong><\/p>\n<ol>\n<li><a href=\"#wst\">Wst\u0119p<\/a><\/li>\n<li><a href=\"#zal\">Za\u0142o\u017cenia projektowe<\/a><\/li>\n<li><a href=\"#prg\">Program steruj\u0105cy &#8211; SCARA Control<\/li>\n<li><a href=\"#int\">Interpolator ruchu<\/li>\n<li><a href=\"#ius\">Interfejs u\u017cytkownika<\/li>\n<li><a href=\"#lng\">J\u0119zyka programowania robota<\/li>\n<li><a href=\"#swk\">Program SCARA Control w dzia\u0142aniu<\/li>\n<li><a href=\"#ust\">Uk\u0142ad sterowania<\/li>\n<li><a href=\"#pst\">Program steruj\u0105cy<\/li>\n<li><a href=\"#pcb\">P\u0142ytka steruj\u0105ca<\/li>\n<li><a href=\"#dcd\">Sterownik silnika DC<\/li>\n<li><a href=\"#iob\">Interfejs wej\u015b\u0107\/wyj\u015b\u0107<\/li>\n<li><a href=\"#str\">Gotowy sterownik<\/li>\n<li><a href=\"#uwk\">Uk\u0142ad sterowanie podczas pracy<\/li>\n<\/ol>\n<p><BR><\/p>\n<p><a name=\"wst\"><\/a><strong>Wst\u0119p<\/strong><BR><BR><\/p>\n<p>Poniewa\u017c studiowa\u0142em na wydziale Mechanicznym Politechniki \u0141\u00f3dzkiej w trakcie studi\u00f3w zrobi\u0142em wiele projekt\u00f3w zwi\u0105zanych z konstrukcjami mechanicznymi. Stoj\u0105c przed wyborem tematu na prac\u0119 dyplomow\u0105 wiedzia\u0142em, \u017ce sprowadzi si\u0119 on do projektu jakiego\u015b elementu obrabiarki lub robota. Na szcz\u0119\u015bcie za spraw\u0105 mojego promotora oraz zainteresowa\u0144 programowaniem jak i elektronik\u0105 dosta\u0142em propozycj\u0119 zbudowania od podstaw nowego uk\u0142adu sterowania do znajduj\u0105cego si\u0119 na uczelni modelu zrobotyzowanego stanowiska pomiarowego. Poniewa\u017c nie jestem zwolennikiem robienia odtw\u00f3rczej pracy kt\u00f3ra p\u00f3\u017aniej idzie w niepami\u0119\u0107 i le\u017cy latami w teczce, podj\u0105\u0142em si\u0119 tego wyzwania. Jak si\u0119 p\u00f3\u017aniej okaza\u0142o nie by\u0142 to \u0142atwy projekt ale po dw\u00f3ch latach ci\u0119\u017ckiej pracy, zako\u0144czy\u0142 si\u0119 pe\u0142nym sukcesem przynosz\u0105c wiele do\u015bwiadczenia.<BR><BR><\/p>\n<p><a name=\"zal\"><\/a><strong>Za\u0142o\u017cenia projektowe<\/strong><BR><BR><\/p>\n<p>Opracowany system programowania s\u0142u\u017cy do obs\u0142ugi zrobotyzowanego gniazda pomiarowego IVAX-SCARA. Opiera si\u0119 o robota przemys\u0142owego SCARA, trzy podajniki ta\u015bmowe oraz stanowisko pomiarowe. Obiektem manipulacji jest komplet tulejek o \u015brednicy \u00d8 24 wykonanych z tolerancj\u0105 ujemn\u0105 oraz dodatni\u0105. Zadaniem pierwszego i drugiego podajnika jest doprowadzanie badanych element\u00f3w w obszar pracy robota, nast\u0119pnie za pomoc\u0105 manipulatora s\u0105 one umieszczane na stanowiskach pomiarowych. Na podstawie \u015brednicy kwalifikowane s\u0105 jako elementy \u201edobre\u201d lub o zbyt ma\u0142ej lub du\u017cej \u015brednicy. Detale zakwalifikowane jako \u201edobre\u201d przemieszczane s\u0105 na trzeci podajnik, kt\u00f3ry odprowadza je poza obszar pracy manipulatora.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/scara.jpg\" alt=\"\" title=\"scara\" width=\"550\" height=\"399\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Robot IVAX-SCARA wraz z podajnikami i stanowiskiem pomiarowym zamodelowany w programie Solid Works.<\/p>\n<p><BR><\/p>\n<p>Poniewa\u017c pierwotny uk\u0142ad sterowania robota by\u0142 nieodwracalnie uszkodzony, zosta\u0142 on zast\u0105piony nowym uk\u0142adem wykorzystuj\u0105cy nowoczesn\u0105 technologi\u0119 mikroprocesorow\u0105 i komputerow\u0105. Sk\u0142ada si\u0119 on z programu steruj\u0105cego dla komputera PC kt\u00f3ry umo\u017cliwia symulowanie pracy robota, napisanie, przetestowanie i uruchomienie programu<BR><BR><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/detal.jpg\" alt=\"\" title=\"detal\" width=\"550\" height=\"251\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Obiekt manipulacji robota.<\/p>\n<p><BR><\/p>\n<p>steruj\u0105cego robotem, oraz r\u0119czne sterowanie zar\u00f3wno w oknie symulacji jak i samym robotem. Ponadto komunikuje si\u0119 on ze sterownikiem robota. Jest on oparty o mikrokontrolerze Stellaris\u00ae LM3S2965. Do jego zada\u0144 nale\u017cy odbieranie i rozdzielanie<BR><BR><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/schemat1.jpg\" alt=\"\" title=\"schemat1\" width=\"550\" height=\"373\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Og\u00f3lna struktura uk\u0142adu sterowania.<\/p>\n<p><BR><\/p>\n<p>zada\u0144 dostarczonych z programu na komputerze PC, tj. przemieszczanie poszczeg\u00f3lnych nap\u0119d\u00f3w, za\u0142\u0105czanie podajnik\u00f3w, odczyt informacji z czujnik\u00f3w itd. Nowy uk\u0142ad sterowania korzysta enkoder\u00f3w oryginalnie zainstalowanych w robocie. <BR><BR><\/p>\n<p><a name=\"prg\"><\/a><strong>Program steruj\u0105cy &#8211; SCARA Control<\/strong><BR><BR><\/p>\n<p>Program SCARA Control to program s\u0142u\u017c\u0105cy do sterowania, symulacji i programowania off-line robota IVAX-SCARA. Powsta\u0142 on specjalnie na potrzeby tego robota w j\u0119zyku Borland C++. Jego g\u0142\u00f3wne cechy to:<\/p>\n<ul>\n<li>Model przestrzenny robota wraz z wsp\u00f3\u0142pracuj\u0105cymi z nim urz\u0105dzeniami.\n<li>Symulacja pracy robota.\n<li>Programowanie robota off-line z wykorzystaniem \u015brodowiska 3D.\n<li>Testowanie program\u00f3w do sterowania automatycznego w \u015brodowisku 3D.\n<li>Sterowanie robotem r\u0119czne i automatyczne w trybie symulacji.\n<li>Sterowanie robotem r\u0119czne i automatyczne w trybie pracy z robotem.\n<li>Komunikacja z urz\u0105dzeniami wsp\u00f3\u0142pracuj\u0105cymi z robotem.\n<\/ul>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/scara_cnt.jpg\" alt=\"\" title=\"scara_cnt\" width=\"550\" height=\"432\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Og\u00f3lny widok interfejsu u\u017cytkownika programu &#8222;SCARA Control&#8221;.<\/p>\n<p><BR><\/p>\n<p>Ponadto program przystosowany jest do wsp\u00f3\u0142pracy z nowym uk\u0142adem sterowania robotem. Za pomoc\u0105 interfejsu USB do sterownika robota wysy\u0142ane s\u0105 informacje dotycz\u0105ce kolejnych pozycji nap\u0119d\u00f3w, steruj\u0105ce prac\u0105 robota jak i urz\u0105dzeniami wsp\u00f3\u0142pracuj\u0105cymi. R\u00f3wnie\u017c za pomoc\u0105 interfejsu USB, r\u00f3wnolegle podczas wysy\u0142ania, odbierane s\u0105 ze sterownika informacje z czujnik\u00f3w zainstalowanych w robocie, na podajnikach i czujnikach rozmiaru.<BR><BR><\/p>\n<p>Praca w trybach: \u201eSymulacja\u201d i \u201eRobot + Symulacja\u201d:<\/p>\n<ul>\n<li>Symulacja &#8211; podczas kt\u00f3rej, sam robot jest nieaktywny, a jego prac\u0119 mo\u017cemy obserwowa\u0107 jedynie na ekranie monitora.\n<li>Robot + Symulacja &#8211; w trybie tym ka\u017cda komenda wydana w programie powoduje zar\u00f3wno ruch robota w symulacji jak i samego robota.\n<\/ul>\n<p><BR><\/p>\n<p>Praca w trybach sterowania: \u201eR\u0119czny\u201d i \u201eAutomatyczny\u201d:<\/p>\n<ul>\n<li>Sterowanie r\u0119czne dost\u0119pne jest zar\u00f3wno w trybach \u201eSymulacja\u201d jak i \u201eSymulacja + Robot\u201d, umo\u017cliwia przemieszczanie manipulatora w przestrzeni zar\u00f3wno przy sterowaniu k\u0105towym jak i wsp\u00f3\u0142rz\u0119dno\u015bciowym z pr\u0119dko\u015bciami od 25% do 200% (w trybie Symulacja + Robot maksymalnie 100%). Tryb ten umo\u017cliwia te\u017c na pobieranie aktualnych warto\u015bci po\u0142o\u017cenia poszczeg\u00f3lnych osi robota prosto do okna programowania. Tryb ten pozwala te\u017c na za\u0142\u0105czanie podajnik\u00f3w ta\u015bmowych.\n<li>Sterowanie automatyczne, pozwala na wykonanie wcze\u015bniej napisanego programu steruj\u0105cego. Program mo\u017cna uruchomi\u0107 w trybie automatycznym, krok po kroku, a tak\u017ce zatrzyma\u0107 w dowolnym momencie pracy a nast\u0119pnie kontynuowa\u0107 lub uruchomi\u0107 od pocz\u0105tku.\n<\/ul>\n<p><BR><\/p>\n<p>Programowanie robota odbywa si\u0119 za pomoc\u0105 okna \u201eEdytor programu\u201d. J\u0119zyk programowania obs\u0142uguje szereg komend pozwalaj\u0105cych na sterowanie robotem, tworzenie logiki programu, odczyt warto\u015bci z czujnik\u00f3w zewn\u0119trznych jak i sterowanie urz\u0105dzeniami wsp\u00f3\u0142pracuj\u0105cymi z robotem.<BR><BR><\/p>\n<p>Struktur\u0119 program SCARA Control mo\u017cna podzieli\u0107 na pi\u0119\u0107 podstawowych modu\u0142\u00f3w:<\/p>\n<ul>\n<li>G\u0142\u00f3wne okno programu SCARA Control.\n<li>P\u0119tla g\u0142\u00f3wna.\n<li>Edytor programu wraz z analizatorem sk\u0142adani.\n<li>Panel sterowania.\n<li>Okno symulacji.\n<\/ul>\n<p><BR><\/p>\n<p>G\u0142\u00f3wne okno programu jest elementem wi\u0105\u017c\u0105cym wszystkie pozosta\u0142e modu\u0142y. Znajduj\u0105 si\u0119 w nim wszystkie podstawowe elementy programu takie jak menu g\u0142\u00f3wne, pasek stanu. W oknie tym znajduj\u0105 si\u0119 algorytmy odpowiedzialne za wczytywanie i zapis plik\u00f3w w edytorze programu, a tak\u017ce obs\u0142uga wydruku napisanego programu.<BR><BR><\/p>\n<p>Najwa\u017cniejszym elementem ca\u0142ego programu jest p\u0119tla g\u0142\u00f3wna (modu\u0142 niewidoczny dla u\u017cytkownika), znajduj\u0105 si\u0119 w niej najwa\u017cniejsze algorytmy odpowiedzialne za sterowanie robotem. Za pomoc\u0105 powi\u0105zanego z p\u0119tl\u0105 g\u0142\u00f3wn\u0105 timer\u2019a, wszystkie znajduj\u0105ce si\u0119 wewn\u0105trz funkcje realizowane s\u0105 sto razy na sekund\u0119. Tyczy si\u0119 to zar\u00f3wno interpolator\u00f3w jak i komunikacji programu ze sterownikiem. Rozwi\u0105zanie takie pozwala na p\u0142ynne i nieprzerwane generowanie trajektorii ruchu.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/schemat2.jpg\" alt=\"\" title=\"schemat2\" width=\"550\" height=\"437\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Struktura programu &#8222;SCARA Control&#8221;.<\/p>\n<p><BR><\/p>\n<p>Program steruj\u0105cy dla robota po napisaniu w module edytora i wci\u015bni\u0119ciu przycisku test zostaje przes\u0142any do analizatora sk\u0142adni. Po analizie zostaje przetworzony na j\u0119zyk zrozumia\u0142y dla programu SCARA Control, a nast\u0119pnie zostaje przekazany do p\u0119tli g\u0142\u00f3wnej w celu jego realizacji.<br \/>\nZa pomoc\u0105 modu\u0142u panelu sterowania istnieje mo\u017cliwo\u015b\u0107 komunikacji u\u017cytkownika z robotem. Wszystkie przyciski znajduj\u0105ce si\u0119 na nim po za\u0142\u0105czeniu przekazuj\u0105 odpowiedni\u0105 informacj\u0119 do p\u0119tli g\u0142\u00f3wnej gdzie s\u0105 realizowane i wysy\u0142ane w odpowiedniej formie do sterownika. Modu\u0142 ten pe\u0142ni te\u017c rol\u0119 informacyjn\u0105, informuje o b\u0142\u0119dach oraz pokazuje aktualne po\u0142o\u017cenie chwytaka manipulatora.<BR><BR><\/p>\n<p>Okno symulacji wy\u015bwietla na ekranie monitora model robota wraz z jego scen\u0105. Wy\u015bwietlanie obiekt\u00f3w zrealizowane jest przy wykorzystaniu bibliotek OpenGL. Dane o po\u0142o\u017ceniach poszczeg\u00f3lnych element\u00f3w robota przekazywane s\u0105 z interpolatora i rysowane w oknie symulacji. Na podstawie tych samych danych porusza si\u0119 rzeczywisty robot.<BR><BR><\/p>\n<p><a name=\"int\"><\/a><strong>Interpolator ruchu<\/strong><BR><BR><\/p>\n<p>Na potrzeby sterowania robota IVAX-SCARA program steruj\u0105cy SCARA Control posiada cztery interpolatory, kt\u00f3re generuj\u0105 przemieszczenia dla ka\u017cdego z nap\u0119d\u00f3w sto razy na sekund\u0119. Zastosowany interpolator typu PTP z trapezoidaln\u0105 zmian\u0105 pr\u0119dko\u015bci ruchu generuje trajektori\u0119 ze stanu pocz\u0105tkowego gdzie przyspieszenie i pr\u0119dko\u015b\u0107 s\u0105 r\u00f3wne zero, do stanu ko\u0144cowego, kt\u00f3ry osi\u0105gany jest r\u00f3wnie\u017c z zerow\u0105 pr\u0119dko\u015bci\u0105 i przyspieszeniem.<BR><BR><\/p>\n<p>W ka\u017cdym przemieszczeniu mo\u017cna wyodr\u0119bni\u0107 trzy fazy okre\u015blane przez przyspieszenie w nich wyst\u0119puj\u0105ce:<\/p>\n<ol>\n<li>Maksymalne przyspieszenie, liniowo narastaj\u0105ca pr\u0119dko\u015b\u0107, czas trwania od t0 do t1.\n<li>Przyspieszenie r\u00f3wne zero, sta\u0142\u0105 pr\u0119dko\u015b\u0107, czas trwania od t1 do t2.\n<li>Maksymalne op\u00f3\u017anienie, liniowo malej\u0105ca pr\u0119dko\u015b\u0107, czas trwania od t2 do t3.\n<\/ol>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/wyk1.jpg\" alt=\"\" title=\"wyk1\" width=\"550\" height=\"394\" border=\"2\" \/><\/p>\n<p style=\"text-align: center;\">Wykres przebiegu  pr\u0119dko\u015bci i przyspieszenia.<\/p>\n<p><BR><\/p>\n<p>Istnieje sytuacja gdy droga do przebycia jest na tyle kr\u00f3tka, \u017ce nie ma mo\u017cliwo\u015bci osi\u0105gni\u0119cia \u017c\u0105danej pr\u0119dko\u015bci ruchu. W tej sytuacji zostaje wyliczona nowa pr\u0119dko\u015b\u0107 maksymalna mniejsza od zadanej, a czas  trwania drugiej fazy jest r\u00f3wny zero (t1 = t2).<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/wyk2.jpg\" alt=\"\" title=\"wyk2\" width=\"463\" height=\"324\" border=\"2\" \/><\/p>\n<p style=\"text-align: center;\">Wykres pr\u0119dko\u015bci i przyspieszenia (przypadek szczeg\u00f3lny).<\/p>\n<p><BR><\/p>\n<p>Przedstawiony powy\u017cej algorytm interpolacji zosta\u0142 zastosowany do przemieszczenia zar\u00f3wno liniowego jak i k\u0105towego. W przypadku przemieszczenia liniowego interpolacja odbywa si\u0119 w trzech osiach x, y, z. W ruchu k\u0105towym przemieszczenie dla ka\u017cdego nap\u0119du liczone jest osobno.<BR><BR><\/p>\n<p><a name=\"ius\"><\/a><strong>Interfejs u\u017cytkownika<\/strong><BR><BR><\/p>\n<p>W programie SCARA Control mo\u017cna wyr\u00f3\u017cni\u0107 nast\u0119puj\u0105ce elementy interfejsu u\u017cytkownika:<\/p>\n<ul>\n<li>Menu g\u0142\u00f3wne.\n<li>Okno \u201eEdytor programu\u201d.\n<li>Okno \u201eWidok 3d\u201d.\n<li>Okno \u201ePanel sterowania\u201d.\n<li>Pasek statusu.\n<\/ul>\n<p><BR><\/p>\n<p>Menu g\u0142\u00f3wne, znajduj\u0105 si\u0119 w nim wszystkie g\u0142\u00f3wne opcje i funkcje u\u0142atwiaj\u0105ce pisanie program\u00f3w jak i sterowanie samego robota.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/sc_menu.jpg\" alt=\"\" title=\"sc_menu\" width=\"550\" height=\"57\" border=\"2\" \/><\/p>\n<p style=\"text-align: center;\">Menu g\u0142\u00f3wne.<\/p>\n<p><BR><\/p>\n<p>Poni\u017cej przedstawiono poszczeg\u00f3lne komendy menu.<BR><br \/>\nMenu \u201ePlik\u201d:<\/p>\n<ul>\n<li>Nowy Program &#8211; czy\u015bci aktualne okno \u201eEdytora programu\u201d.\n<li>Otw\u00f3rz program &#8211; wczytanie wcze\u015bniej zapisanego programu.\n<li>Zapisz program &#8211; zapisuje aktualnie napisany program do pliku.\n<li>Drukuj program &#8211; drukuje napisany program.\n<li>Zako\u0144cz &#8211; zamyka program SCARA Control.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eEdycja\u201d:<BR><\/p>\n<ul>\n<li>Cofnij &#8211; cofa ostania operacje w oknie edytora.\n<li>Wytnij &#8211; wycina zaznaczony fragment programu do schowka.\n<li>Kopiuj &#8211; kopiuje zaznaczony fragment programu do schowka.\n<li>Wklej &#8211; wkleja zawarto\u015b\u0107 schowka.\n<li>Zaznacz wszystko &#8211; zaznacza cala program.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eTryb pracy\u201d:<BR><\/p>\n<ul>\n<li>R\u0119czny &#8211; r\u0119czne sterowanie robotem.\n<li>Automatyczny &#8211; automatyczne sterowanie robotem.\n<li>Symulacja &#8211; praca w trybie symulacji.\n<li>Symulacja + robot &#8211; praca w trybie sterowania robotem wraz z symulacj\u0105.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eWidok 3d\u201d:<BR><\/p>\n<ul>\n<li>Pole pracy &#8211; wy\u015bwietla pole pracy robota.\n<li>Uk\u0142ad wsp\u00f3\u0142rz\u0119dnych &#8211; wy\u015bwietla uk\u0142ad wsp\u00f3\u0142rz\u0119dnych dla robota.\n<li>Punkty referencyjne &#8211; wy\u015bwietla punkty referencyjne w symulacji.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eSCARA uControl\u201d<BR><\/p>\n<ul>\n<li>Po\u0142\u0105cz &#8211; nawi\u0105zuje po\u0142\u0105czenie z uk\u0142adem sterowania.\n<li>Port COM &#8211; wyb\u00f3r wirtualnego portu COM kt\u00f3rego pod\u0142\u0105czony jest uk\u0142ad sterowania.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eRobot\u201d<BR><\/p>\n<ul>\n<li>Bazuj &#8211; bazowanie robota (symulacji i manipulatora).\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201eOkno\u201d<BR><\/p>\n<ul>\n<li>Domy\u015blne ustawienia &#8211; przywraca oryginalne ustawienia wielko\u015bci i pozycji okien.\n<\/ul>\n<p><BR><\/p>\n<p>Menu \u201ePomoc\u201d<BR><\/p>\n<ul>\n<li>SCARA Control pomoc &#8211; pomoc programu SCARA Control.\n<li>O programie SCARA &#8211; Informacje o programie.\n<\/ul>\n<p><BR><\/p>\n<p>Okno \u201eEdytor programu\u201d, s\u0142u\u017cy do wprowadzania i edycji programu steruj\u0105cego.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/sc_edytor.jpg\" alt=\"\" title=\"sc_edytor\" width=\"550\" height=\"268\" border =\"2\"><\/p>\n<p style=\"text-align: center;\">Edytor programu.<\/p>\n<p><BR><\/p>\n<ol>\n<li>Okno do edycji programu &#8211; wprowadzania i edycji programu.\n<li>Przycisk \u201eTest programu\u201d &#8211; sprawdzenia poprawno\u015bci programu.\n<li>Selektor poboru wsp\u00f3\u0142rz\u0119dnych &#8211; Pozwala na wyb\u00f3r formatu pobieranych wsp\u00f3\u0142rz\u0119dnych (k\u0105towych T1, T2, T3, z lub liniowych x, y, z, T3).\n<li>Przycisk \u201ePobierz pozycj\u0119\u201d &#8211; Pobiera ustalon\u0105 pozycj\u0119 do okna edycji programu.\n<li>Numer linii \u2013 informacja w kt\u00f3rej linii znajduje si\u0119 kursor.\n<li>Informacje o programie w edytorze.\n<\/ol>\n<p><BR><\/p>\n<p>Okno \u201eWidok 3d\u201d, przedstawia model robota wraz z jego scen\u0105.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/sc_3d.jpg\" alt=\"\" title=\"sc_3d\" width=\"550\" height=\"431\" border =\"2\"><\/p>\n<p style=\"text-align: center;\">Widok 3d.<\/p>\n<p><BR><\/p>\n<p>Okno to przedstawia przygotowan\u0105 scen\u0119 zawieraj\u0105c\u0105 model robota IVAX-SCARA wraz z innymi obiektami wsp\u00f3\u0142pracuj\u0105cymi z robotem. Obs\u0142uga \u201eOkna widok 3d\u201d:<\/p>\n<ul>\n<li>Lewy przycisk myszy wci\u015bni\u0119ty na oknie &#8211; ruch myszy g\u00f3ra\/d\u00f3\u0142 lewo\/prawo obr\u00f3t sceny.\n<li>Prawy przycisk myszy wci\u015bni\u0119ty na oknie &#8211; ruch myszy g\u00f3ra\/d\u00f3\u0142 powi\u0119kszenie\/pomniejszenie sceny, ruch lewo\/prawo przesuni\u0119cie sceny.\n<\/ul>\n<p><BR><\/p>\n<p>Okno \u201ePanel sterowania\u201d , pozwala na sterowanie ruchami robota.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/sc_panel.jpg\" alt=\"\" title=\"sc_panel\" width=\"550\" height=\"136\" border =\"2\"><\/p>\n<p style=\"text-align: center;\">Panel sterowania.<\/p>\n<p><BR><\/p>\n<p>Poni\u017cej przedstawiono wszystkie funkcje panelu sterowania.<BR><br \/>\nSterowanie r\u0119czne:<BR><\/p>\n<ul>\n<li>Tryb sterowania\n<ul>\n<li>K\u0105towe &#8211; wyb\u00f3r trybu sterowania k\u0105towego.\n<li>Wsp\u00f3\u0142rz\u0119dno\u015bciowe &#8211; wyb\u00f3r sterowania wsp\u00f3\u0142rz\u0119dno\u015bciowego.<\/ul>\n<li>Teta 1 \/ X &#8211; sterowanie k\u0105tek T1 lub w osi X w zale\u017cno\u015bci od trybu.\n<li>Teta 2 \/ Y &#8211; sterowanie k\u0105tek T2 lub w osi Y w zale\u017cno\u015bci od trybu.\n<li>Teta 3 &#8211; sterowanie k\u0105tek T3.\n<li>Z &#8211; sterowanie w osi Z.\n<li>Chwytak: Otwarty &#8211; otwarcie lub zamkni\u0119cie chwytaka.\n<li>Pr\u0119dko\u015b\u0107 25% &#8211; 200% &#8211; ustawienie pr\u0119dko\u015bci ruchu od 25% do 200% (do 100% w trybie Symulacja + Robot).\n<li>Podajnik\n<ul>\n<li>Podajnik 1 &#8211; uruchomienie\/zatrzymanie podajnika 1.\n<li>Podajnik 2 &#8211; uruchomienie\/zatrzymanie podajnika 2.\n<li>Podajnik 3 &#8211; uruchomienie\/zatrzymanie podajnika 3.<\/ul>\n<\/ul>\n<p><BR><\/p>\n<p>Sterowanie automatyczne:<BR><\/p>\n<ul>\n<li>Uruchomienie programu &#8211; uruchomienie programu.\n<li>Uruchomienie programu krok po kroku &#8211; uruchomienie programu w trybie krok po kroku.\n<li>Krok w prz\u00f3d &#8211; wykonanie jednej komendy z programu.\n<li>Przerwij programu &#8211; zatrzymanie wykonywania programu.\n<li>Wczytaj program &#8211; wczytanie programu z edytora.\n<li>Aktualna komenda &#8211; aktualnie realizowana komenda.\n<li>Aktualny krok &#8211; aktualny krok programu.\n<li>Ilo\u015b\u0107 krok\u00f3w &#8211; ilo\u015b\u0107 wszystkich krok\u00f3w w programie.\n<\/ul>\n<p><BR><\/p>\n<p>Symulacja (dost\u0119pne tylko w trybie symulacji):<BR><\/p>\n<ul>\n<li>CPI &#8211; za\u0142\u0105czenie czujnika 1 na podajniku.\n<li>CPII &#8211; za\u0142\u0105czenie czujnika 2 na podajniku.\n<li>CPIII &#8211; za\u0142\u0105czenie czujnika 3 na podajniku.\n<li>CPIV &#8211; za\u0142\u0105czenie czujnika 4 na podajniku.\n<li>CRI &#8211; za\u0142\u0105czenie czujnika rozmiaru 1.\n<li>CRII &#8211; za\u0142\u0105czenie czujnika rozmiaru 2.\n<\/ul>\n<p><BR><\/p>\n<p>Aktualne po\u0142o\u017cenie:<BR><\/p>\n<ul>\n<li>Wy\u015bwietla informacj\u0119 o k\u0105tach i wsp\u00f3\u0142rz\u0119dnych chwytaka w przestrzeni.\n<\/ul>\n<p><BR><\/p>\n<p>Wej\u015bcia\/wyj\u015bcia:<BR><\/p>\n<ul>\n<li>Wy\u015bwietla informacj\u0119 o stanach wej\u015b\u0107 i wyj\u015b\u0107 uk\u0142adu sterowania.\n<\/ul>\n<p><BR><\/p>\n<p>Status:<BR><\/p>\n<ul>\n<li>Zielone \u015bwiat\u0142o &#8211; informuje o gotowo\u015bci robota do pracy.\n<li>Czerwone \u015bwiat\u0142o &#8211; informuje o b\u0142\u0119dzie.\n<\/ul>\n<p><BR><\/p>\n<p>Zatrzymanie awaryjne<BR><\/p>\n<ul>\n<li>STOP &#8211; zatrzymanie pracy uk\u0142adu sterowania (Aby przywr\u00f3ci\u0107 dzia\u0142anie nale\u017cy uruchomi\u0107 ponownie program).\n<\/ul>\n<p><BR><\/p>\n<p>Pasek statusu.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/sc_pstanu.jpg\" alt=\"\" title=\"sc_pstanu\" width=\"550\" height=\"13\" border =\"2\"><\/p>\n<p style=\"text-align: center;\">Pasek stanu.<\/p>\n<p><BR><\/p>\n<p>Pasek stanu pe\u0142ni role informacyjn\u0105, wy\u015bwietlane s\u0105 na nim informacje o aktualnym trybie pracy, status programu SCARA Control oraz informacje o po\u0142\u0105czeniu z uk\u0142adem sterowania.<BR><BR><\/p>\n<p><a name=\"lng\"><\/a><strong>J\u0119zyka programowania robota<\/strong><BR><BR><\/p>\n<p>Na potrzeby nowego uk\u0142adu sterowania robota IVAX-SCARA powsta\u0142 j\u0119zyk programowania oparty o struktur\u0119 j\u0119zyka C. Umo\u017cliwia on zaprogramowanie kolejnych ruch\u00f3w robota, realizacj\u0119 instrukcji warunkowych oraz zapewnia obs\u0142ug\u0119 wej\u015b\u0107 i wyj\u015b\u0107 znajduj\u0105cych si\u0119 w uk\u0142adzie sterowania. Program steruj\u0105cy wprowadzany jest w oknie programu na komputerze PC, mo\u017ce by\u0107 r\u00f3wnie\u017c napisany np. w notatniku systemu Windows. Ka\u017cda wprowadzona komenda musi by\u0107 zako\u0144czona znakiem \u015brednika, komendy mog\u0105 by\u0107 wpisywane w jednej linii. Poni\u017cej przedstawiona jest ca\u0142a sk\u0142adnia j\u0119zyka programowania:<BR><BR><\/p>\n<p><em>\/\/<\/em> &#8211; znak komentarza, po wprowadzeniu tego znaku wszystkie znajduj\u0105ce si\u0119 za nim informacje (a\u017c do znaku nowej lini) nie zostan\u0105 uwzgl\u0119dnione w programie.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/to jest komentarz w programie<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/vmax(100); ta funkcja nie zostanie zrealizowana<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vmax(120); \/\/ta funkcja zostanie zrealizowana komentarz zostanie pomini\u0119ty<\/em><BR><BR><\/p>\n<p><em>vmax (zmienna);<\/em> \u2013 komenda ustala maksymaln\u0105 pr\u0119dko\u015b\u0107 dla ka\u017cdego ruchu znajduj\u0105cego si\u0119 poni\u017cej niej. Dla ruchu liniowego pr\u0119dko\u015b\u0107 wyra\u017cona jest w mm\/s a dla ruchu k\u0105towego stopniach\/s.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vmax(100) \/\/ustalenie pr\u0119dko\u015bci;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmove (0,100, 0, 15); \/\/wykonanie przemieszczenia<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vmax(50); \/\/ustalenie nowej pr\u0119dko\u015bci<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmove (30,0, 0, 0); \/\/wykonanie przemieszczenia z nowa pr\u0119dko\u015bci\u0105<\/em><BR><BR><\/p>\n<p><em>gripper(zmienna);<\/em> \u2013 polecenie zamyka chwytaka dla zmiennej =  1 a otwiera dla 0.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gripper(1); \/\/zamkni\u0119cie chwytaka<\/em><BR><BR><\/p>\n<p><em>feeder(zmienna_1,zmienna_2);<\/em> \u2013 komenda s\u0142u\u017cy do za\u0142\u0105czania podajnik\u00f3w ta\u015bmowych. Zmienna_1 przyjmuje warto\u015bci od 1 do 3 i s\u0142u\u017cy do wyboru podajnika, a zmienna_2 uruchamia nap\u0119d podajnika dla zmienna_2 = 1 a zatrzymuje dla 0.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fedder(1,1); \/\/za\u0142\u0105cz podajnik 1<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fedder(2,0); \/\/zatrzymaj podajnik 2<\/em><BR><BR><\/p>\n<p><em>wait(zmienna);<\/em> \u2013 polecenie czekaj, w zale\u017cno\u015bci od warto\u015bci zmiennej nast\u0119puje zatrzymanie programu na podany czas, dla zmiennej = 1 jest to 10 milisekund.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gripper(1); \/\/zamknij chwytak<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(100); \/\/odczekaj 1 sekund\u0119<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gripper(0); \/\/otw\u00f3rz chwytak<\/em><BR><BR><\/p>\n<p><em>etykieta:<\/em> &#8211; J\u0119zyk programowania przewiduje umieszczanie w programie etykiet, kt\u00f3re s\u0105 znacznikami skoku, tzn. okre\u015blaj\u0105 miejsce w programie do kt\u00f3rego ma by\u0107 wykonany skok. Nazwy etykiet w programie nie mog\u0105 si\u0119 powtarza\u0107.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start: \/\/definicja etykiety start<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmove(10,0,0,5); \/\/wykonanie ruchu<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;koniec: \/\/definicja etykiety koniec<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmove(0,0,30,0); \/\/wykonanie ruchu<\/em><BR><BR>\t<\/p>\n<p><em>goto etykieta;<\/em> &#8211; funkcja skoku do etykiety, umieszczenie tej funkcji w programie powoduje przeskok do podanej nazwy etykiety i kontynuacja wykonywanego programu od danej etykiety. W programie mo\u017ce by\u0107 wi\u0119cej ni\u017c jedno odwo\u0142anie do danej etykiety.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start: \/\/definicja etykiety start<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmove(10,0,0,5); \/\/wykonanie ruchu<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goto start; \/\/skok do etykiety start i realizacja programu od   nast\u0119pnej komendy, w tym wypadku lmove<\/em><BR><BR><\/p>\n<p><em>if (zmienna);<\/em>  &#8211; funkcja warunkowa, w zale\u017cno\u015bci od warto\u015bci zmiennej nast\u0119puje spe\u0142nienie dla zmiennej = 1 lub pomini\u0119cie warunku dla 0. J\u0119zyk programowania przewiduje cztery rodzaje zmiennych dost\u0119pnych dla funkcji if, kt\u00f3re w zale\u017cno\u015bci od stan\u00f3w czujnik\u00f3w robota przyjmuj\u0105 odpowiednio warto\u015bci 1 lub 0, s\u0105 to: <\/p>\n<ul>\n<li>CTI \u2013 sygna\u0142 z czujnika na pierwszym podajniku ta\u015bmowym.\n<li>CTII \u2013 sygna\u0142 z czujnika na drugim podajniku ta\u015bmowym.\n<li>CRI \u2013 sygna\u0142 z pierwszego czujnika rozmiaru.\n<li>CRII \u2013 sygna\u0142 z drugiego czujnika rozmiaru.\n<\/ul>\n<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(CTI) \/\/je\u015bli warto\u015b\u0107 CT1 jest r\u00f3wna zero, wykonaj<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ \/\/komendy pomi\u0119dzy klamrami<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmove(100,0,-5,0);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gripper(1);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<\/em><BR><BR><\/p>\n<p><em>lmove (x, y, z, T3);<\/em>  &#8211; komenda ta realizuje przemieszczenie liniowe w uk\u0142adzie przyrostowym w osiach x, y i z oraz obr\u00f3t chwytaka o k\u0105t T3.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmove(100,0,0,5); \/\/przemie\u015b\u0107 chwytak robota z aktualnej pozycji o 100mm osi x i obr\u00f3\u0107 chwytak o 5 \u00ba<\/em><BR><BR><\/p>\n<p><em>lmovea (x, y, z, T3);<\/em>  &#8211; komenda ta realizuje przemieszczenie liniowe w uk\u0142adzie absolutnym w osiach x, y i z oraz obr\u00f3t chwytaka o k\u0105t T3.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lmovea(0,-30,0,0); \/\/przemie\u015b\u0107 chwytak robota do pozycji 0,  30,0  i obr\u00f3\u0107 chwytak do pozycji 0 \u00ba<\/em><BR><BR><\/p>\n<p><em>dmove (T1, T2, T3, z);<\/em>  &#8211; komenda ta realizuje przemieszczenie k\u0105towe w uk\u0142adzie przyrostowym o k\u0105ty T1, T2 i T3 oraz przemieszczenie w osi z.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmove(0,60,0,0); \/\/zmie\u0144 k\u0105t T2 o 60 \u00ba z aktualnej warto\u015bci<\/em><BR><BR><\/p>\n<p><em>dmovea (T1, T2, T3, z);<\/em>  &#8211; komenda ta realizuje przemieszczenie k\u0105towe w uk\u0142adzie absolutnym o k\u0105ty T1, T2 i T3 oraz przemieszczenie w osi z.<br \/>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dmovea(10,30,0,0); \/\/ustaw k\u0105ty  tak jak w komendzie<\/em><BR><BR><\/p>\n<p><a name=\"swk\"><\/a><strong>Program SCARA Control w dzia\u0142aniu<\/strong><BR><BR><\/p>\n<p style=\"text-align: center;\"><object style=\"height: 344px; width: 425px\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/qNoYq7gv_B0?version=3\"><param name=\"allowFullScreen\" value=\"true\"><param name=\"allowScriptAccess\" value=\"always\"><embed src=\"http:\/\/www.youtube.com\/v\/qNoYq7gv_B0?version=3\" type=\"application\/x-shockwave-flash\" allowfullscreen=\"true\" allowScriptAccess=\"always\" width=\"425\" height=\"344\"><\/object><\/p>\n<p style=\"text-align: center;\">(Polecam ogl\u0105da\u0107 w wersji 720p HD)<\/p>\n<p><BR><\/p>\n<p><a name=\"ust\"><\/a><strong>Uk\u0142ad sterowania<\/strong><BR><BR><\/p>\n<p>Pierwotnie uk\u0142ad sterowania robota IVAX-SCARA oparty by\u0142 o mikroprocesor Zilog Z80. Jedn\u0105 z g\u0142\u00f3wnych przyczyn jego awarii by\u0142a utrata zawarto\u015bci pami\u0119ci EPROM, w kt\u00f3rej zapisany by\u0142 program steruj\u0105cy. Brak mo\u017cliwo\u015bci jego odtworzenia, oraz przestarza\u0142a konstrukcja spowodowa\u0142a i\u017c konieczne by\u0142o opracowanie nowego uk\u0142adu sterowania. W wyniku analizy wsp\u00f3\u0142czesnych mikroprocesorowych uk\u0142ad\u00f3w sterowania u\u017cyty zosta\u0142 mikrokontroler z rdzeniem ARM. Wybrany uk\u0142ad to mikrokontroler Stellaris\u00ae LM3S2965 wraz z p\u0142ytk\u0105 testow\u0105. Wyposa\u017cony jest on w sze\u015b\u0107 modu\u0142\u00f3w PWM do sterowania silnikami, ponadto umo\u017cliwia sprz\u0119towy odczyt po\u0142o\u017cenia z dw\u00f3ch enkoder\u00f3w. By\u0142y to kluczowe parametry kt\u00f3re zadecydowa\u0142y o wyborze tego uk\u0142adu. Pozosta\u0142e jego parametry:<\/p>\n<ul>\n<li>32bitowa architektura RISC.\n<li>Zegar 50Mhz.\n<li>256kb pami\u0119ci flash.\n<li>64kb pami\u0119ci SRAM.\n<li>Sze\u015b\u0107 modu\u0142\u00f3w PWM.\n<li>Sprz\u0119towa obs\u0142uga dw\u00f3ch enkoder\u00f3w.\n<li>Sprz\u0119towa obs\u0142uga protoko\u0142u RS-232.\n<li>56 dowolnie konfigurowalnych port\u00f3w I\/O.\n<\/ul>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/stel.jpg\" alt=\"\" title=\"stel\" width=\"550\" height=\"455\" border =\"2\"><\/p>\n<p style=\"text-align: center;\">Mikrokontroler Stellaris\u00ae LM3S2965 wraz z p\u0142ytk\u0105 testow\u0105.<\/p>\n<p><BR><\/p>\n<p>Ponadto p\u0142ytka testowa na kt\u00f3rej umieszczony jest mikrokontroler wyposa\u017cona w:<\/p>\n<ul>\n<li>Wy\u015bwietlacz graficzny OLED.\n<li>Konwerter RS-232 do USB.\n<li>Cztery przyciski kierunkowe.\n<li>Jeden przycisk Selekt\n<li>Przycisk Reset.\n<li>Diod\u0119 LED sygnalizuj\u0105c\u0105 zasilanie.\n<li>Diod\u0119 LED o dowolnym przeznaczeniu.\n<li>Piezoelektryczny g\u0142o\u015bnik.\n<li>Z\u0142\u0105cze CAN.\n<li>Z\u0142\u0105cze JTAG.\n<\/ul>\n<p><BR><\/p>\n<p><a name=\"pst\"><\/a><strong>Program steruj\u0105cy<\/strong><BR><BR><\/p>\n<p>Na potrzeby mikrokontrolera, kt\u00f3ry jest sercem uk\u0142adu sterowania powsta\u0142 program SCARA uControl napisany w j\u0119zyku C. S\u0142u\u017cy on do przetwarzania informacji odebranych z programu SCARA Control znajduj\u0105cego si\u0119 na komputerze PC. Informacje te wykorzystywane s\u0105 do sterowania nap\u0119dami robota jak i za\u0142\u0105czaniem urz\u0105dze\u0144 wsp\u00f3\u0142pracuj\u0105cych. Ponad to program zbiera informacje z czujnik\u00f3w zewn\u0119trznych i przesy\u0142a je do komputera PC. G\u0142\u00f3wne funkcje programu SCARA uControl to:<\/p>\n<ul>\n<li>Dwukierunkowa komunikacja z komputerem PC.\n<li>Obliczanie algorytm\u00f3w steruj\u0105cych PI.\n<li>Generowanie sygna\u0142\u00f3w steruj\u0105cych dla nap\u0119d\u00f3w.\n<li>Za\u0142\u0105czanie urz\u0105dze\u0144 dwustanowych.\n<li>Zbieranie informacji z czujnik\u00f3w zewn\u0119trznych.\n<li>Bazowanie robota.\n<li>Wy\u015bwietlanie informacji na ekranie znajduj\u0105cym si\u0119 na p\u0142ytce testowej.\n<\/ul>\n<p>Wszystkie funkcje sterowania nap\u0119dami realizowane s\u0105 z pomoc\u0105 timera.  Wywo\u0142ywane s\u0105 one z cz\u0119stotliwo\u015bci\u0105 500hz, gwarantuje to poprawn\u0105 reakcj\u0119 na informacje odebrane z programy SCARA Control. Informacje o stanie czujnik\u00f3w odsy\u0142ane s\u0105 z cz\u0119stotliwo\u015bci\u0105 100hz. Bazowanie robota realizowane jest bezpo\u015brednio za pomoc\u0105 programu steruj\u0105cego. Z programu na komputerze PC wys\u0142ana jest informacja o konieczno\u015bci bazowania. Poniewa\u017c robot nie posiada czujnik\u00f3w bazowych, bazowanie ka\u017cdej osi odbywa si\u0119 poprzez ci\u0105g\u0142e zwi\u0119kszanie pozycji zadanej i monitorowanie uchybu regulacji. Je\u015bli uchyb przekracza ustalony pr\u00f3g oznacza to, \u017ce dana o\u015b robota osi\u0105gn\u0119\u0142a maksymalne po\u0142o\u017cenie. Po zabazowaniu wszystkich czterech osi robota, do komputera PC odsy\u0142ana jest informacja o zako\u0144czeniu operacji.<BR><BR><\/p>\n<p><a name=\"pcb\"><\/a><strong>P\u0142ytka steruj\u0105ca<\/strong><BR><BR><\/p>\n<p>Mikrokontroler umieszczony na p\u0142ytce testowej nie mo\u017ce bezpo\u015brednio sterowa\u0107 wszystkimi peryferiami ze wzgl\u0119du na r\u00f3\u017cnic\u0119 napi\u0119\u0107 i pr\u0105d\u00f3w. Aby by\u0142o to mo\u017cliwe pod\u0142\u0105czony jest on do p\u0142ytki steruj\u0105cej, a dopiero do niej pod\u0142\u0105czone s\u0105 wszystkie sygna\u0142y. Mo\u017cna je podzieli\u0107 na dwie grupy, dotycz\u0105ce robota (sygna\u0142y PWM, kierunki obrotu silnik\u00f3w, enkodery, czujniki kra\u0144cowe) i urz\u0105dze\u0144 zewn\u0119trznych (czujniki na podajnikach, czujniki rozmiaru, elektrozaw\u00f3r steruj\u0105cy chwytakiem).<BR><BR><\/p>\n<p>Aby wyeliminowa\u0107 problem r\u00f3\u017cnicy poziom\u00f3w napi\u0119\u0107 pomi\u0119dzy mikrokontrolerem (3.3v) a pozosta\u0142ymi komponentami (5v),  oraz w celu zabezpieczenia mikrokontrolera przed ewentualnym uszkodzeniem, p\u0142ytka steruj\u0105ca wyposa\u017cona zosta\u0142a w uk\u0142ady optoizolacyjne ADUM1400.<BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/adum.jpg\" alt=\"\" title=\"adum\" width=\"211\" height=\"156\" border =\"2\"\/><\/p>\n<p style=\"text-align: center;\">Uk\u0142ad ADUM1400.<\/p>\n<p><BR><\/p>\n<p>Uk\u0142ad posiada cztery izolowane pary wej\u015b\u0107-wyj\u015b\u0107, wraz z translacj\u0105 poziom\u00f3w napi\u0119\u0107. Wej\u015bcia (Via, Vib, Vic, Vid) operuj\u0105 z napi\u0119ciem Vdd1, natomiast wyj\u015bcia (Voa, Vob, Voc, Vod) z napi\u0119ciem Vdd2. Uk\u0142ad do pracy wymaga jedynie kondensator\u00f3w do filtracji zasilania, bardzo upraszcza to jego aplikacj\u0119 oraz redukuje ilo\u015b\u0107 dodatkowych element\u00f3w.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/con_b1.jpg\" alt=\"\" title=\"con_b1\" width=\"550\" height=\"430\" border=\"2\"  \/><\/p>\n<p style=\"text-align: center;\">Gotowa p\u0142ytka steruj\u0105ca z wlutowanymi elementami (sp\u00f3d).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/con_b2.jpg\" alt=\"\" title=\"con_b2\" width=\"550\" height=\"407\" border=\"2\" \/><\/p>\n<p style=\"text-align: center;\">Gotowa p\u0142ytka steruj\u0105ca z wlutowanymi elementami (g\u00f3ra).<\/p>\n<p><BR><\/p>\n<p><a name=\"dcd\"><\/a><strong>Sterownik silnika DC<\/strong><BR><BR><\/p>\n<p>Poza p\u0142ytka steruj\u0105ca powsta\u0142y r\u00f3wnie\u017c cztery sterowniki silnik\u00f3w szczotkowych pr\u0105du sta\u0142ego. S\u0142u\u017c\u0105 one do sterowania silnikami znajduj\u0105cymi si\u0119 w robocie. Ka\u017cdy ze sterownik\u00f3w oparty b\u0119dzie o uk\u0142ad scalony firmy Allegro A3953. Uk\u0142ad ten jest sterownikiem silnika szczotkowego o napi\u0119ciu do 50v i maksymalnym pr\u0105dzie do 1,3A.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/dc_drv.jpg\" alt=\"\" title=\"dc_drv\" width=\"524\" height=\"235\" border=\"2\"\/><\/a><\/p>\n<p style=\"text-align: center;\">Gotowy sterownik silnika DC.<\/p>\n<p><BR><BR><\/p>\n<p><a name=\"iob\"><\/a><strong>Interfejs wej\u015b\u0107\/wyj\u015b\u0107<\/strong><\/p>\n<p>\tElementem \u0142\u0105cz\u0105cym p\u0142ytk\u0119 steruj\u0105c\u0105 z robotem jak i z komputerem PC jest interfejs wej\u015b\u0107\/wyj\u015b\u0107. Sk\u0142adaj\u0105 si\u0119 na niego dwie p\u0142ytki drukowane z szeregiem z\u0142\u0105czy. Na podstawie informacji o wyprowadzeniach po\u0142\u0105cze\u0144 w robocie, do obu p\u0142ytek powsta\u0142y schematy elektryczne. Poniewa\u017c g\u0142\u00f3wne zasilanie robota nie mo\u017ce zosta\u0107 doprowadzone do uk\u0142adu sterowania przed zasileniem mikrontrolera, interfejs wej\u015b\u0107\/wyj\u015b\u0107 zosta\u0142 wyposa\u017cony w dwa optotranzystory mocy PVN012. Za\u0142\u0105czaj\u0105 one g\u0142\u00f3wne zasilanie dopiero po pod\u0142\u0105czeniu uk\u0142adu sterowania z komputerem PC.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/int_b1.jpg\" alt=\"\" title=\"int_b1\" width=\"550\" height=\"252\" border =\"2\"\/><\/p>\n<p style=\"text-align: center;\">Dolna p\u0142ytka interfejsu wej\u015b\u0107\/wyj\u015b\u0107(sp\u00f3d).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/int_b2.jpg\" alt=\"\" title=\"int_b2\" width=\"550\" height=\"266\" border =\"2\"\/><\/p>\n<p style=\"text-align: center;\">Dolna p\u0142ytka interfejsu wej\u015b\u0107\/wyj\u015b\u0107(g\u00f3ra).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/int_b3.jpg\" alt=\"\" title=\"int_b3\" width=\"550\" height=\"257\" border =\"2\"\/><\/p>\n<p style=\"text-align: center;\">G\u00f3rna p\u0142ytka interfejsu wej\u015b\u0107\/wyj\u015b\u0107(sp\u00f3d).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/int_b4.jpg\" alt=\"\" title=\"int_b4\" width=\"550\" height=\"265\" border =\"2\"\/><\/p>\n<p style=\"text-align: center;\">G\u00f3rna p\u0142ytka interfejsu wej\u015b\u0107\/wyj\u015b\u0107(g\u00f3ra).<\/p>\n<p><BR><\/p>\n<p><a name=\"str\"><\/a><strong>Gotowy sterownik<\/strong><BR><BR><\/p>\n<p>\tWszystkie elementy sterownika zosta\u0142y zamkni\u0119te w plastikowej obudowie. W tylnej jej cz\u0119\u015bci znajduj\u0105 si\u0119 z\u0142\u0105cza: USB (komunikacja rs232), silnik\u00f3w robota, enkoder\u00f3w, czujnik\u00f3w bazowych, zasilania oraz p\u0142ytki z przy\u0142\u0105czami czujniki zewn\u0119trznych. W g\u00f3rnej cz\u0119\u015b\u0107 obudowy znajduje si\u0119 wy\u015bwietlacz LCD pokazuj\u0105cy podstawowe informacje o robocie.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/ster_1.jpg\" alt=\"\" title=\"ster_1\" width=\"550\" height=\"453\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Sterownik SCARA uControl (widok na mikrokontroler).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/ster_2.jpg\" alt=\"\" title=\"ster_2\" width=\"550\" height=\"405\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Sterownik SCARA uControl (widok na mikrokontroler, jeden z  sterownik\u00f3w silnika oraz interfejs wej\u015b\u0107\/wyj\u015b\u0107).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/ster_3.jpg\" alt=\"\" title=\"ster_3\" width=\"550\" height=\"504\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Sterownik SCARA uControl (widok z g\u00f3ry).<\/p>\n<p><BR><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/ster_4.jpg\" alt=\"\" title=\"ster_4\" width=\"550\" height=\"233\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">Sterownik SCARA uControl w obudowie (ty\u0142). 1 &#8211; zasilanie +5, +15 z zasilacza od starego uk\u0142adu sterowania, 2 &#8211; z\u0142\u0105cze USB do komunikacji z komputerem PC, 3 &#8211; wej\u015bcie czujnik\u00f3w kra\u0144cowych (opcjonalnie), 4 &#8211; wej\u015bcie\/wyj\u015bcie p\u0142ytki z przy\u0142\u0105czami czujnik\u00f3w zewn\u0119trznych, 5 &#8211; wej\u015bcie sygna\u0142\u00f3w z enkoder\u00f3w robota, 6 &#8211; wyj\u015bcie zasilaj\u0105ce silnik\u00f3w.<\/p>\n<p><BR><\/p>\n<p>P\u0142ytka testowa z mikrokontrolerem zawiera ekran LCD. Podczas pracy sterownika wy\u015bwietlaj\u0105 si\u0119 na nim informacje o aktualnym po\u0142o\u017ceniu ramion robota, stany poszczeg\u00f3lnych port\u00f3w oraz informacje o stanie pracy:<\/p>\n<ul>\n<li>Po\u0142\u0105czono z SC \u2013 oznacza po\u0142\u0105czenie z komputerem PC z programem SCARA Control.\n<li>Brak po\u0142\u0105czenia \u2013 braku po\u0142\u0105czenia z komputerem PC z programem SCARA Control.\n<li>Bazowanie \u2013 Bazowanie robota.\n<\/ul>\n<p><BR><\/p>\n<p>Aby umo\u017cliwi\u0107 dost\u0119p do ekranu na g\u00f3rze obudowy wyci\u0119te zosta\u0142o okienko pozwalaj\u0105ce obserwowa\u0107 ekran LCD wraz z mikrokontrolerem i p\u0142ytka testow\u0105.<BR><BR><\/p>\n<p>Do uk\u0142adem sterowanie po\u0142\u0105czona jest p\u0142ytka z przy\u0142\u0105czami czujnik\u00f3w (z pierwotnego uk\u0142adu sterowania). Pod\u0142\u0105czone s\u0105 do niej czujniki na podajnikach, rozmiaru oraz sygna\u0142y za\u0142\u0105czaj\u0105ce podajniki.<BR><BR><\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/www.k2site.pl\/wp-content\/uploads\/2010\/08\/io_board.jpg\" alt=\"\" title=\"io_board\" width=\"550\" border=\"2\"\/><\/p>\n<p style=\"text-align: center;\">P\u0142ytka z przy\u0142\u0105czami czujnik\u00f3w zewn\u0119trznych.<\/p>\n<p><BR><\/p>\n<p><a name=\"uwk\"><\/a><strong>Uk\u0142ad sterowanie podczas pracy<\/strong><BR><BR><\/p>\n<p style=\"text-align: center;\"><object style=\"height: 344px; width: 425px\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/pH47EJnmuf4?version=3\"><param name=\"allowFullScreen\" value=\"true\"><param name=\"allowScriptAccess\" value=\"always\"><embed src=\"http:\/\/www.youtube.com\/v\/pH47EJnmuf4?version=3\" type=\"application\/x-shockwave-flash\" allowfullscreen=\"true\" allowScriptAccess=\"always\" width=\"425\" height=\"344\"><\/object><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spis tre\u015bci Wst\u0119p Za\u0142o\u017cenia projektowe Program steruj\u0105cy &#8211; SCARA Control Interpolator ruchu Interfejs u\u017cytkownika J\u0119zyka programowania robota Program SCARA Control w dzia\u0142aniu Uk\u0142ad sterowania Program steruj\u0105cy P\u0142ytka steruj\u0105ca Sterownik silnika DC Interfejs wej\u015b\u0107\/wyj\u015b\u0107 Gotowy sterownik Uk\u0142ad sterowanie podczas pracy Wst\u0119p Poniewa\u017c studiowa\u0142em na wydziale Mechanicznym Politechniki \u0141\u00f3dzkiej w trakcie studi\u00f3w zrobi\u0142em wiele projekt\u00f3w zwi\u0105zanych z [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-198","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/pages\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.k2site.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=198"}],"version-history":[{"count":87,"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/pages\/198\/revisions"}],"predecessor-version":[{"id":566,"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/pages\/198\/revisions\/566"}],"up":[{"embeddable":true,"href":"http:\/\/www.k2site.pl\/index.php?rest_route=\/wp\/v2\/pages\/3"}],"wp:attachment":[{"href":"http:\/\/www.k2site.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}