Aiuto per Macro M6 per cambio utensile

Sezione dedicata a Mach3
Rispondi
Avatar utente
Clyde
Newbie
Newbie
Messaggi: 24
Iscritto il: domenica 25 aprile 2021, 22:46

Aiuto per Macro M6 per cambio utensile

Messaggio da Clyde » venerdì 14 ottobre 2022, 14:21

Ciao a tutti,
ho "scritto" una macro M6Start e M6End, spudoratamente copiata ed adattata da una trovata in rete, in quanto non sono un grande esperto.
Da come le leggo, sembrano fare al caso mio, il problema è che se inserisco un cambio utensile in g-code, con l'ATC attivato nel config, legge correttamente M6Start, fa tutto quello che deve fare, e poi....riparte, senza completare la procedura in M6End. Le macro le ho fatte girare con il VBeditor di Mach3 e girano, senza errori di sintassi o simili. Mi sto scervellando a capire dove è il problema :oops:

Allego il codice:

M6Start (funziona):

Codice: Seleziona tutto

'ATTENZIONE! Questo script per funzionare deve avere:
'		1) la SafeZ correttamente impostata in Config->Safe_Z Setup. Nella schermata abilitare:
'			"Allow Safe_Z Moves"
'			"SafeZ DRO is in Machine Coordinates"
'			"Safe_Z" = X 
'			2) bisogna impostare correttamente le coordinate assolute del tastatore nelle variabili TastatoreX e TastatoreY


TastatoreX = 100
TastatoreY = 200
CambioUtensileX = 600
CambioUtensileY = 50
MisuraTastatura = 0

			'per sicurezza fermo il mandrino
			DoSpinStop()	
								
			'Si sposta sul tastatore
			Message ("Cerco il tastatore...")
			code "G53 G0 Z0"
			code "G53 G0 X" & TastatoreX & " Y" & TastatoreY 
			
			While IsMoving()
				Sleep 200
			Wend
			
			'Cerco Switch fino a -200   
			code "G31 Z" & (GetParam("ZDRO")-200) & "F150"    
			code "G4 P1"		
			While IsMoving()
				Sleep 200
			Wend
			
			MisuraTastatura = GetParam("ZMachine")   
			SetVar(1234, MisuraTastatura)
			Code "G4 P1.0" 'Pausa per fargli aggiornare il valore
			
			Message ("Misura utensile presa correttamente. Torno in posizione per cambio utensile...")
			'aspetta che abbia terminato il movimento
			While IsMoving()
				Sleep 200
			Wend
			code "G53 Z-10"
			code "G53 G0 X" & CambioUtensileX & " Y" & CambioUtensileY 'posizione per il cambio utensile
			
			While IsMoving()
				Sleep 200
			Wend		 
			 
			tool = GetSelectedTool()
			SetCurrentTool( tool )
			Code "G4 P1.0" 'Pausa per fargli aggiornare il valore
			Message ("Dopo il cambio utensile avviare la lavorazione")
			
M6End (non la "vede" proprio!):

Codice: Seleziona tutto

'ATTENZIONE! Questo script per funzionare deve avere:
'		
'		2) bisogna impostare correttamente le coordinate del tastatore nelle variabili TastatoreX e TastatoreY.
'		Saranno chiaramente le stesse inserite nella Macro M6Start;
'		3) indicare in SafeX lo spostamento dell'asse dopo la tastatura. E' una misura di sicurezza per evitare
'		che ad inizio lavorazione l'untensile urti il tastatore


TastatoreX = 100
TastatoreY = 200
SafeX = 30
CurrentFeed = GetOemDRO(818)    'Memorizzazione feedrate corrente
Dim ZPartenza
Dim MisuraTastatura
Dim ZArrivo
Dim DifferenzaTraUtensili
Dim NuovaZ


		'per sicurezza fermo il mandrino
		DoSpinStop()	
	
		ZPartenza = GetParam("ZDRO")     
		
		code "G53 Z-10"
		
		'si sposta sul tastatore
		Message ("Cerco il tastatore...")
		code "G53 G0 X" & TastatoreX & " Y" & TastatoreY
		Sleep (500)	
		While IsMoving()
			Sleep 500
		Wend	
		
		' Cerco Switch fino a -200
		code "G31 Z" & (GetParam("ZDRO")-200) & "F150"
		Sleep (500)
		While IsMoving()		    ' Aspetto mentre si muove
			Sleep 100
		Wend
		
		'recupera la misura della tastatura avvenuta nella routine M6Start
		'serve per misurare la differenza di lunghezza tra gli utensili
		MisuraTastatura = GetVar(1234)
			
		ZArrivo = GetParam("ZMachine")
		Code "G4 P2.00" 'Pausa per fargli leggere il valore
		
		DifferenzaTraUtensili = ZArrivo - MisuraTastatura
	
		NuovaZ = ZPartenza - DifferenzaTraUtensili	
	
		
		'debug
	'	MsgBox ("MisuraTastatura: " & MisuraTastatura & vbCrLf & _
	'		"ZArrivo: " & ZArrivo & vbCrLf & _
	'		"DifferenzaTraUtensili: " & DifferenzaTraUtensili & vbCrLf & _
	'		"NuovaZ: " & NuovaZ )
		
		Sleep (1000)
	
		'riporta la Z alla posizione di sicurezza
		Message ("Misure effettuate, torno in posizione sicura...")
		GotoSafeZ()
		'aspetta che abbia terminato il movimento
		While IsMoving()
			Sleep 500
		Wend
		Code "G4 P1.00" 'pausa
		
		code "G53 G0 X" & TastatoreX + SafeX 
		Sleep (500)	
		While IsMoving()
			Sleep 500
		Wend	
		Code "G4 P1.00" 'pausa
		
		
		Call SetDro (2, NuovaZ)        'Azzeramento Z con somma altezza probe
	
		
		Code "G4 P1.0"                    'Attesa Aggiornamento Dro.
		Code "F" &CurrentFeed           'Ritorno al feedrate Originale
		Message ("Nuova Z aggiornata. Riprendo lavorazione...")
		
		
		'MsgBox("NuovaZ: " & NuovaZ)
  
