Tutorial: azzeramento pezzo semi-automatico con probe

Sezione dedicata a Linuxcnc
Rispondi
kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da kylotron » lunedì 27 maggio 2019, 19:15

Mi è stato chiesto più volte di spiegare la configurazione, in LinuxCNC delle macro da me usate per azzerare il pezzo o altre cosette simili.

Partiamo dallo spiegare che LinuCNC è un qualcosa di strepitoso... espandibile praticamente all'infinito... basta capirci qualcosa! :D

La logica di funzionamento non è difficile da comprendere.
Si ha un'interfaccia (ce ne sono di diverso tipo) che possiamo personalizzare in modo abbastanza facile...
...e ci sono, essenzialmente, delle SUBROUTINE (e/o MACRO)... ovvero dei pezzi di codice GCODE che usiamo per far fare alla macchina dei movimenti prestabiliti.

Una delle macro più utili, almeno per chi ha poca dimestichezza con il mondo Linux e con LinuxCNC nello specifico, è quello dell'azzeramento del pezzo.

In pratica quello che dobbiamo arrivare ad avere è:

1) accendo la macchina e faccio l'azzeramento degli assi.
2) posiziono il pezzo nel punto in cui mi fa comodo
3) porto la testa della macchina sopra il pezzo
4) posiziono un sensore (basetta di rame di spessore noto collegata all'ingresso probe-in) sul pezzo
5) premo un pulsante e...
6) la testa si abbassa fino a toccare il sensore
7) la macro utilizzata azzererà l'asse Z considerando lo spessore, noto, della nostra basetta.

A questo punto non ci resta che avviare il programma che abbiamo preparato... tenendo bene in mente che questo va preparato con lo zero dell'asse Z posizionato SOPRA il pezzo... quindi con lavorazione che prevedono una Z NEGATIVA verso l'interno del pezzo (e quindi verso il piano).
schermata.png
Per far funzionare la serie di pulsanti sulla destra del programma, sono sufficienti alcune modifiche ad un paio di files di configurazione.


Nel File .INI della nostra configurazione, bisogna aggiungere o modificare le "chiamate" alle macro...

Codice: Seleziona tutto

[DISPLAY]
PYVCP 				        = custom_panel.xml

[RS274NGC]
FEATURES 			        = 30
SUBROUTINE_PATH 		    	= ./nc_subroutines

[HAL]
POSTGUI_HALFILE             	= custom_postgui.hal

[HALUI]
MDI_COMMAND 			    	= O <home_position> call
MDI_COMMAND 			    	= O <safe_position> call
MDI_COMMAND 			    	= O <end_position> call
MDI_COMMAND 			    	= O <azzeramento_pezzo> call
MDI_COMMAND 			    	= O <azzeramento_utensile> call

[PLATESENSOR]
SECUR_Z					= 100
MAXPLATE					= 99
THICKNESS		    		= 1.5
FASTFEED					= 200
SLOWFEED				= 10
Gli ultimi 2 sono dei pulsanti visibili nell'immagine li sto usando per fare dei test... ignorateli!

Ora creiamo i pulsanti sull'interfaccia grafica. Per farlo bisogna creare o modificare il file "custom_panel.xml":

Codice: Seleziona tutto

<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
	<labelframe text="Movimenti">
    	     <font>("Helvetica",8)</font>
		<vbox>
			<button>
				<halpin>"rapid-to-home"</halpin>
				<text>"Home Position"</text> 
				<font>('Helvetica',8)</font>
			</button>
			
			<button>
				<halpin>"safe-z"</halpin>
				<text>"Safe Z"</text> 
				<font>('Helvetica',8)</font>
			</button>
	
			<button>
				<halpin>"end-position"</halpin>
				<text>"End Position"</text> 
				<font>('Helvetica',8)</font>
			</button>
		</vbox>
	</labelframe>

	<label>
		<text>" "</text>
		<font>("Helvetica",10)</font>
	</label>

	<labelframe text="Azzeramenti">
    	     <font>("Helvetica",8)</font>
		<vbox>

			<button>
				<halpin>"azzeramento_utensile"</halpin>
				<text>"Azzeramento UTENSILE"</text> 
				<font>('Helvetica',8)</font>
			</button>

			<button>
				<halpin>"azzeramento_pezzo"</halpin>
				<text>"Azzeramento PEZZO"</text> 
				<font>('Helvetica',8)</font>
			</button>
		</vbox>
	</labelframe>
</pyvcp>

Bisogna, poi, impostare i comandi affinché l'interfaccia grafica riconosca la pressione del pulsante ed esegua il relativo pezzo di codice...
Per farlo dobbiamo modificare il file "custom_postgui.hal" aggiungendo quanto segue

Codice: Seleziona tutto

