Makro - dwie sondy: narzędziowa i przedmiotowa

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

Autor tematu
mr_egon
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 9
Rejestracja: 17 kwie 2014, 21:36
Lokalizacja: Lublin

Makro - dwie sondy: narzędziowa i przedmiotowa

#1

Post napisał: mr_egon » 15 sty 2021, 14:52

Witam,
lupkowałem ale nie znalazłem tematu, a magię makr poznałem z tydzeń temu.
Zrobiłem sobie na szybko czujnik pomiaru wysokości narzędzia przytwierdzony poza stołem i wgrałem marko ze strony Ebmia które robi korektę wysokości narzędzia po wymanie na inne


makro które realizuje tą czynność pobrałem z :
https://www.ebmia.pl/czujnik-dlugosci-n ... cdn-3.html

chciałem dorzucić sobie jeszcze drugą sondę jak na załączonym rysunku:
Obrazek
do pomiaru na jakiej wysokości jest zero przedmiotu. Działać by miało ono w następującym schemacie:
1. dotknięcie sondą przedmiotową do powierzchni przedmiotu
2. zmierzenie wysokości narzędzia sondą narzędziową
3. przejazd narzędzia na pozycję 0 (styk narzędzia z materiałem), ewentualnie 10mm nad powierzchnię tak aby w oknie współrzędnych było 10mm (wtedy tylko załadowac program i obróbka)

Czyli to byłoby makro uruchamiane na samym początku pracy, potem przy wymianie narzędzia na inne to wcześniejsze makro które pięknie działa
próbowałem coś zmodyfikować to makro, próbując dodać współrzędną która przechowuje różnicę wysokości pomiędzy końcówką sondy narzędziowej a przedmiotowej podczas gdy maszyna jest zbazowana, ale w ogóle mi to nie idzie.

proszę o pomoc, ewentualnie podliknowanie tematów z tym związanych, gdyż większość przeważająca makr jest na jednym czujniku (którego znamy wysokość) umieszczanym na przedmiocie

pozdrawiam
Kuba



Awatar użytkownika

k-m-r1
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 1
Posty: 1418
Rejestracja: 23 cze 2008, 10:38
Lokalizacja: OOL lub DW
Kontakt:

Re: Makro - dwie sondy: narzędziowa i przedmiotowa

#2

Post napisał: k-m-r1 » 18 sty 2021, 18:19

A to nie jest tak że mierzysz frez to znasz jego długość czy punkt i dla kolejnego narzędzia masz korelacje długości?
Czy jak zmierzysz powierzchnie detalu sondą 2 to znasz na jakiej zaczynasz obróbkę?
MACH3 cncTworzenie Makr do palników magazynków THC OHC inneEKRANY dla firm producentów maszyn Budowa sprzedaż wypalarki plazma gaz obrotnice Elektrodrążarki Frezarki Tokarki Giętarki3D inne wg zlecenia 888 703 196 Tomek Komor [email protected]


[email protected]
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 2
Rejestracja: 30 mar 2010, 19:48
Lokalizacja: Lublin

Re: Makro - dwie sondy: narzędziowa i przedmiotowa

#3

Post napisał: [email protected] » 21 sty 2021, 12:41

k-m-r1 pisze:A to nie jest tak że mierzysz frez to znasz jego długość czy punkt i dla kolejnego narzędzia masz korelacje długości?
tzn to pierwsze makro z Ebmia tak działa ze mierzy najpierw to które chce wyjąć, zapamiętuje jego długość (współrzędną Z na jakiej zadziałała sonda narzędziowa), potem zmieniam narzędzie, mierzy je, i kompensuje róznice w długości.
Ale na początku obróbki samemu trzeba sobie złapać styk z przedmiotem i zzerować oś, dlatego zastosowałem druga sonda i chciałem stworzyć nowe makro by to zerowanie dla pierwszego narzędzia robiło się automatycznie z makra.

Czyli chciałem napisać makro, które najpierw zmierzy sondą przedmiotową powierzchnie przedmiotu, potem sondą narzędziową narzędzie i wyznaczy to "0" (narzędzie dotknie do powierzchni przedmiotu)
Obrazek
A – odległość między sondami po zbazowaniu maszyny (wartość stała)
B – odległość między końcówka narzędzia a sondą narzędziową
C – odległość między narzędziem a powierzchnią przedmiotu (wartość szukana)
D – odległość między końcówką sondy przedmiotowej a powierzchnią przedmiotu

C= D –(A-B)
wychodzi na to ze łatwo mozna obliczyc C (w oparciu o współrzędne maszynowe), ale coś nie działa mi makro poprawnie

Dodane 7 minuty 19 sekundy:
ponizej kod makra

Kod: Zaznacz cały

Deklaracja zmiennych

Dim X, Y, Z, px, py, pz, wx, wy, wz, d, zpoz
Dim tool, Hits, zs, zn, Hitn
Dim w
Dim A 'odległość miedzy sondami wprowadzic na minusie
'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Poniższe zmienne wymagają deklaracji przez użytkownika
'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

wx = -50     ' Tutaj podajemy położenie punktu wymiany narzędzia w odniesieniu do krańcówek bazujących ( współrzędne maszynowe )
wy = 100
wz = -10    'wz - określa na jakiej wysokości ma ustawić się wrzeciono przy wymianie
A = -86 'odleglosc miedzy sondami
'!!!!!!!!!!!!!!!!!!

px = -0.5  ' Tutajokreślamy punkt pomiaru narzędzia, również w odniesieniu do krańcówek bazujących
py = 0.5  ' (współrzędne maszynowe)


