LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

W temacie przedstawiam poradnik jak dodać przycisk pomiaru długości narzędzia do LinuxCNC.

Dyskusje dotyczące działania obsługi programu LinuxCNC

Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 62
Posty: 1738
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#1

Post napisał: drzasiek90 » 19 sty 2020, 15:32

Stosunkowo niedawno dodawałem obsługę pomiaru długości narzędzia do LinuxCNC. W sieci jest wiele instrukcji, ale czasami ciężko odnaleźć tą jedną działającą. Przypominam sobie, że próbowałem wiele razy, w każdej czego brakowało albo coś było niejasne i trzeba było wiele prób zanim się udało. Dziś potrzebowałem wykonać to samo na innym komputerze i zdałem sobie sprawę, że znowu sprawia mi to lekkie problemy. Na szczęście udało się odpamiętać pewne rzeczy i procedura się udała. Aby nie męczyć się kolejny raz z tym za jakiś czas, postanowiłem, że napiszę poradnik jak to zrobić. A skoro już napisałem, nie będę go trzymał tylko dla siebie, może komuś się przyda. A więc zaczynamy:

1. Utworzenie przycisku do pomiaru długości narzędzia

W katalogu z ustawieniami linuxcnc (tam gdzie między innymi znajduje się plik .ini) tworzymy nowy dokument (np. poprzez edytor tekstu) i zapisujemy go pod nazwą panel.xml
1.png
Otwieramy dokument w dowolnym edytorze tekstu i tworzymy własny przycisk wklejając poniższy kod:
2.png
Tekst w cudzysłowu w linii 4 oznacza nazwę pliku z programem który będzie odpowiedzialny za obsługę pomiaru długości narzędzia. Plik stworzymy później.
Tekst w linii 5 to nazwa jaka będzie wyświetlana na przycisku.
Zapisujemy plik i zamykamy.

W edytorze tekstu otwieramy plik z ustawieniami linuxcnc czyli plik z rozszerzeniem .ini
W sekcji [DISPLAY] dodajemy linię:
3.png
Zapisujemy plik i zamykamy.
Uruchamiamy LinuxCNC, na panelu powinien być widoczny nasz nowy przycisk.
4.png
Zamykamy LinuxCNC.
2. Stworzenie pliku z programem wykonującym procedurę wymiany i pomiaru długości narzędzia

W katalogu z ustawieniami maszyny tworzymy katalog w którym znajdować się będą nasza algorytmy (czyli na początek program realizujący obsługę wymiany i pomiaru narzędzia)
5.png
Przechodzimy do katalogu algorytmy i tworzymy w nim plik z programem (za pomocą edytora tekstu) o nazwie jaką podaliśmy w pliku panel.xml
6.png
Teraz kilka słów o tym jak zaplanowałem swoją procedurę wymiany i pomiaru długości narzędzia:
1) Maszyna ustawia się do wymiany narzędzia na zdefiniowanej pozycji wymiany i wyświetla pierwszy komunikat aby zamontować/wymienić narzędzie. Po zamontowaniu nowego narzędzia operator wciska przycisk kontynuuj.
2) Maszyna ustawia się na zdefiniowanej pozycji w której znajduje się czujnik długości narzędzia i wyświetla drugi komunikat aby zamontować czujnik. (a to dlatego, że nie każda maszyna posiada czujnik zamontowany na stałe. Niektóre posiadają również czujniki dotykowe, które wymagają aby do narzędzia podłączyć przewód. To jest właśnie ten czas aby zamontować czujnik i/lub zamontować przewód). Po zamontowaniu czujnika operator wciska przycisk kontynuuj.
8.png
3) Maszyna obniża narzędzie w osi Z ze zdefiniowaną prędkością aż do dotknięcia narzędziem czujnika. Po dotknięciu czujnika oś Z podnosi się bardzo powoli do góry aż do momentu gdy narzędzie przestanie dotykać czujnika i ta pozycja używana jest do ustalenia długości narzędzia. Po zakończeniu procedury narzędzie podnosi się do góry w osi Z do zdefiniowanej pozycji czujnika długości narzędzia i wyświetla trzeci komunikat aby zdemontować czujnik. Po zdemontowaniu czujnika operator klika przycisk kontynuuj i maszyna ustawia się na zdefiniowanej pozycji po wymianie czujnika i jest gotowa do pracy z nowym narzędziem.

