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