net remote-rapid-to-home halui.mdi-command-00 <= pyvcp.rapid-to-home
net remote-safe-z halui.mdi-command-01 <= pyvcp.safe-z
net remote-end-position halui.mdi-command-02 <= pyvcp.end-position
net remote-azzeramento_pezzo halui.mdi-command-03 <= pyvcp.azzeramento_pezzo
net remote-azzeramento_utensile halui.mdi-command-04 <= pyvcp.azzeramento_utensile


Infine bisogna creare le 5 subroutine nella sotto-cartella "nc_subroutines"

HOME POSITION

Codice: Seleziona tutto

O<home_position> SUB

	G53 G0 Z#<_ini[AXIS_2]HOME>
	G53 G0 X#<_ini[AXIS_0]HOME> Y#<_ini[AXIS_1]HOME>

O<home_position> endsub 
M2
SAFE Z

Codice: Seleziona tutto

O<safe_position> SUB

	G53 G0 Z#<_ini[AXIS_2]HOME>


O<safe_position> endsub 
M2
END POSITION

Codice: Seleziona tutto

O<end_position> SUB

	G53 G0 Z#<_ini[AXIS_2]HOME>
	G53 G0 X#<_ini[AXIS_0]HOME> Y[#<_ini[AXIS_1]MAX_LIMIT>-5]

O<probe_position> endsub
M2
AZZERAMENTO PEZZO

Codice: Seleziona tutto

