Problema con lo switch Home...

Sezione dedicata a Mach3
Rispondi
Maurizio Lenza
Newbie
Newbie
Messaggi: 3
Iscritto il: domenica 2 agosto 2015, 10:54
Località: Brescia

Problema con lo switch Home...

Messaggio da Maurizio Lenza » domenica 2 agosto 2015, 13:44

Dopo una aver guardato diversi post e non avendo trovando soluzione al mio problema ho deciso di chiedere al forum,

...spero di essere nella sezione giusta, e mi scuso fin da subito se così non fosse...

Forse mi dilungherò un po', ma voglio fornire i dati precisi così che possiate valutare la soluzione più corretta possibile:

Ho realizzato un braccio antropomorfo a 6 gradi di libertà, ho deciso di gestire gli assi con mach3, devo dire che tutto funziona correttamente, però è sorto un problema nel momento in cui ho stabilito le posizioni di home degli assi.

Caratteristiche:

Per esigenze geometriche, la posizione home degli assi si trova in un punto di carico minimo, cioè dove il carico è "circa" in linea con il baricentro, ne consegue che la posizione home è quasi a metà della corsa di ogni singolo asse.

I proximity sono montati nel seguente modo: posizione > 0 = 0, posizione > 0 = 1, quindi in tutte le posizioni comprese fra -90 e 0 il proximity restituirà segnale 1, per tutte le posizioni comprese fra 0 e +90 il proximity restituirà 0.

Non ho voluto montare degli encoder sugli assi per evitare costi su questo esperimento, ne consegue che se per vari motivi il motore perde uno step tutti i riferimenti vanno persi; il programma prosegue ma con le quote falsate rispetto alla posizione reale.

Considerazioni:

Perdere i riferimenti mentre è in esecuzione un programma (per questo tipo di progetto) non è importante, basta che poi possa ristabilire la posizione reale rispetto la posizione Home.

Soluzione ipotizzata:

Alla conclusione di ogni singolo programma riposizionare in Home tutti gli assi

Problema:

Non posso usare il comando G28 perché: il robot torna nella posizione Home, ma quella dettata dai riferimenti, ma essendo i riferimenti persi torna in una Home falsata.

Non posso usare il comando G28.1 perché: funziona bene solo la prima volta, quando accendo mach3 posso avere due situazioni:
A) Proximity non attivo (posizione >0), l'asse si sposta in direzioni negativa fino a trovare il punto di attivazione, poi inverte la direzione ad una velocità ridotta, quando il sensore si disabilita, fissa il punto Home.
B) Proximity già attivo (posizione <0), l'asse si sposta a velocità ridotta in direzione positiva, quando il sensore si disabilita, fisssa il punto di Home.

Fino a qui tutto bene, il problema nasce quando devo riposizionare l'asse in Home, ecco cosa succede:
A) Proximity non attivo (posizione >0), l'asse si sposta in direzioni negativa fino a trovare il punto di attivazione, poi inverte la direzione ad una velocità ridotta, quando il sensore si disabilita, fissa il punto Home. (ottimo, tutto bene fa quello che deve fare)
B) Proximity già attivo (posizione <0), l'asse non si muove per niente. (e qui casca l'asino)


Non ho mai fatto una macro in VB, però mi sono messo di lena ed ho imparato a fare quei comandi che sembravano necessari per l'utilizzo di un robot antropomorfo in modo coerente alle caratteristiche del robot stesso.

Però ora credo si entri in un campo di utilizzo più "avanzato" di quello che posso affrontare data la mia conoscenza appena superficiale di VB, e sono quindi a chiedere il Vostro aiuto.

Ecco due possibili strade da percorrere:

a) inserire un comando che faccia "dimenticare" a mach3 di avere già fatto gli zeri macchina, così da poter inserire tale comando prima dell'istruzione G28.1, in questo modo il comando verrà eseguito, sempre, come se fosse la prima volta.

b) inserire un comando che esegua un jog+ fino a portare lo stato del proximity a 0, per poi eseguire l'istruzione G28.1 da manuale.

Credo che entrambe le strade siano percorribili, ma hanno problematiche diverse, la prima è "semplice" ma non so se esiste un comando per cancellare lo stato di Home eseguita, la seconda forse più complicata, credo si possa risolvere con un if...then...
... if... imput1=1 jog+x then DoOEMBotton (1002)
una cosa di questo tipo, però ho bisogno di un aiuto per una sintassi corretta, e magari implementata di ulteriori istruzioni per una corretta esecuzione.

Grazie fin da subito, e mi scuso se ho esagerato con le spiegazioni.

Maurizio Lenza
Newbie
Newbie
Messaggi: 3
Iscritto il: domenica 2 agosto 2015, 10:54
Località: Brescia

Re: Problema con lo switch Home...

Messaggio da Maurizio Lenza » martedì 4 agosto 2015, 8:51

Problema risolto :)

Sono riuscito a sviluppare la macro sfruttando la seconda strada (If ... Then ...)...
...posto un listato di esempio, se c'è una strada migliore o riscontrate dei bug prego avvisarmi.

' Label1:
' Dim HomX As Integer
' HomX = GetDroLED (830)
' HomX = HomX * HomX
' If HomX > 0 Then
' Code "G91 G0 X0.25"
' Sleep (200)
' GoTo Label1
' Else
' Dim RexX As Integer
' RefX = 1022
' DoOEMBotton (RefX)
' While (IsMoving())
' Wend
' Dim ZerX As Integer
' ZerX = 1008
' DoOEMBotton (ZerX)
' End If

In questo modo ho risolto, e tutto sembra andare senza problemi...
...credo che questa istruzione possa essere utilizzata su qualunque piccola CNC dotata di Home switch

Resto in attesa di vostra opinione e suggerimento

Saluto Maurizio

Rispondi

Torna a “Mach3”