Wysokość narzędzia, czujnik

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

Autor tematu
turbomachina
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 11 lip 2020, 14:41

Wysokość narzędzia, czujnik

#1

Post napisał: turbomachina » 17 kwie 2021, 18:28

Koledzy, ja naprawdę szukam i nie mogę znaleźć. To jest tragedia, cały czas jadę na papierku i mierzę w ten sposób. Mam skrypty, wszystko wgrane jak trzeba, robi pomiar jednego a później drugiego narzędzia i nic z tego nie wynika. Narzędzie drugie jest w złej odległości od materiału. Pierwsze na 0 a drugie albo raz za wysoko albo za nisko. Nie wiem jak to skonfigurować. Może w samym machu coś nie mam wciśnięte? Jak to zrobić krok po kroku? Ja naprawdę nie mam pomysłów. Mam makro z ebmia, z tego forum i nie wiem.
Dzięki z góry



Awatar użytkownika

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

Re: Wysokość narzędzia, czujnik

#2

Post napisał: tuxcnc » 17 kwie 2021, 19:13

turbomachina pisze:
17 kwie 2021, 18:28
Może w samym machu coś nie mam wciśnięte?
Całkiem prawdopodobne, ale wróżek tu nie ma.
Natomiast takie cuda zwykle się zdarzają gdy kilka offsetów nakłada się na siebie.
Na początek spróbuj G49 przed pomiarem narzędzia.


Autor tematu
turbomachina
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 11 lip 2020, 14:41

Re: Wysokość narzędzia, czujnik

#3

Post napisał: turbomachina » 18 kwie 2021, 15:40

Offsety nie zmieniają się i działam na g54 tylko.
Po pomiarze narzędzia offset narzędzia włącza się automatycznie.
Wysokość narzędzia 1 i 2 po pomiarze jest taka sama mimo że są różnej długości. Tak jak by makro nie obliczało różnicy.
Nie wiem czy makro jest napisane poprawnie, jeśli kolega mógłby zerknąć to było by fajnie.

Posiadam kontroler ruchu csmio ip m, może to też jest istotna informacja.

Opiszę może jeszcze mniej więcej krok po kroku jak ja ustawiam czujnik:
Dopisuję pin tak aby po naciśnięciu działała dioda digitize.
Mocuję czujnik i zapisuję w makro jego współrzędnexy i z po jego aktywacji.
Bazuję się na detalu Z0.
Dokonuję pomiaru narzędzia po czym wysokość zapisuje się automatycznie np H:+200 tool nr1
Zmieniam narzędzie i dokonuję pomiaru na tool 2. Makro zapisuje tą samą wartość H:+200.
W zależności czy narzędzie 2, włożone/zmienione, jest krótsze lub dłuższe to albo nie dotyka detalu albo jest poniżej detalu czyli wcześniej ustawionego Z0.

Makro:

Dim ZOFFSET, ZTOP, ZBOTTOM, ZGODOWN, ZABS, ZUPFINE, Z_SAFE
Dim ToolLen
Dim Tool
Dim SENS_Z, SENS_X, SENS_Y, Z_LIFT, Z_PARK, MAX_DTRAVEL
Dim SPD_FAST, SPD_FINE

' -----------------------------------------------------
' Configuration parameters
' -----------------------------------------------------
SENS_Z = 9.41 ' Sensor Z position
Z_SAFE = -55 ' Safe Z above sensor (for rapid move)
SENS_X = 150 ' Sensor X position
SENS_Y = 138 ' Sensor Y position
MAX_DTRAVEL = 200 ' Max down travel
SPD_FAST = 500
SPD_FINE = 200 ' Fast and fine speeds
Z_LIFT = 3 ' Z lift for fine probing
Z_PARK = -10 ' Park after probe absolute Z position
' -----------------------------------------------------
' turn off machine coordinates (mach bug)
If GetOEMLed(16) Then
DoOEMButton(256)
End
End If
Message( "Dokonuję pomiaru długości narzędzia..." )
If GetOEMLed(807) Then
Message( "TC ERROR: X Axis not referenced!" )
End
End If
If GetOEMLed(808) Then
Message( "TC ERROR: Y Axis not referenced!" )
End
End If
If GetOEMLed(809) Then
Message( "TC ERROR: Z Axis not referenced!" )
End
End If
If GetOEMLed(825) Then
Message( "TC ERROR: Czujnik pomiaru cały czas załączony! pomiar przerwany." )
End
End If
If GetOEMLed(11) Then
Message( "TC ERROR: Do pomiaru narzędzia wyłącz wrzeciono!" )
End
End If

