cerco macro per magazzino utensili a posizioni fisse

Sezione dedicata a Mach3
Rispondi
foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » lunedì 28 agosto 2017, 11:01

Buongiorno, possiedo una cnc auto costruita che già uso effettuando il cambio utensile da programma ma manualmente.
Vorrei dotarla di un magazzino utensili fisso e parallelo ad un asse ma ho la necessità di avere una macro che mi gestisca il cambio.
La macchina ha corse assi X1800Y600Z250 monta nema 42 e mach3 con con micro per referenziare gli assi e probe già in uso.
Ringrazio da subito chi mi può aiutare.

foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » lunedì 28 agosto 2017, 12:55

procedura di cambio utensile come questa https://www.youtube.com/watch?v=iY0AQ0uSDgs&t=200s

Avatar utente
Fiveaxis
God
God
Messaggi: 5721
Iscritto il: sabato 15 gennaio 2011, 12:08
Località: Monza e Brianza

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da Fiveaxis » lunedì 28 agosto 2017, 16:21

Usa il tasto "cerca"...Ricordo che qualcuno aprì un 3D in cui modificò il magazzino utensili di una CNC, ricreando, con l'aiuto dell'utente Pedro, la macro di ATC credo per Mack 3...
Buon lavoro
La macchina conta...ma la differenza la fa il "manico"!

foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » lunedì 28 agosto 2017, 17:13

Grazie per l' indicazione ma non riesco a trovare ciò di cui avrei bisogno. Descrivo in breve le operazioni da fare tramite macro.


