Paulina Stec - Opracowanie i implementacja programu do
Transkrypt
Paulina Stec - Opracowanie i implementacja programu do
Opracowanie i implementacja programu do sterowania frezarka˛ numeryczna.˛ Paulina Stec Wydział Inżynierii Mechanicznej i Informatyki Kierunek Informatyka, Rok V [email protected] Streszczenie Celem pracy było opracowanie oraz zaimplementowanie programu służacego ˛ do sterowania frezarka˛ numeryczna.˛ Urzadzenie ˛ miało być podłaczone ˛ do komputera za pomoca˛ interfejsu równoległego (portu LPT) w środowisku systemu operacyjnego GNU/Linux. Interfejs użytkownika powstać miał przy użyciu biblioteki Qt. Program miał mieć możliwość interpretacji kodu programu obróbki i na tej podstawie zasterować odpowiednio ruchami frezarki. Przedstawione zostały specyficzne zagadnienia i problemy zwiazane ˛ z implementacja˛ programu tak ściśle powiazanego ˛ z konkretnym rodzajem sprz˛etu, jak również perspektywy, jakie za soba˛ niesie. 1 Wst˛ep Obecny przemysł oparty jest w głównej mierze o obróbk˛e metali. Paradoksalnie również przetwórstwo tworzyw sztucznych nie jest w stanie si˛e bez tego obejść. Tutaj konieczne jest wytworzenie formy, z bardzo twardego i wytrzymałego metalu, a przy bardziej skomplikowanych kształtach docelowych elementów konieczna jest również bardzo duża precyzja obróbki. W wielu przypadkach wymaganej precyzji nie jest si˛e w stanie osiagn ˛ ać ˛ przy pomocy maszyn sterowanych r˛ecznie, nie zależnie od nakładu czasu pracy. Tutaj z pomoca˛ przychodzi technologia maszyn sterowanych numerycznie, a w szczególności CNC czyli Computerized Numerical Control. Komputery wymagaja˛ programu, za pomoca˛ którego użytkownik może opisać zadania do wykonania przez urzadzenie ˛ w odpowiedniej kolejności. Takim programem dla maszyn CNC jest G-code, ustandaryzowany przez norm˛e ISO 6983 (w Polsce PN-73/M55256). Opisywany tutaj projekt również go implementuje. G-kod jest j˛ezykiem interpretowanym linijka po linijce, umożliwiajacym ˛ opisanie kolejnych faz ruchu maszyny, pozwalajacy ˛ na zaprogramowanie dowolnie skomplikowanych kształtów. Składnia opiera si˛e na wpisywaniu funkcji modalnych oraz współrz˛ednych kolejnych punktów. Nazwa potoczna wzi˛eła si˛e z faktu, iż wi˛ekszość funkcji rozpoczyna si˛e litera˛ G, po której dopiero nast˛epuje liczbowy parametr, definiujacy ˛ konkretna˛ funkcj˛e. Istnieje także grupa opcji M (tzw. M-kody), pozwalajaca ˛ na dodatkowe ustawienia (m. in. sterowanie przepływem programu, zarzadzanie ˛ chłodzeniem lub zmienianiem narz˛edzia). Ustandaryzowany Gkod nie udost˛epnia takich możliwości jak p˛etle, warunki logiczne, czy inne konstrukcje, 1 dost˛epne w j˛ezykach wyższego poziomu. Jednak problem ten został cz˛eściowo rozwiaza˛ ny poprzez systemy typu CAM (np. MasterCAM, ServeCAM, BobCAM, a dla bardziej amatorskich zastosowań LazyCAM, FreeMill, czy PyCAM) automatycznie generujace ˛ ciag ˛ instrukcji G-kodu na podstawie utworzonego rysunku technicznego. Maszyny dost˛epne na rynku wyposażone sa˛ zwykle w szafy wypełnione urzadzeniami ˛ służacymi ˛ do sterowania obrabiarka,˛ co razem zajmuje znaczne ilości miejsca. Tymczasem możliwe jest zbudowanie dużo mniejszej frezarki, która podłaczona ˛ do standardowego komputera stacjonarnego i wyposażona w odpowiedni program jest w stanie dorównać dokładnościa˛ dużym urzadzeniom, ˛ a docelowo również i funkcjonalnościa.˛ 2 Środowisko testowe Jako środowisko testowe posłużył standardowy komputer klasy Pentium 4 wyposażony w port LPT, do którego podłaczono ˛ symulator oparty o silniki krokowe sterowane za pośrednictwem sterowników SSK-B05. Dodatkowo symulator wyposażony został w osobny zasilacz oraz optoizolacj˛e po stronie wejścia, co pozwoliło wyeliminować zakłócenia transmisji. Urzadzenie ˛ zewn˛etrzne łaczone było z komputerem za pośrednictwem interfejsu równoległego IEEE 1284 [1], popularnie zwanego portem drukarki LPT, ze wzgl˛edu na jego genez˛e powstania oraz najcz˛estsze zastosowanie. Udost˛epnia on kilka trybów pracy: • SPP (Standard Parallel Port) • EPP (Enhanced Parallel Port) • ECP (Extended Capability Port) Do projektu został wybrany tryb EPP, ze wzgl˛edu na rozbudowane możliwości w stosunku do SPP, a brak buforowania stanowił w tym zastosowaniu dodatkowy atut, gdzie konieczne było natychmiastowe wysyłanie informacji. Najwi˛eksza˛ zaleta˛ tego portu jest możliwość wysłania 8 bitów informacji jednocześnie, bez konieczności sprz˛etowego dekodowania po stronie odbierajacej, ˛ co przy zastosowaniu sterowników pozwala na zarzadzanie ˛ czterema osiami obrabiarki jednocześnie. Dodatkowo możliwy jest odbiór danych z 5 linii wejściowych oraz wysyłanie na 4 liniach wyjściowych. Na komputerze sterujacym ˛ praca˛ maszyny zainstalowanym systemem operacyjnym był GNU/Linux, dystrybucja Arch, ze wzgl˛edu na szereg zalet systemu spod znaku pingwinka: • bezpieczeństwo oraz stabilność systemu, • adresy portów majace ˛ stała˛ wartość, • kilka możliwych sposobów odwoływania si˛e do portu (funkcje systemowe, moduł jadra, ˛ biblioteki jak np. parapin), • bardziej zaawansowany scheduler • wi˛eksza dokładność odmierzania czasu (nawet rz˛edu nanosekund). 2 Silniki krokowe zwane również skokowymi [2] [3], zastosowane zarówno w symulatorze, jak i frezarce docelowej charakteryzuja˛ si˛e tym, że po podaniu napi˛ecia wałek wykonuje jeden krok, obracajac ˛ si˛e zawsze o taki sam kat, ˛ co w połaczeniu ˛ ze śruba˛ nap˛edowa˛ o stałym skoku gwintu daje przesuni˛ecie o określona˛ odległość. Takie zachowanie wynika z budowy silników - uzwojenia po podaniu napi˛ecia namagnesowuja˛ si˛e i zaczynaja˛ przyciagać ˛ odpowiednie magnesy na wirniku, które w tej pozycji pozostaja.˛ Wymusza to jednak konieczność komutacji, czyli przełaczania ˛ napi˛eć pomi˛edzy poszczególnymi uzwojeniami. W zależności od silnika ilość uzwojeń może si˛e różnić (bipolarne maja˛ 4, zaś unipolarne od 6). Wobec tego jeden port równoległy mógłby sterować maksymalnie trzema silnikami bipolarnymi, o ile wykorzystany byłby rejestr kontrolny. Z pomoca˛ przychodza˛ sterowniki, zajmujace ˛ si˛e komutacja,˛ które potrzebuja˛ jedynie dwóch wyprowadzeń do sterowania jednym silnikiem - jedno na impuls kolejnego kroku, a drugie na zasygnalizowanie kierunku (odpowiedni stan na linii). Dzi˛eki temu możliwe staje si˛e sterowanie od 4 do 6 silników z jednego portu. Ponadto sterowniki maja˛ za zadanie poprawić charakterystyk˛e sygnałów wysyłanych z komputera, ponieważ potrzebny prad ˛ i napi˛ecie potrzebne do wysterowania jest o wyższe niż jest w stanie wygenerować kontroler portu w komputerze. Sterowanie osiami za pomoca˛ silników krokowych ma kilka zalet, mianowicie: • wysłanie jednego impulsu równoznaczne jest z przesuni˛eciem osi maszyny o jedna,˛ określona˛ długość kroku, co umożliwia na tyle precyzyjne sterowanie, na ile pozwala konfiguracja sprz˛etowa • dużo łatwiejsze jest pozycjonowanie narz˛edzia w przestrzeni, ponieważ wysłanie serii impulsów równoznaczne jest z przesuni˛eciem osi o wielokrotność długości kroku • nie wyst˛epuje tutaj problem samoistnego przesuwania si˛e osi ze wzgl˛edu na duży opór stawiany narz˛edziu podczas obróbki, ponieważ silnik dzi˛eki magnesom utrzymuje zadana˛ pozycj˛e. Jednakże wada˛ tego zastosowania jest niezbyt duża pr˛edkość przesuwu, jeżeli istotna˛ sprawa˛ jest dokładność, ponieważ silniki po przekroczeniu pewnej granicznej cz˛estotliwości otrzymywania impulsów na wejściu blokuja˛ si˛e, przestajac ˛ w dostatecznie szybkim tempie obracać wirnikiem. Takie zjawisko nazywane jest gubieniem kroków przez silniki. W przypadku obrabiarek o niezbyt dużych rozmiarach jak testowa, nie jest to problemem, zaś możliwość dokładnego sterowania znaczaco ˛ zmniejsza wag˛e tego problemu. 3 3.1 Implementacja i napotkane problemy Inne dost˛epne projekty Przedstawiony tutaj projekt napisany został w całości od podstaw, jedynie wykorzystujac ˛ najprostsze biblioteki. Przyczyna˛ takiej decyzji były ograniczenia, jakie posiadały inne projekty. Obsługa portu równoległego odbywa si˛e bezpośrednio, aby uniknać ˛ opóźnień w transmisji. Ponadto inne implementacje jak np. Parapin były w stanie obsługiwać wyłacznie ˛ 3 jeden port równoległy spośród zainstalowanych w komputerze, co w przyszłych zastosowaniach mogłoby okazać si˛e bardzo duża˛ niedogodnościa,˛ w szczególności przy dużej ilości osi ruchu lub osprz˛etu do obsługi. Ponadto projekt powstawał z myśla˛ o wielu możliwych przyszłych zastosowaniach, których to moduły można b˛edzie doimplementować w razie potrzeb (np. tokarki, plotery, dra˛żarki), tak jak i funkcjonalność, której nie posiadaja˛ dost˛epne produkty. 3.2 Port równoległy Mimo, że port równoległy ma 25 pinów, cz˛eść z nich nie jest wykorzystana do transmisji użytecznych informacji, stanowiac ˛ jedynie linie uziemienia [4]. W praktyce dost˛epnych jest 17 linii do transmisji danych, podzielonych pomi˛edzy 3 rejestry, danych, statusu oraz kontrolnego. W rejestrze danych dost˛epne jest osiem bitów, w trybie EPP działajacych ˛ dwukierunkowo, jednak w tym zastosowaniu b˛eda˛ one wykorzystane jako linie wyjściowe. Rejestr statusu z kolei to 5 bitów wejść, z których b˛edzie można odczytywać informacje o stanie maszyny, takie jak osiagni˛ ˛ ecie przez osie pozycji krańcowych, albo otwarcie ewentualnych osłon przez użytkownika, a przede wszystkim o wciśni˛eciu przez użytkownika wyłacznika ˛ bezpieczeństwa, który ma bezwzgl˛ednie zatrzymać ruch maszyny we wszystkich osiach. W rejestrze kontrolnym (sterujacym) ˛ natomiast mamy do dyspozycji 4 dodatkowe wyjścia, mogace ˛ sterować dodatkowymi opcjami urzadzenia ˛ zewn˛etrznego, np. włacze˛ niem i rodzajem chłodzenia narz˛edzia, oświetleniem stołu, czy zmieniakiem narz˛edzi. Jako, że w realizowanym projekcie dost˛ep do portu odbywa si˛e za pomoca˛ funkcji systemowych [5], konieczne było uruchamianie programu z prawami administratora. Jednakże atutem takiego rozwiazania ˛ był fakt, iż proces administratora mógł mieć wyższy priorytet, niż uruchamiany przez zwykłego użytkownika. 3.3 P˛etla główna programu Jak już zostało wspomniane, silniki krokowe wymagaja˛ wysyłania sygnałów, aby móc wykonywać kolejne kroki. Aby możliwe było przesuwanie osi maszyny z odpowiednia˛ zadana˛ pr˛edkościa,˛ konieczne jest odwoływanie si˛e do osi w p˛etli o ustalonej cz˛estotliwości. Jednakże idealne odmierzanie czasu wymagałoby ograniczenia uruchomionych w systemie procesów do wyłacznie ˛ programu sterujacego, ˛ konieczny stał si˛e kompromis. Wynika to z faktu, że pochodne funkcji sleep gwarantuja,˛ że scheduler wznowi proces minimum po określonym w parametrze okresie czasu, a nie dokładnie po zadanym czasie. Jednakże użyte silniki nie mogły pracować ze zbyt wysoka˛ pr˛edkościa,˛ wi˛ec dokładność zarzadzania ˛ czasem oferowana przez dost˛epne funkcje okazała si˛e wystarczajaca. ˛ 3.4 Interpolacja Opisany wcześniej G-kod podaje ciag ˛ punktów, do których obrabiarka na dotrzeć w kolejnych ruchach, wykonujac ˛ odpowiednie działania. Natomiast dla silników krokowych konieczny jest ciag ˛ impulsów przesuwajacych ˛ osie o poszczególne kroki. Aby udało si˛e 4 przejść z jednego sposobu zapisu w drugi, konieczna jest interpolacja ruchów. W jej wyniku powstaje ciag ˛ kolejnych wartości do wystawienia w odpowiednim momencie na wyjściu dla silników. O ile interpolacja dla ruchu po linii prostej jest stosunkowo łatwa, ponieważ sprowadza si˛e do rozwiazywania ˛ funkcji liniowych, o tyle w przypadku ruchu po łuku problem si˛e komplikuje, ponieważ standard G-kodu pozwala na dwa sposoby definiowania łuku - za pomoca˛ punktu startowego i końcowego oraz promienia lub współrz˛ednych środka okr˛egu definiujacego ˛ łuk. W przypadku formatu z danym promieniem, konieczne jest wyznaczenie współrz˛ednych środka w zależności od kierunku ruchu (zgodnie lub przeciwnie do ruchu wskazówek zegara) na podstawie współrz˛ednych podanych punktów, długości promienia oraz informacji czy łuk b˛edzie mniejszy czy wi˛ekszy niż 180o . W tym przypadku konieczne staje si˛e rozwiazanie ˛ układu równań kwadratowych, a nast˛epnie wybór właściwych współrz˛ednych punktu według danych założeń. 3.5 Biblioteka STL W projekcie użycie znalazły pojemniki dost˛epne w bibliotece STL - wektory [6]. Za ich pomoca˛ zostały zaimplementowane tablice przechowujace ˛ wczytane przez parser G-kodu etapy ruchu, a w nich tablice przechowujace ˛ ciagi ˛ poszczególnych stanów, podkroków do wystawienia do portu. Tablice takie przy długich odcinkach do pokonania proporcjonalnie si˛e wydłużaja.˛ Stad ˛ wykorzystanie STL, aby móc uzyskać dostateczna˛ wydajność podczas odwołań do poszczególnych elementów, kiedy to podczas ruchu czas stanowi dość poważny aspekt. 3.6 Interfejs użytkownika Program posiadać miał graficzny interfejs użytkownika, aby możliwe było jego wygodne wykorzystanie. Napisany miał być przy pomocy biblioteki Qt [7], udost˛epniajacej ˛ gotowe graficzne komponenty, dzi˛eki którym budowa interfejsu okienkowego znacznie si˛e upraszcza i pozwala zaoszcz˛edzić dużo nakładu pracy oraz czasu. Implementacja miała umożliwiać mi˛edzy innymi otwarcie pliku G-kodu i przetworzenie go, generujac ˛ tablic˛e poszczególnych ruchów, uruchomienie wykonania programu obróbki, zatrzymanie, przesuni˛ecie poszczególnych osi na pozycj˛e wyjściowa˛ (zerowa), ˛ czy zmian˛e konfiguracji silników (jak ilość kroków składajacych ˛ si˛e na jeden pełen obrót, lub skok śruby nap˛edowej), a także awaryjne zatrzymanie wszystkich ruchów urzadzenia. ˛ Obecnie program posiada jedynie interfejs tekstowy, jednak udost˛epniajacy ˛ wszystkie wymienione funkcje. Dodatkowo awaryjne zatrzymanie jest realizowane sprz˛etowo sygnał z maszyny lub symulatora natychmiast przerywa wszystkie ruchy urzadzenia. ˛ Interfejs graficzny nie został jeszcze zaimplementowany ze wzgl˛edu na koniecznie wysoki priorytet p˛etli obsługujacej ˛ komunikacj˛e z portem, w stosunku do p˛etli odświeżajacej ˛ interfejs graficzny. Ponadto zagadnieniem do rozwiazania ˛ sa˛ uprawnienia uruchamianego programu. Testy przeprowadzane do tej pory nie przyniosły spodziewanego efektu, wi˛ec ta cz˛eść projektu pozostaje w dalszym ciagu ˛ na etapie rozwoju. 5 4 Podsumowanie Przedstawiona praca pokazuje, że frezarka nie musi koniecznie być kolosem wyposażonym w ogrom urzadzeń ˛ elektronicznych, aby spełniała swoje zadanie. Równie dobrze może być nia˛ nieduża konstrukcja, podłaczona ˛ do domowego komputera, jedynie wyposażonego w specjalne oprogramowanie, aby prostota˛ obsługi i dokładnościa˛ mogła prześcignać ˛ niejedno urzadzenie ˛ używane obecnie w przemyśle. W szczególności stanowi perspektyw˛e na modernizacj˛e starych urzadzeń, ˛ sterowanych r˛ecznie lub takich, w których oryginalne sterowanie uległo uszkodzeniu, stało si˛e zbyt zawodne, nie dość dokładne, nie ekonomiczne lub oferujace ˛ zbyt mało możliwości. W projekcie tym również dokładność ograniczona jest w głównej mierze do zastosowanego sprz˛etu, silników oraz śrub, które odpowiednio dobrane moga˛ w szerszej perspektywie pozwolić nawet na wejście na rynek nanotechnologii - obliczenia na milimetrach, metrach czy nanometrach przeprowadzane sa˛ tak samo, kwestia sprowadza si˛e do konsekwentnego trzymania si˛e przyj˛etych jednostek oraz dostatecznie dokładnego i precyzyjnego wykonania cz˛eści mechanicznych. Rozwiazanie ˛ oparte o niezależny program dodatkowo może w przyszłości zmniejszyć problem niedoboru wykwalifikowanej kadry, ponieważ uproszczony interfejs użytkownika w stosunku do innych dost˛epnych projektów pozwoli na znaczne skrócenie czasu szkolenia pracownika w zakresie obsługi programu. Ponadto zunifikowanie oprogramowania pomi˛edzy typami obrabiarek pozwola˛ na łatwiejsze przekwalifikowanie pracownika w zakresie obsługi różnych modeli, a nawet typów maszyn. Literatura [1] M. Banas, T. Bielecki, E. Kubicki, www.tu.kielce.pl/~cltm/studenci/wmibm/air/rp/lab-04.pdf Silniki skokowe, [2] dr inż. Piotr Sauer Elementy wykonawcze automatyki, wykład 5, http://www2.arkari.put.poznan.pl/~psauer/EWA/ewa05.pdf [3] IEEE 1284, http://pl.wikipedia.org/wiki/IEEE_1284 [4] A tutorial on Parallel Port Interfacing, http://logix4u.net/Legacy_Ports/Parallel_Port/ A_tutorial_on_Parallel_Port_Interfacing.html [5] Riku Saikkonen, Linux I/O port programming http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html mini-HOWTO, [6] C++ Containers, http://www.cplusplus.com/reference/stl/ [7] Qt Online Reference Documentation, http://doc.qt.nokia.com/ [8] Machine code reference, http://www.tormach.com/machine_codes.html 6