'!!!!!!!!!!!!
pz = -10  ' wysokość przejazdowa ( wysokość na jakiej odbywają się przejazdy na punkt pomiaru oraz wymiany
        'pownna być jak najwyższa, tak aby narzędzie nie zachaczyło o obrabiany element, czy mocowanie


'""""""""""""""""""""""
'Koniec definicji
'""""""""""""""""""""""""""""

'"""""""""""""""""""""""""""""""""""""""
'Właściwy program
'"""""""""""""""""""""""""""""""



'zapamiętanie współrzędnych punktu wyjściowego

X = GetoemDRO(83) 'maszynowe
Y = GetoemDRO(84) 'maszynowe
zm = GetoemDRO(85) 'maszynowe
Z = GetoemDRO(180) 'roboczy

'message( (px)&(" , ")& (py)&(" , ")& (pz))



w = Getoemled(11) ' zapamiętanie, czy wrzeciono było uruchomione
Code "m5" ' wyłączenie wrzeciona




'!!!!!!!!!!!!!!!!!!!

MsgBox ("Teraz nastąpi pierwszy pomiar") ' komunkat o rozpoczęciu pomiaru

' pomiar podzielony jest na dwa etapy, w opuszczenie może być dość szybkie; po wykryciu czujnika, następuje podniesienie o 2mm
' a nstępnie ponowny pomiar - tutaj prędkość powinna być miejsza, pozowli to na osiągnięcie większej precyzji pomiaru



Code "G31 Z-20 F100"                   'opuszczenie osi Z do współrzędnej  -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika
While IsMoving()        ' Tutaj możemy zmienić prędkość pierwszego pomiaru - Wartość przy parametrze F, 50 oznacza 50mm/min
Wend

Code "G91 Z2 F100"                   'podniesienie osi Z o 2 mm
While IsMoving()        ' Tutaj możemy zmienić prędkość oraz drogę o ile ma się podnieść - podniesienie powinno spowodować wyłączenie czujnika
Wend

Code "g90"

Code "G31 Z-20 F20"                   'opuszczenie osi Z do współrzędnej  -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika
While IsMoving()        ' Tutaj możemy zmienić prędkość drugiego pomiaru - Wartość przy parametrze F, 10 oznacza 10mm/min
Wend


D = GetVar(2002)     'przechwycenie wysokości na jakiej zadziałał czujnik po dotknieciu z PO

Code "G53 G00 Z" & pz  'podniesienie osi Z na wysokość przelotową
While IsMoving()
Wend


MsgBox ("Teraz nastąpi przejazd do współrzędnych wymiany narzędzia") ' komunikat o przelocie na punkt wymiany

Code "g53 G00 X" & wx & "Y" & wy    'przejazd na pozycje wymiany
While IsMoving()
Wend

Code "g53  G00 Z" & wz       'ustawienie osi Z na wysokości wymiany
While IsMoving()
Wend
        


MsgBox ("Włóż narzędzie, którym będzie realizowana obróbka") ' komunikat


Code "g53  G00 Z" & pz  'podniesienie Z na wysokość przelotową
While IsMoving()
Wend

Code " g53 G00 X" & px & "Y" & py 'przejazd na pozycje czujnika
While IsMoving()
Wend

'!!!!!!!!!!!!!!!!!!!!!!!!!!m


MsgBox ("Teraz nastąpi  pomiar narzędzia")  'komunikat o pomiarze  narzędzia


Code "G31 Z-160 F100"                   'opuszczenie osi Z do współrzędnej  -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika
While IsMoving()        ' Tutaj możemy zmienić prędkość pierwszego pomiaru - Wartość przy parametrze F, 50 oznacza 50mm/min
Wend

Code "G91 Z2 F100"                   'podniesienie osi Z o 2 mm
While IsMoving()        ' Tutaj możemy zmienić prędkość oraz drogę o ile ma się podnieść - podniesienie powinno spowodować wyłączenie czujnika
Wend

Code "g90"

Code "G31 Z-160 F20"                   'opuszczenie osi Z do współrzędnej  -20 ( Z-20) - w tym czasie powinna nastąpić aktywacja czujnika
While IsMoving()        ' Tutaj możemy zmienić prędkość drugiego pomiaru - Wartość przy parametrze F, 10 oznacza 10mm/min
Wend


B = GetVar(2002)     'przechwycenie wysokości na jakiej zadziałał czujnik przy "nowym" narzędziu



Code "G53 G00 Z" & pz  'podniesienie Z na wysokość przelotową
While IsMoving()
Wend



d = D + B - A   ' obliczanie różnicy długości
d = Abs(d)

'message(D)
'message(B)
'message(d)


zpoz = 0 ' moze tu trzeba wpisac np 50 zeby było 50 nad detalem

If D < B Then zpoz = zm + d   ' na podstawie wysokości zadziałań czujnika przy pomiarach obliczana jest wartość współczynnika korekcji wysokości osi Z
If D > B Then zpoz = zm - d


Code "G53 G00 X" & X & "Y" & Y            'przejazd na współrzędne punktu wyjściowego ( ten w którym zostało wywołane makro )
While IsMoving()
Wend

MsgBox ("włącz wrzeciono i kliknij OK") ' komunikat o włączeniu wrzeciona - w przypadku gdy włączamy je ręcznie


Code "G0 g53 Z" & zpoz      ' opuszczenie narzędzia - jego koniec powinien znaleźć się tam gdzi przed wywyołaniem makra
While IsMoving()
Wend

Call setdro(2, Z)       ' ustawienie wspłrzędnych - ofset

If w = True Then Code "m3" ' automatyczne włączenie wrzeciona jeżeli było uruchomine przed pomiarem.

End

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Mach 2 / 3 / 4 (ArtSoft software)”