Tool = GetDRO(24) ' Get current tool index
' narzedzie 0 nie podlega pomiarowi
If(Tool = 0) Then
Message( "TC INFO: Narzędzie nr:0 nie podlega pomiarom długości" )
End
End If

WaitForMove
Code("G43T0")
Code("G43H0") ' turn off tool lenght compensation
WaitForMove

' Move to PARK
Code("G0G53 Z" & Z_PARK)
WaitForMove
' Move to XY position of tool correction sensor
' Code("G0G53 X" & SENS_X & " Y" & SENS_Y)
Code("G0G53 X" & SENS_X)
Code("G0G53 Y" & SENS_Y)
WaitForMove
' Get actual Z offset
ZOFFSET = GetOEMDRO(49)
' Rapid go down to safe distance above sensor
Code("G0G53 Z" & Z_SAFE)
WaitForMove

' Probe
ZTOP = GetDRO(2) ' actual Z position
ZGODOWN = ZTOP - MAX_DTRAVEL ' max down travel
Code("G31 Z" & ZGODOWN & "f" & SPD_FAST)
WaitForMove
ZUPFINE = GetOEMDRO(85) + Z_LIFT
Code("G1G53 Z" & ZUPFINE & "f" & SPD_FAST) ' go up Z_LIFT
WaitForMove
' fine probe
Code("G31 Z" & ZGODOWN & "f" & SPD_FINE)
WaitForMove
ZBOTTOM = GetVar(2002) 'get probe activation point

' Lift Z to abs park position
Sleep(50)
Code("G0G53 Z" & Z_PARK)
WaitForMove

ZABS = ZBOTTOM + ZOFFSET
ToolLen = -(SENS_Z - ZABS)
WaitForMove
SetOEMDRO(42, ToolLen)
Code("G43T" & Tool) ' G43 to sync value in system
Code("G43H" & Tool) ' G43 to sync value in system
WaitForMove
Message ("Z Value : " & ToolLen)
' -----------------------------------------------------------------------------
Sub WaitForMove ()
While IsMoving()
Sleep(15)
Wend
End Sub

Koniec makra.

Linijka "ToolLen = -(SENS_Z - ZABS)" po zmianie na "ToolLen = ZABS - SENS_Z", nie robi żadnej różnicy.
SENS_Z czy jest -70 czy tak jak w przykładzie 9.41 nie robi różnicy po za tym że daje inną długość narzędzia po pomiarze.
Nie znam się jeszcze na VisualBasic tak abym mógł rozszyfrować wszystko we własnym zakresie. Zrobiłem drobne zmiany bo nie działały najazdy na czujnik w osi "Y" i dodałem gotowca na wyłączenie współrzędnych maszynowych podczas pomiaru narzędzia i tyle co umiem.
Prosiłbym o pomoc bo ja naprawdę od roku walczę z tym i zniechęcam się.

Dodane 3 minuty 45 sekundy:
Makro o którym pisałem na początku nie zapisuje w ogóle długości narzędzia. Robi pomiar pierwszego i później zjeżdża na wymianę i mierzy drugie nie zapisując zmian w długości.

Dodane 1 minuta 37 sekundy:
Makro:

'witam
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'Poniżej prezentujemy skrypt realizujący pomiar długości narzędzia dla programu Mach3
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'Przygotowane przez [email protected] dla Akcesoria CNC , Styczeń 2013
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
',www.EBMiA.pl, www.akcesoria.cnc.info.pl
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

' Deklaracja zmiennych

Dim X,Y,Z,px,py,pz,wx,wy,wz,d,zpoz
Dim tool,Hits,zs,zn,Hitn
Dim w

'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Poniższe zmienne wymagają deklaracji przez użytkownika
'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

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

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

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


'!!!!!!!!!!!!
pz = -40 ' 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
'"""""""""""""""""""""""""""""""