ormai sono "impallato", se qualcuno riesce a farmi uscire da questa impasse ha tutta la mia gratidutine ed una birra pagata! :)

Avatar utente
Clyde
Newbie
Newbie
Messaggi: 24
Iscritto il: domenica 25 aprile 2021, 22:46

Re: Aiuto per Macro M6 per cambio utensile

Messaggio da Clyde » lunedì 17 ottobre 2022, 9:20

nessun aiuto? Neanche una Macro che faccia un lavoro simile testata e fuzionante, che poi adatterei alle mie esigenze? Vorrei scrivermela io daccapo, ma non ne ho le competenze.. :(

torn24
God
God
Messaggi: 5075
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Aiuto per Macro M6 per cambio utensile

Messaggio da torn24 » lunedì 17 ottobre 2022, 9:39

Mi sembra più una macro per misura lunghezza utensile che di cambio utensile "non esiste un magazzino utensili".
Ma se divi eseguire sempre M6end, puoi mettere il codice nel file M6star, creando un unico programma.
M6star e M6end sono file nella cartella macro di mach3 mill, è in quei file che devi mettere il codice.
Ora se vede M6star e devi sempre eseguire le due macro, potresti mettere il codice di M6end nel file M6star.
Cioè tutto il codice necessario lo metti in M6star, se hai bisogno di una pausa metti uno sleep(2000) tra un codice e l'altro.
CIAO A TUTTI !

Avatar utente
Clyde
Newbie
Newbie
Messaggi: 24
Iscritto il: domenica 25 aprile 2021, 22:46

Re: Aiuto per Macro M6 per cambio utensile

Messaggio da Clyde » lunedì 17 ottobre 2022, 10:13

si, in effetti la macro misura l'utensile su un tastatore in una posizione predefinita, poi porta il mandrino in posizione cambio utensile (manuale, non ATC), poi "dovrebbe" attendere un mio start per ripartire dopo aver montato un nuovo utensile, misurare quest'ultimo di nuovo sul tastatore e infine calcolare il nuovo valore di z...
Se faccio un'unica Macro come faccio a far in modo che attenda affinche io possa montare l'utensile? (chiaramente ci vorrà un consenso dell'operatore, non una pausa predefinita.)
Nel caso, M6End poi lo lascio vuoto?

Grazie!

torn24
God
God
Messaggi: 5075
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Aiuto per Macro M6 per cambio utensile

Messaggio da torn24 » lunedì 17 ottobre 2022, 10:26

Concettualmente se la macchina sta eseguendo il programma, l'operatore "non mette le mani", è un potenziale pericolo.
Per azzerare l'utensile non deve essere in funzione la macchina!


Adesso ti dico come potresti fare per la pausa, ma non mi piace che ci sia anche un piccolissima possibilità di farsi male...

La soluzione è programmare un messaggio
msgbox("Premere per proseguire")

ti compare un messaggio a video con un pulsante OK, finché non lo premi non esegue le istruzioni successive, il programma è fermo.

Capisci che se per qualunque motivo qualcuno prema ok, e tu hai le mani sul mandrino, la macchina parte.
CIAO A TUTTI !

Avatar utente
Clyde
Newbie
Newbie
Messaggi: 24
Iscritto il: domenica 25 aprile 2021, 22:46

Re: Aiuto per Macro M6 per cambio utensile

Messaggio da Clyde » martedì 18 ottobre 2022, 8:53

Eh, purtroppo, essendo un cambio utensile manuale, l'utente deve "per forza" metterci le mani.
Ora ho tutto scablato e non posso provare, appena riassemblo il tutto provo come dici a fare un'unica M6start con tutto il codice (M6End la lascio vuota?) inserendo un Msgbox di richiesta conferma. Potrei anche mettere un carterino con uno switch di sicurezza per tutelare l'incolumità dell'operatore.
Spero che così funzioni, non ho ancora molto tempo per fare tentativi.. :(

Rispondi

Torna a “Mach3”