A teraz program:

Otwieramy plik wymiana_narzedzia.ngc w edytorze tekstu i piszemy program który będzie wywoływany po wciśnięciu przycisku Nowe narzędzie

Kod: Zaznacz cały

O <wymiana_narzedzia> sub

O100 IF [ EXISTS[#<_FirstTool>] EQ 0 ]											(Jeśli nie istnieje parametr (flaga) <_FirstTool>)
	#<_FirstTool> = 0															(Tworzy flagę <_FirstTool> i przypisuje jej wartość 0)
O100 ENDIF

O105 IF [ #<_FirstTool> EQ 0 ]													(Jeśli flaga <_FirstTool> jest równa 0) 
	G49                                         								(Anuluje kompensację narzędzia)
O105 ENDIF

M70																				(Zapisuje aktualny stan)
G21																				(Jednostką odległości są [mm])
G94                                            									(Jednostką ruchu jest [jednostka/min])
G90																				(Programowanie absolutne)
G53 G0 Z0																		(Podnosi oś Z do bezpiecznej wysokości - w tym przypadku maksymalna wysokość = 0)
G53 G0 X#<_ini[TOOL_CHANGE_POS]X> Y#<_ini[TOOL_CHANGE_POS]Y>					(Przesówa w osi X i Y do zdefiniowanego punktu wymiany narzędzia)
G53 G0 Z#<_ini[TOOL_CHANGE_POS]Z>												(Przesówa w osi Z do zdefiniowanego punktu wymiany narzędzia)
M100 P0																			(Wyświetla komunikat aby zamontować/zmienić narzędzie. Czeka na kliknięcie "Kontynuuj")
G53 G0 Z0																		(Podnosi oś Z do bezpiecznej wysokości - w tym przypadku maksymalna wysokość = 0)																
G53 G0 X#<_ini[TOOLSENSOR]X> Y#<_ini[TOOLSENSOR]Y>								(Przesówa w osi X i Y do zdefiniowanego punktu pomiaru długości narzędzia)
G53 G0 Z#<_ini[TOOLSENSOR]Z>													(Przesówa w osi Z do zdefiniowanego punktu pomiaru długości narzędzia)
M100 P1																			(Wyświetla komunikat aby zamontować czujnik. Czeka na kliknięcie "Kontynuuj")
G91																				(Programowanie przyrostowe)

O200 IF [ #<_FirstTool> EQ 0 ]													(Jesli pomiar pierwszego narzędzia)
	G38.3 Z-#<_ini[TOOLSENSOR]MAX_CHANGE> F50									(Obniża narzędzie do momentu kontaktu)
G38.4 Z10 F1																	(Podnosi narzędzie do utracenia kontaktu)
#<_FirstMeasureZ> = #5063    													(Zapisuje wynik pierwszego pomiaru w osi Z)
#<_FirstTool> = 1 																(Ustawia flage <_FirstTool>)
O200 ELSE																		(Jesli pomiar kolejnego narzedzia)
  	G38.3 Z-#<_ini[TOOLSENSOR]MAX_CHANGE> F50									(Obniża narzędzie do momentu kontaktu)
	G38.4 Z10 F1																(Podnosi narzędzie do utracenia kontaktu)
	#<_ActualMeasureZ> = #5063   												(Zapisuje wynik aktualnego pomiaru w osi Z)
	G43.1 Z[#_ActualMeasureZ> - #<_FirstMeasureZ>]								(Ustawia dynamicznie offset długości aktualnego narzędzia -działa do momentu wystąpienia M72)
O200 ENDIF

G90																				(Programowanie absolutne)
G53 G0 Z#<_ini[TOOLSENSOR]Z>													(Podnosi oś Z do zdefiniowanego punktu czujnika)
M100 P2																			(Wświetla komunikat aby zdemontować/zabezpieczyć czujnik)
G53 G0 Z #<_ini[AFTER_CHANGE_POSITION]z>										(Przesówa oś Z do zdefiniowanego punktu po wymianie narzędzia)
G53 G0 X #<_ini[AFTER_CHANGE_POSITION]x> Y #<_ini[AFTER_CHANGE_POSITION]y>		(Przesówa oś X,Y do zdefiniowanego punktu po wymianie narzędzia)
M72																				(Przywraca zapisany stan)
G43.1 Z[#_ActualMeasureZ> - #<_FirstMeasureZ>]									(Ponownie ustawia dynamicznie offset długości aktualnego narzędzia)

O <wymiana_narzedzia> endsub
m2


3. Zdefiniowanie współrzędnych punktu wymiany narzędzia, punktu pomiaru narzędzia, punktu po wymianie narzędzia oraz zakresu pomiaru długości narzędzia


Wartości definiujemy w pliku z ustawieniami czyli otwieramy w edytorze tekstu plik z rozszerzeniem .ini i dodajemy definicje wartości wykorzystywanych w programie wymiany długości narzędzia

Kod: Zaznacz cały

    [TOOL_CHANGE_POS]

    X = 120

    Y = 0

    Z = 0

    [TOOLSENSOR]

    X = 220

    Y = 13

    Z = -48

    MAX_CHANGE = 32

    [AFTER_CHANGE_POSITION]

    X = 120

    Y = 0

    Z = 0
Linia 62-64: Współrzędne maszynowe na których ustawia się maszyna do wymiany narzędzia

Linia 68-70: Współrzędne maszynowe na których ustawia się maszyna do pomiaru długości narzędzia. Tak jak pisałem wyżej, na osi Z musi to być wartość ok 2-3mm nad czujnikiem długości narzędzia dla najdłuższego narzędzia jakie montujemy w maszynie.

Linia 71: Wartość zakresu pomiaru (jaki zakres w osi Z obniża się narzędzie w oczekiwaniu na zadziałanie czujnika długości narzędzia). Wartość ta po dodaniu do wartości jaką w osi Z pokonała maszyna od pozycji najwyższej do punktu nad czujnikiem nie może być większa od całego zakresu ruchu w osi Z. Przykład:

Moja maszyna ma zakres ruchu w osi Z równy 90mm.

Najwyższa pozycja w osi Z we współrzędnych maszynowych wynosi 0.

Najniższa pozycja w osi Z we współrzędnych maszynowych wynosi -90.

A więc, jeśli wartość w osi Z na której maszyna ma zdefiniowany czujnik jest równa -48, to znaczy że maszyna może się obniżyć w osi Z jeszcze jedynie o 32mm ponieważ taki ma zakres ruchu, dlatego u mnie MAX_CHANGE = 32

Linia 75-77: Pozycja na jaką maszyna ustawi się po wymianie i zmierzeniu długości narzędzia.
Załączniki
9.png
7.png




Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 62
Posty: 1738
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#2

Post napisał: drzasiek90 » 19 sty 2020, 15:41

4. Przygotowanie wyświetlania komunikatów

Przechodzimy do katalogu nc_files i tworzymy nowy plik (za pomocą edytora teksu) i zapisujemy go pod nazwą M100
10.png
Otwieramy plik za pomocą edytora tekstu i wklejamy kod:
11.png
W tym samym katalogu tworzymy plik z komunikatami, zapisujemy go pod nazwą
M100messages.ini
12.png
Otwieramy plik w edytorze tekstu i wklejamy komunikaty
13.png
Zapisujemy i zamykamy plik.

Nadajemy jeszcze prawa do uruchamiania pliku m100 jako aplikacji. W zależności od systemu, można użyć różnych metod. Np klikamy prawym, we właściwościach zaznaczamy checkbox:
18.png
5. Dodanie ścieżek do plików i remapowanie komend wymiany narzędzia

Aby LinuxCNC wiedział gdzie ma szukać naszych algorytmów należy go o tym poinformować. W tym celu otwieramy plik z rozszerzeniem .ini w edytorze tekstu.

Do sekcji [RS274NGC] dodajemy następujące linie:
14.png
Jak widać remapujemy również komendę wymiany narzędzia M6 M06 tak aby po wywołaniu jej z dowolnego programu wywołała się nasza procedura wymiany zawarta w pliku wymiana_narzedzia.ngc

6. Pozostała konfiguracja w pliku .ini

Aby włączyć interfejs HALUI w sekcji [HAL] dodajemy linię:
15.png
i dodajemy sekcję HALUI wklejając kod:
16.png
Zapisujemy i zamykamy plik .ini

7. Konfiguracja w pliku custom_postgui.hal

Otwieramy w edytorze tekstu plik custom_postgui.hal i dodajemy kod:
17.png
Zapisujemy i zamykamy plik.

Po skonfigurowaniu obsługi wymiany narzędzia nie uruchamiajmy kreatora konfiguracji stepconf ponieważ nadpisze nam edytowane pliki konfiguracyjne i ustawienia znikną.

Jeśli nie mieliśmy wcześniej skonfigurowanego wejścia sondy narzędzia, należy to teraz zrobić manualnie dodając w pliku nazwa_konfiguracji.hal linię:

net probe-in <= parport.0.pin-15-in

15 to numer wejścia na porcie LPT. Wpisujemy tam własny numer. Jeśli chcemy zanegować wejście to dodajemy końcówkę not np.:

net probe-in <= parport.0.pin-15-in-not

Ciąg dalszy za chwile
Załączniki
19.png


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 62
Posty: 1738
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#3

Post napisał: drzasiek90 » 19 sty 2020, 15:46

8. Jak korzystać z procedury wymiany i pomiaru długości narzędzia

Uruchamiamy nasz LinuxCNC, bazujemy osie i klikamy Nowe Narzędzie
19.png
Maszyna ustawia się w pozycji jaką zdefiniowaliśmy jako pozycja wymiany narzędzia i wyświetla komunikat:
22.png
Montujemy pierwsze narzędzie i klikamy Kontynuuj. Maszyna ustawi się w pozycji (zdefiniowanej) nad czujnikiem długości narzędzia i wyświetli komunikat:
20.png
Jeśli czujnik nie jest montowany na stałe to teraz należy go ustawić w miejscu pomiaru. Jeśli posiadamy czujnik z koniecznością podłączenia przewodu to podłączamy go do narzędzia
8.png
Jeśli czujnik jest gotowy to klikamy Kontynuuj.

Maszyna dokona teraz pomiaru i z powrotem ustawi się w pozycji nad czujnikiem i wyświetli komunikat:
21.png
Odłączamy i / lub zabezpieczamy czujnik jeśli to konieczne i i klikamy Kontynuuj. Maszyna ustawi się w zdefiniowanej pozycji po wymianie narzędzia i jest gotowa do pracy.

Jeśli mamy już zmierzone narzędzie to możemy ustawić offsety do materiału. W przypadku gdy zajdzie potrzeba wymiany narzędzia to klikamy przycisk nowe narzędzie i po całej procedurze można pracować dalej. (offsety ustawiamy do materiału tylko po zamontowaniu pierwszego narzędzia, po wymianie narzędzia offsetów już nie ruszamy).

9. Jak korzystać z wymiany i pomiaru narzędzia z własnego programu


W pliku konfiguracyjnym zrobiliśmy już remapowanie komend M6 / M06 a więc aby z poziomu programu wywołać tą procedurę wystarczy wpisać kod wymiany narzędzia, np. T1M06.
Należy pamiętać, że wypadałoby zatrzymać wrzeciono przed wywołaniem wymiany narzędzia i uruchomić je po zakończeniu procedury. Przykładowy kod wymiany narzędzia w naszym programie może wyglądać tak:

M05
G04 P10
(MSG, Zamontuj narzedzie <t>)
T1M06
M03 S<s>
G04 P20

Gdzie <t> to numer narzędzia, <s> to obroty wrzeciona po wymianie narzędzia.
Ja mam ustawione w postprocesorze że każda wymiana narzędzia wywołują taki właśnie kod.

Awatar użytkownika

adam Fx
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 5562
Rejestracja: 04 lip 2004, 16:03
Lokalizacja: Gliwice

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#4

Post napisał: adam Fx » 19 sty 2020, 16:22

Na wstępie dzięki za ten poradnik :D
Jeśli było to przepraszam ale zerknąłem pobieżnie bo lecę na warsztat ;) -czy taki pomiar zapisuje jak to w normalnej maszynie długość do tablicy narzędzi czy przesuwa całe zero? (z przesuwaniem zera jest problem przy znacznych różnicach dł. narzędzia)
sorki za wszystkie błędy ... (dyslektyk) :?
Zobacz moje filmy http://www.youtube.com/user/pokachontass/videos


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 62
Posty: 1738
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#5

Post napisał: drzasiek90 » 19 sty 2020, 18:32

adam Fx pisze:
19 sty 2020, 16:22
czy taki pomiar zapisuje jak to w normalnej maszynie długość do tablicy narzędzi czy przesuwa całe zero? (z przesuwaniem zera jest problem przy znacznych różnicach dł. narzędzia)
Podana procedura przesuwa układ współrzędnych. Jaki jest problem przy dużych różnicach w długości narzędzia?


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 21
Posty: 16186
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#6

Post napisał: kamar » 19 sty 2020, 20:22

Wychodzi poza fizyczny zakres zetki.


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 62
Posty: 1738
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#7

Post napisał: drzasiek90 » 19 sty 2020, 21:07

Kurcze chyba jestem już zmęczony tą niedzielą bo nie chwytam o co chodzi.


lepi
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1437
Rejestracja: 09 lip 2012, 20:34
Lokalizacja: Poznań

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#8

Post napisał: lepi » 19 sty 2020, 21:22

Czy przesunie się os czy doda offset narzedzia czy wreszcie przesunie bazę materiałowa to wynik powinien być ten sam.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 28
Posty: 7781
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#9

Post napisał: tuxcnc » 19 sty 2020, 22:35

lepi pisze:
19 sty 2020, 21:22
Czy przesunie się os czy doda offset narzedzia czy wreszcie przesunie bazę materiałowa to wynik powinien być ten sam.
Nie powinien i nie jest.

Awatar użytkownika

adam Fx
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 5562
Rejestracja: 04 lip 2004, 16:03
Lokalizacja: Gliwice

Re: LinuxCNC - pomiar długości narzędzia - instrukcja jak skonfigurować

#10

Post napisał: adam Fx » 20 sty 2020, 00:58

drzasiek90 pisze:Kurcze chyba jestem już zmęczony tą niedzielą bo nie chwytam o co chodzi.
Tak jak napisał Kamar. musiałem wpisać większe niż rzeczywiście są softlimit bo inaczej otrzymywałem komunikat po kilku pomiarach że jestem po za zakresem.
Ja testowałem to z godnie z instr. z tego tematu linuxcnc-szybkie-ustawianie-offsetu-dla ... 1-110.html może coś zostało poprawione.

Dodane 4 minuty 28 sekundy:
Nie pamiętam dokładnie ale chyba by problem się ujawnił to czujnik narzędzia był na stole a detal wysoki i zero detalu na górze. narzędzie referencyjne krótki frez a potem długie wiertło i preamble powstawał jakoś przed czy po pomiarze.
sorki za wszystkie błędy ... (dyslektyk) :?
Zobacz moje filmy http://www.youtube.com/user/pokachontass/videos

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”