Znaleziono 1 wynik

autor: [email protected]
21 sty 2021, 12:41
Forum: Mach 2 / 3 / 4 (ArtSoft software)
Temat: Makro - dwie sondy: narzędziowa i przedmiotowa
Odpowiedzi: 2
Odsłony: 1271

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

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

Wróć do „Makro - dwie sondy: narzędziowa i przedmiotowa”