1 azzeramento utensile sopra il pezzo per mezzo del probe che già ho funzionante
2 svincolo in Z dell' utensile alla lettura M06 da programma
3 posizionamento dell' utensile sopra il probe fisso (già presente) per misurazione dello stesso
4 deposito utensile in magazzino (fisso a più posizioni lungo l'asse X o Y)
5 prelievo dell' utensile indicato in programma
6 posizionamento dell' utensile sopra il probe fisso con misurazione dello stesso per differenza del precedente
7 ritorno in posizione di lavoro

foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » lunedì 28 agosto 2017, 17:17

Dimenticavo che fra le varie operazioni deve essere spento e riacceso il mandrino e il lubrificante ed attivato e disattivato il blocco/sblocco utensile

foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » mercoledì 30 agosto 2017, 10:18

Possibile che nessuno mi possa aiutare?

foxfly
Newbie
Newbie
Messaggi: 7
Iscritto il: domenica 21 giugno 2015, 23:08
Località: Venezia

Re: cerco macro per magazzino utensili a posizioni fisse

Messaggio da foxfly » domenica 3 settembre 2017, 17:52

Metto a disposizione ciò che uso attualmente, in allegato macro per azzerare l'asse Z sul pezzo:


CurrentFeed=GetOemDRO(818)
DoSpinStop()
Zmove=200.00
ZOffset=49.75
ZSal=ZOffset+10.25
StopZmove=0
If GetOemLed(825)=0 Then
DoOEMButton(1010)
Code"G4 P2"
Code"G31 Z-"& ZMove &"F120"
While IsMoving()
Sleep(200)
Wend
Probepos=GetVar(2002)
If Probepos=-ZMove Then
responce=MsgBox("**TASTATORE NON TROVATO**",4,"Probe**ERROR**")
Code"G1 Z0"
StopZmove=1
Code "F" &CurrentFeed
End If
If StopZMove=0 Then
Code "G1 Z0"& Probepos
While IsMoving()
Sleep(200)
Wend
Call SetDro(2,ZOffset)
Code"G4 P2"
Code"G1 F4000 Z"&ZSal
Code"(Z zeroed)"
Code"F" &CurrentFeed
End If
Else
Code"(Check Ground Probe)"
End If
Exit Sub



Una volta azzerato l'asse, quando lancio il programma viene eseguita quest'altra macro:



DoSpinStop() ' fermo il motore M5

' controllo se la macchina è stata referenziata

If Not GetLed (7) Then ' è referenziato X
vxled = 1
End If

If Not GetLed (8) Then ' è referenziato Y
vyled = 1
End If

If Not GetLed (9) Then ' è referenziato Z
vzled = 1
End If

Tled = vxled + vyled + vzled

If Tled = 3 Then ' se non sono referenziati X, Y e Z esco

' parametri lavorazione
ToolPathOnOff = 132 ' mi carico la definizione del tasto tool path
xzero = GetDRO (30) ' memorizzo la posizione iniziale ASSOLUTA di cambio utensile
yzero = GetDRO (31)
zzero = GetDRO (32)

xpos = GetDRO (0) ' memorizzo la posizione iniziale RELATIVA di cambio utensile
ypos = GetDRO (1)
zpos = GetDRO (2)

fpos = GetDRO (18) ' memorizzo il feedrate iniziale

' variabili del programma
fmax = 7000 ' imposto il feedrate massimo
fmin = 120 ' imposto il feedrate per la palpata

zavv = -150 ' distanza rapida di avvicinamento al palpatore
zmin = -220 ' profondità oltre il palpatore
xcut = -11 ' posizione X per cambio utensile
ycut = -460 ' posizione Y per cambio utensile

xtool = GetUserDRO (1200) ' posizione X del palpatore (Settings -> Tool Change Location)
ytool = GetUserDRO (1201) ' posizione Y del palpatore
ztool = GetUserDRO (1202) ' posizione Z del palpatore

' inizio programma
Call DoOEMButton (ToolPathOnOff) ' disabilito il tool path
code "G0 F" & fmax ' porto il feedrate al valore massimo
Code "G1 G53 Z0" ' porto Z a ZERO macchina

While IsMoving()
Wend
Call SetDro (2,0) ' porto il contatore Z a zero

code "G1 G53 X" & xtool & "Y" & ytool ' mi allineo sul palpatore
While IsMoving()
Wend
code "G1 Z" & zavv ' scendo in avvicinamento (fino a zavv)
While IsMoving()
Wend

code "G0 F" & fmin ' porto il feedrate al minimo

If IsSuchSignal (22) Then ' scendo sul palpatore per vedere la misura del utensile attuale
code "G31 Z" & zmin
While IsMoving()
Wend
End If

zuno = GetVar (2002) ' memorizzo il valore Z del utensile attuale
zsu = zuno + 2
code "G1 Z" & zsu ' salgo per la seconda misura
While IsMoving()
Wend

If IsSuchSignal (22) Then ' scendo per la seconda volta per vedere la misura del utensile attuale
code "G31 Z" & zmin
While IsMoving()
Wend
End If

zdue = GetVar (2002) ' memorizzo il valore Z del utensile attuale

zorig = (zuno + (zdue)) / 2

code "G0 F" & fmax ' riporto il feedrate al massimo

code "G1 G53 Z0" ' porto Z a ZERO macchina
While IsMoving()
Wend

code "G1 G53 X" & xcut & "Y" & ycut ' vado in una posizione comoda per il cambio utensile
While IsMoving()
Wend

MsgBox ("Ora si può cambiare la punta")

Response = MsgBox ("E' stato cambiato l'utensile?", 4 , "ATTENZIONE")
If (Response = 6) Then
i = 99
Else
MsgBox ("Riprendo il lavoro con l'utensile iniziale")
End If

If i <> 99 Then ' non faccio nulla

code "G1 G53 X" & xzero & "Y" & yzero ' torno alla posizione X Y zero pezzo
While IsMoving()
Wend
code "G1 X" & xpos & "Y" & ypos ' torno alla posizione X Y da dove ero partito
While IsMoving()
Wend
code "G1 F2000 G53 Z" & zzero ' riporto Z al valore zero pezzo
While IsMoving()
Wend
Call SetDro (2,0) ' porto il contatore Z a zero
code "G1 Z" & zpos ' riporto Z al valore di partenza
While IsMoving()
Wend
code "G0 F" & fpos ' riporto il feedrate al valore di partenza
MsgBox ("Per riprendere il lavoro premere 'START'")
DoSpinCW() ' riaccendo il mandrino M13 e riprendo il lavoro da dove l'avevo lasciato

Else

code "G1 G53 X" & xtool & "Y" & ytool ' mi allineo sul palpatore
While IsMoving()
Wend
code "G1 Z" & zavv ' scendo in avvicinamento
While IsMoving()
Wend

code "G0 F" & fmin ' porto il feedrate al minimo

If IsSuchSignal (22) Then ' scendo sul palpatore
code "G31 Z" & zmin
While IsMoving()
Wend
End If

zuno = GetVar (2002) ' memorizzo il valore Z del nuovo utensile
zsu = zuno + 2
code "G1 Z" & zsu ' salgo per la seconda misura
While IsMoving()
Wend

If IsSuchSignal (22) Then ' scendo per la seconda volta per vedere la misura del nuovo utensile
code "G31 Z" & zmin
While IsMoving()
Wend
End If

zdue = GetVar (2002) ' memorizzo il valore Z del nuovo utensile

znew = (zuno + (zdue)) / 2

code "G0 F" & fmax ' riporto il feedrate al massimo

code "G1 G53 Z0" ' ritorno Z ZERO macchina
While IsMoving()
Wend

code "G1 G53 X" & xzero & "Y" & yzero ' torno alla posizione X Y zero pezzo
While IsMoving()
Wend

code "G1 X" & xpos & "Y" & ypos ' torno alla posizione X Y da dove ero partito
While IsMoving()
Wend

zdif = zorig - (znew) ' controllo se l'utensile è più corto o piu lungo

code "G1 F2000 G53 Z" & zzero-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile
While IsMoving()
Wend
Call SetDro (2,0) ' porto contatore Z a zero
code "G1 Z" & zpos ' riporto Z al valore di partenza (inizio programma)
While IsMoving()
Wend
code "G0 F" & fpos ' riporto il feedrate al valore di partenza
MsgBox ("Per riprendere il lavoro premere 'START'")


End If

' riprendo il lavoro da dove l'avevo lasciato

Else
MsgBox ("Per poter cambiare l'utensile bisogna aver prima referenziato la macchina")
End If
Call DoOEMButton (ToolPathOnOff) ' abilito il tool path




Questa macro esegue la misurazione in una posizione fissa dell'utensile con cui mi sono azzerato in precedenza (prima macro) e per differenza azzera l'utensile richiamato dal programma. In pratica se l'utensile usato per azzerare l'asse Z sul pezzo è lo stesso di inizio programma, non serve sostituirlo, altrimenti dopo la sostituzione ritorna al posto fisso di misurazione e per differenza azzera l'utensile richiesto.
Ciò che vorrei fare è integrare questa macro con un magazzino utensili a più posizioni ma mantenere lo stesso sistema di misurazione.


Macro con magazzino:

Sub Main()
OldTool = GetOEMDRO (1200) 'Tool In spindle DRO You must add this to your settings screen
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )

tool = GetSelectedTool()
NewTool = tool

'----------------Tool Changer Macro (Bed Type)----------------------

MaxToolNum = 4 'Max number off tools for the changer
ToolDown = -50 'Z Pos to Get or drop a tool
ToolUp = 0 'Z Hieght to Rapid from tool to tool

'--------------------Auto Tool Zero---------------------------------

PlateThickness = GetUserDRO(1151) 'Z-plate thickness DRO
If GetOemLed (825)=0 Then 'Check to see if the probe is already grounded or faulty
DoOEMButton (1010) 'zero the Z axis so the probe move will start from here
Else
Code "(Z-Plate is grounded, check connection and try again)" 'this goes in the status bar if aplicable
End If
'-------------------------------------------------------------------
If NewTool = OldTool Then
Exit Sub
End If
While NewTool > MaxToolNum
NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)
Wend
Code "G00 G53 Z" & ToolUp
While IsMoving()
Wend
Call MovePos(OldTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
ActivateSignal(Output1) 'Turn On Draw bar to release the tool
Code "G4 P1.0" 'Wait for the tool to release
Code "G53 Z-0.5" & ToolUp
Call MovePos(NewTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
DeActivateSignal(Output1) 'Turn Off Draw bar to Clamp the tool
Code "G4 P1.0" 'Wait for the tool to Clamp
While IsMoving()
Wend
Code "G53 Z" & ToolUp
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )

'-----------------------------Auto Tool Zero-----------------------------

Code "G53 G0 X100 Y100" ' Move to Probe position
Code "G4 P5" ' this delay gives me time to get from computer to hold probe in place
Code "G31Z-10 F100" 'probing move, can set the feed rate here as well as how far to move
While IsMoving() 'wait while it happens
Wend
ZProbePos = GetVar(2002) 'get the axact point the probe was hit
Code "G0 Z" &ZProbePos 'go back to that point, always a very small amount of overrun
While IsMoving ()
Wend
Call SetDro (2, PlateThickness) 'set the Z axis DRO to whatever is set as plate thickness
Code "G4 P0.25" 'Pause for Dro to update.
Code "G0 Z1." 'put the Z retract height you want here
Code "(Z axis is now zeroed)" 'puts this message in the status bar
Code "G00 X" & x & " Y" & y 'Move back to where the tool change was prompted
End Sub
'---------------------------Tool Positio-------------------------------------
Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber
Case Is = 1
Xpos = -50.0
YPos = -100.0
Case Is = 2
Xpos = -50.0
YPos = -160.0
Case Is = 3
Xpos = -50.0
YPos = -220.0
Case Is = 4
Xpos = -50.0
YPos = -280.0

End Select

Code "G53 X" & XPos & " Y" & YPos
End Sub
Main



Aiuto!!!

Rispondi

Torna a “Mach3”