O<azzeramento_pezzo> SUB

	;(MSG, Macro per l'azzeramento sul PEZZO con plate da 1.50 mm)

#<_UseInches> 		= 0
#<_TravelZ> 		= #<_ini[PLATESENSOR]SECUR_Z>
#<_TravelFeed> 		= 1000.0
#<_ProbeFastZ> 		= #<_ini[PLATESENSOR]SECUR_Z>
#<_ProbeHeight> 	= #<_ini[PLATESENSOR]THICKNESS>
#<_ProbeMinZ> 		= [#<_ini[PLATESENSOR]SECUR_Z> - #<_ini[PLATESENSOR]MAXPLATE>]
#<_ProbeRetract> 	= 1
#<_ProbeFastFeed> 	= #<_ini[PLATESENSOR]FASTFEED>
#<_ProbeFeed1> 		= #<_ini[PLATESENSOR]FASTFEED>
#<_ProbeFeed2> 		= #<_ini[PLATESENSOR]SLOWFEED>
#< Probe_System>	= #5220

G92.1
;G49
M70
M5
G21
G28.1	;(ABSOLUTE Z = #5163)
G90
G40

G53 G1 F[#<_TravelFeed>] Z[#<_TravelZ>]

G54 G1 F[#<_ProbeFeed1>] G91

G90

	; Azzero la Z rispetto al sensore
	G10 L20 P#< Probe_System> Z#<_ProbeHeight>
	
	

G53 G1 F[#<_TravelFeed>] Z[#<_TravelZ>]                         ( return to safe level )

M72

O<azzeramento_pezzo> endsub [#5070] 
M2
AZZERAMENTO UTENSILE

Codice: Seleziona tutto

O<azzeramento_utensile> SUB

	questo non ve lo posto perché tanto mi da problemi  :( 

O<azzeramento_utensile> ENDSUB [1]
M2

Teoricamente è tutto apposto.
Bisogna solo impostare bene le variabili e fare qualche prova (consiglio, come prima prova, di reggere il sensore con una mano tenendolo sollevato dal piano... così se per qualche motivo non dovesse rilevare il contatto, avete tutto il tempo per premere il pulsante di Emergency Stop!


Se avete problemi... chiedete pure che sicuramente risolviamo.

Bernardo
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login
La mia piccolina....

Avatar utente
danieleee
God
God
Messaggi: 3664
Iscritto il: lunedì 8 marzo 2010, 22:38
Località: Borgo Vercelli

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da danieleee » lunedì 27 maggio 2019, 21:26

Emc2 è il mio sogno quanto il mio incubo! #-o
Ci avessi capito qualcosa, col cavolo avrei usato Mach4 per il tornio!

billielliot
Senior
Senior
Messaggi: 1747
Iscritto il: martedì 16 ottobre 2007, 23:23
Località: Trezzo sull'Adda

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da billielliot » martedì 28 maggio 2019, 10:04

G R A Z I E Bernardo!

Mauro :-)
Amat victoria curam

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » martedì 28 maggio 2019, 13:02

Grazie, dopo il tutorial il mio cervello è meno appannato :D .

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » martedì 28 maggio 2019, 13:53

non me ne vogliate, se faccio qualche domanda da emerito ignorante. Una è questa: volendo fa muovere un asse avanti e indietro sotto la pressione di due distinti tasti , creo due macro diverse da collegare ai rispettivi tasti o devo connettere i tasti ,via sw si intende ,ai pin della porta parallela?

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da kylotron » martedì 28 maggio 2019, 14:41

Con LinuxCNC gli assi si muovono premendo alcuni specifici tasti sulla tastiera...

Asse X e Asse Y = tasti cursore
Asse Z = PgUp e PgDown

Per approfondire per chi usa CNC a 3 assi...

http://wiki.linuxcnc.org/cgi-bin/wiki.p ... _Shortcuts
La mia piccolina....

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » martedì 28 maggio 2019, 19:29

grazie mille. ho trovato linuxcnc integrator sul quale ho visto ci sono parecchie cosette. Appena ho tempo cercherò di approfondire.
ciao

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » venerdì 31 maggio 2019, 18:03

Intanto grazie per la disponibilità. Ho copiato i tuoi file di configurazione e quando avvio , un solo codice per provare e quindi un solo tasto, ma dopo aver azzerato il cnc lancio il programma di azzeramento pezzo e questo non parte. Mi da appunto un errore dove sembra che non trovi il file. Ho smanettato un po (tanto) ma senza risultati. Pensavo appunto di allegare i miei file di config in modo da farli visionare visto che sono prossimo ad un esaurimento :D
linuxcnc2.7.14 su ubuntu 12.04.rar
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da kylotron » venerdì 31 maggio 2019, 19:44

La sottocartella nc_subroutine va inserita nella cartella della tua configurazione.

nel file my-mill.ini hai la seguente riga:

Codice: Seleziona tutto

SUBROUTINE_PATH               = ./nc_subroutines
in Linux il ./ si riferisce alla directory nella quale si trova il file che contiene tale assegnazione (per completezza, /nome-cartella , senza il . davanti alla / , invece si riferisce alla root. Quindi ad una cartella contenuta nella root che è la directory principale del tuo hard disk).

Quindi linuxcnc sta andando a cercare il file che non trova nella cartella

/home/gio/linuxcnc/config/my-mill/nc_subroutines

che non esiste.


Quindi o sposti la cartella da nc_files a config/my-mill

oppure cambi l'indirizzo relativo "SUBROUTINE_PATH = ./nc_subroutines" in uno assoluto. Che nel tuo caso sarà

Codice: Seleziona tutto

SUBROUTINE_PATH = /home/gio/linuxcnc/nc_files/nc_subroutines

Fammi sapere
La mia piccolina....

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » venerdì 31 maggio 2019, 19:57

ho fatto un passo avanti. La funzione viene chiamata ma si ferma alla riga #<_ini[PLATESENSOR]SECUR_Z> :shock: .???

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » venerdì 31 maggio 2019, 20:03

con precisione linuxcnc mi dice parametro non definito. Grazie mille
Si , poi con calma mi sono rimesso a rivedere il tutto e mi sono accorto che non solo avevo indirizzato male la funzione ma era scritto male anche il nome nella cartella. Ciao

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da kylotron » sabato 1 giugno 2019, 10:00

Riguardati il mio file ini postato in alto.
L'ultima serie di variabili sono proprio PLATESENSOR.
Se le ometti... lo script non funziona volendo al posto di #<_ini[PLATESENSOR]SECUR_Z> puoi sostituire il valore, in mm, dello spessore del tuo sensore.

Quindi nello script verrebbe, ad esempio:

Codice: Seleziona tutto

#<_TravelZ> 		= 1.5 
La mia piccolina....

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » sabato 1 giugno 2019, 12:40

grazie mille. Avevo intuito ieri sera ma era già troppo tardi per provare. Guarderò oggi se mi è concesso :D .
Ciao e grazie ancora

giovanni_61
Newbie
Newbie
Messaggi: 9
Iscritto il: domenica 15 gennaio 2012, 16:00
Località: Italia

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da giovanni_61 » sabato 1 giugno 2019, 19:37

Ciao,sono riuscito a far funzionare il programma, avevo distrattamente omesso la configurazione dello stesso nel file .INI. E' sorto pero un altro problema : azzero la macchina, lancio il programma , l'asse Z viene giù fermandosi al punto minimo sw senza risentirne del contatto con il probe, sembra come se il probe non fosse richiamato. Ho controllato in Hal meter , il probe funziona correttamente. Ho caricato per curiosità un altro programma simile trovato in rete (7xCNC) e funziona. Ti allego nuovamente i file aggiornati, quando puoi mi ci daresti un'occhiatina ? Potrebbe essere un problema di configurazione dell'asse z? Ho provato a settarlo come il tuo , ma niente da fare e non capisco il perchè(che è praticamente normale per uno come me :D ) la voce SCALE del file .INI è negativa perchè diversamente i tasti funzionavano al contrario. Grazie infinite.
Giovanni
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: Tutorial: azzeramento pezzo semi-automatico con probe

Messaggio da kylotron » sabato 1 giugno 2019, 20:26

Nella mia macchina l'asse Z ha un valore di Z=0 nel punto più alto e di Z=-100 nel punto più basso.
Nel tuo caso non ne ho idea ^_^

Appena posso guardo i file. Forse domani pomeriggio!
La mia piccolina....

Rispondi

Torna a “Linuxcnc”