' turn off machine coordinates (mach bug)
If GetOEMLed(16) Then
DoOEMButton(256)
End
End If
Message( "Dokonuję pomiaru długości narzędzia..." )
If GetOEMLed(807) Then
Message( "TC ERROR: X Axis not referenced!" )
End
End If
If GetOEMLed(808) Then
Message( "TC ERROR: Y Axis not referenced!" )
End
End If
If GetOEMLed(809) Then
Message( "TC ERROR: Z Axis not referenced!" )
End
End If
If GetOEMLed(825) Then
Message( "TC ERROR: Czujnik pomiaru cały czas załączony! pomiar przerwany." )
End
End If
If GetOEMLed(11) Then
Message( "TC ERROR: Do pomiaru narzędzia wyłącz wrzeciono!" )
End
End If

Tool = GetDRO(24) ' Get current tool index
' narzedzie 0 nie podlega pomiarowi
If(Tool = 0) Then
Message( "TC INFO: Narzędzie nr:0 nie podlega pomiarom długości" )
End
End If

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

X = GetoemDRO( 83 )
Y = GetoemDRO( 84 )
zm=getoemdro(85)
Z = GetoemDRO( 180)

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

MsgBox ("Teraz nastąpi przejazd do spółrzędnych czujnika pomiaru narzędzia. Po czym jeżeli wrzeciono jest uruchamiane ręcznie, wyłącz je, a następnie kliknij ok") ' wyświetlenie komunikatu

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

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


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

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

Message ("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-100 F400" '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 Z3 F500" '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-100 F150" '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


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


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 Z" & wz 'ustawienie osi Z na wysokości wymiany
While IsMoving()
Wend

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





MsgBox ("Wymień narzędzie i kliknij OK, Po czym nastąpi przejazd do spółrzędnych czujnika pomiaru narzędzia") ' 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 drugi pomiar")'komunikato pomiarze drugiego narzędzia



Code "G31 Z-100 F400" '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 Z3 F500" '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-100 F150" '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


Hitn = 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= Hits- Hitn ' obliczanie różnicy długości
d =Abs(d)

'message(Hits)
'message(Hitn)
'message(d)


zpoz=0

If Hits < Hitn Then zpoz=zm+d ' na podstawie wysokości zadziałań czujnika przy pomiarach obliczana jest wartość współczynnika korekcji wysokości osi Z
If Hits > Hitn 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



'""""""""""""""""""""""""""""""""""""""""""""''''
'''''''''''''''Uwagi''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''




'Program należy skopiować i przypisać do makra M6Start (zastępując to co jest tam wpisane), które znajduje się
' w folderze mach3/macros/nazwa naszego profilu. w programie należy zdefiniować sygnał probe, tak aby w momencie aktywacji czujnika
' w oknie diagnostyka zapalała się lampka przy sygnale digitaze. teraz wywołując makro m6 w gkodzie zostanie wykonany nasz podprogram
'pomiaru i ręcznej wymiany narzędzia.
' makro możemy również przypisać do przycisku Auto. pomiaru narzędzia




'podprogram działa tak, że najpierw następuje przejazd na punkt pomiaru, przed tym należy wyłączyć wrzeciono ręcznie
'( ale automatyczne wł/wyłączenie również jest zaimplementowane). następnie po pomiarze następuje na punkt wymiany narzędzia,
' wymianę potwierdzamy ok, teraz drugi pomiar i powrót na punkt początkowy. na koniec następuje uruchomienie wrzeciona ( o ile te było aktywne przed pomiarem).
' W makrze na początku należy zdefiniować punkty położenia czujnika i wymiany narzędzia. są to współrzędne maszynowe względem krańcówek bazowania.
' proszę przetestować i podać ewentualne uwagi. mam nadzieję że program spełni Państwa oczekiwania. pozdrawiam.

Koniec makra


Autor tematu
turbomachina
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 11 lip 2020, 14:41

Re: Wysokość narzędzia, czujnik

#4

Post napisał: turbomachina » 29 kwie 2021, 20:15

Czy cisza i brak odpowiedzi świadczy o tym, że koledzy nie wiedzą jak mi pomóc? Piszę coś nie tak? Sam mam się nauczyć VB czy inny powód?

ODPOWIEDZ Poprzedni tematNastępny temat

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