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)
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