Modifica programma in V.B. per cambio utensili tornio cnc

Sezione dedicata a Mach3
Rispondi
Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Modifica programma in V.B. per cambio utensili tornio cnc

Messaggio da MORINO » domenica 27 aprile 2014, 21:04

Ciao , utilizzo ormai da un pò di tempo , un programmino in visual basic per comandare trammite M6 il cambio utensili sul mio tornio cnc , fino ad ora tutto sommato mi andava bene faceva il suo lavoro , con tutti i limiti manca ancora un sensore per la conferma dell'uscita toretta e rientro , mancano dei sensori di conferma della coretta posizione della toretta dopo la rotazione , continuo a rinviare ma dovro metterci le mani prima o poi , anche se non ho mai avuto problemi al cambio utensili si è sempre comportato bene.
mà il problema che vorrei risolvere è un altro che ora cercherò di spiegare.
Praticamente quando chiamo il cambio utensili dovrebbe riconoscere se il numero della cartella porta utensile che chiamo ad esempio T0121 è uguale a quello attualmente in toretta , se diverso allora si posiziona per il cambio utensili e cambia l'utensile e fino a quà tutto bene , verificato invece che il numero cartella è uguale dovrebbe anche verificare che l'offset utensile sia uguale , se è uguale anche lui allora non deve far niente(ovviamente in questo caso sara un errore di G-code errato da cam) , se invece l'offset e diverso dovrebbe modificare i dro a video con la nuova posizione data dal nuovo offset utensile tutto questo senza riposizionarsi per il cambio utensili , ma questo non avviene se non per la cartella T01xx che effetivamente funziona in maniera corretta , a esempio se ho T0120 e richiamo T0121 si modificano i dro con le nuove misure senza che la toretta vada in posizione di cambio utensile e attivi il pistone per l'uscita della toretta , mentre per le altre cartelle ogni volta si posiziona per il cambio utensili estrae la toretta e subito la ritrae e solo allora modifica le quote dei dro , è sicuramente un errore del programma.
Questa funzione mi serve perchè utilizzo un porta utensili multiplo , che mi permette di avere più utensili sulla stessa cartella a mo di fantina , in questo caso punta a forare piu utensile per gole frontali e vorrei avere la possibilità con un cambio utensili "fittizio" di avere sempre lo zero pezzo , senza bisogno di dover cambiare origini pezzo o altre menate .
Questo per me sta diventando un problema e sinceramente non riesco a venirne a capo , sicuramente per la mia scarsa conoscenza del linguaggio visual basic.
spero in un anima pia che mi faccia capire dove sta il problema, speriamo che pedro passi di qua.

'Macro cambio utensili automatico per toretta 6 posti tornio cnc
'verisone 1.0 25/04/2014
Sub Main()

NumSlots=6
OldTurretPos=(GetOEMDRO(803))
OldToolSlot=Abs(GetOEMDRO(803)/60)
NextTool = GetSelectedTool()
NextToolSlot =(NextTool-1)*360/NumSlots

If OldToolSlot = NextToolSlot Then
SetCurrentTool(NextTool)

Exit Sub
End If

If NextTool>6 Or nextTool<1 Then
Message("UTENSILE ERRATO")

Exit Sub
End If

MoveDis = (NextToolSlot-OldTurretPos)
If Abs(MoveDis) >180 Then If MoveDis < 0 Then
MoveDis = 360 + MoveDis
Else
MoveDis = MoveDis - 360

End If

Code "G53 x -10" 'riposizionamento della toretta
Code "G53 z -30" 'prima del cambio utensili
While IsMoving ()
Wend
ActivateSignal(OUTPUT4) 'attiva il pistone per avanzamento torretta
Code "G4 P0.5" 'tempo di ritardo per uscita pistone
While IsMoving ()
Wend
Code "G00 G91 A" & MoveDis
While IsMoving ()
Wend
DeActivateSignal(OUTPUT4) 'disattiva pistone per ritorno torretta
SetCurrentTool(NextTool)
Code "G90"

End Sub

Ciao e grazie
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

lelef
Senior
Senior
Messaggi: 1256
Iscritto il: domenica 9 settembre 2007, 19:14

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da lelef » domenica 4 maggio 2014, 12:20

While IsMoving ()
Wend


a cosa ti servono?

While IsMoving ()
Code "G00 G91 A" & MoveDis
Wend

ha un senso

While IsMoving ()
Wend
Code "G00 G91 A" & MoveDis

questo è come non ci fosse

Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da MORINO » domenica 4 maggio 2014, 13:14

ciao lelef , considera che il programma l'ho recuperato sul forum di machsupport , preso pari pari e modificato leggermente per le mie esigenze , 6 postazioni al posto di 8 , modificato l'uscita output e definito la posizione per il cambio utensili , il resto lo lasciato identico come l'ho trovato ed è sempre funzionato bene se non per il problema che non riconosce la cartella uguale superiore alla n°1 , ed essendo ignorante in visual basic non mi sono posto troppe domande a riguardo.
tu conosci il visual basic ? sei in grado di farmi capire cosa non funziona ?
grazie

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » domenica 4 maggio 2014, 18:21

mica ho capito. L'offset dovrebbe essere nella tavola utensili; quindi tu vorresti che se l'utensile selezionato è uguale a quello che era prima del cambio non faccia nulla praticamente, o ho capito male. Prova a mettere all'inizio del tuo programma



Dim old_tool As Single 'N. Utensile nel mandrino; 0 siginifica vuoto
Dim new_tool As Single 'N Utensile da prelevare, numeri ammessi da 1 a 8


old_tool = GetCurrentTool()
new_tool = GetSelectedTool()
If new_tool=old_tool Then 'se il nuovo utensile è uguale al vecchio allora non fare nulla
End 'esce dalla macro
End If


i While IsMoving () sono corretti così, non li toccare
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da MORINO » domenica 4 maggio 2014, 19:21

Ciao pedro , si se il numero dell' utensile chiamato e uguale non dovrebbe fare nulla in più se il numero dell' utensile è uguale mentre l'offset e diverso dovrebbe solo aggiornare i dro con l'offset richiamato dalla tabella utensili , invece ora lo fa solo per l'utensile n° T01xx mentre per le altre si posiziona in zona cambio utensili attiva la valvola per l'estrazione della toretta non fa ruotare la torretta e poi la ritrae e aggiorna i dro se l'offset e diverso.
nel primo messagio mi sono incasinato un pò con le spiegazioni ,peccato che non posso fare filmati ,si capirebbe un pò meglio cosa cerco di spiegare , per un fresatore probabilmente tutto ciò non ha senso , ma nel mio caso con più utensili posizionati su di unica cartella il tutto fà comodo.
dalla foto si capisce un pò meglio.
appena riesco provo la modifica che mi scritto e vediamo se funziona.
grazie
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

lelef
Senior
Senior
Messaggi: 1256
Iscritto il: domenica 9 settembre 2007, 19:14

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da lelef » domenica 4 maggio 2014, 19:56

vb lo conosco molto bene,
il 'salta tutto' di Pedro può andare
resta il fatto che quel codice ? da pulire
usa istruzioni case o un'array o degli else almeno, cosi è programmazione a spaghetti

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » domenica 4 maggio 2014, 20:03

si, sono programmi a "serpentone" di solito, non strutturati ma basta che funzionano, per una macro è pure troppo e fatte così le capiscono i "più". A prescindere da quello...

@Morino: scusa ma non avendo familiarità con i torni volevo capire una cosa. Se l'utensile N1 è 15mm, e faccio solo un esempio, e torno all'utensile 1 cosa cambia? mi spiego, se la torretta rotante ha 6 posizioni, utensile 1 15 mm, 2 28mm, 3 12mm etc quelle cose stanno nella tabella utensili e quando ci vai mette l'offset dell'utensile in tabella, o cambi in corsa?

riconosco che non ho capito cosa ti serve :roll:
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » lunedì 5 maggio 2014, 7:53

ho capito questo:

tu chiami gli utensili con un numero che rappresenta nelle ultime cifre il numero utensile mentre nelle centinaia il numero slot: giusto?

cioè 102 è il secondo utensile nel 1 slot, 302 è il secondo nel terzo slot. Mi sbaglio? Quindi nella tavola utensili, rifacendomi all'esempio fatto da me, hai l'utensile 102 con il suo offset e il 302 con l'altro offset o sbaglio io?
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da MORINO » lunedì 5 maggio 2014, 9:20

Ciao Pedro , si hai capito bene , praticamente quando richiamo un utensile ad esempio T0102 o T102 che è la stessa cosa , T01 richiama il numero di slot porta cartella mentre la seconda parte 02 richiama il corettore utensili che si trova nella tabella utensili, la tua confusione nasce nella tabella utensili che non ha nessuna relazione con lo slot porta cartella , ma contiene solo i corettori utensili o offset , quindi nell'esempio finale che facevi sarebbe 102= utensile 1 con offset 02 , 302= utensile 3 con offset 02 , quindi cosi mi troverei l'offset uguale su due utensili diversi, che difficilmente si usa almeno che non si abbiano due utensili praticamente uguali montati in due slot diversi con lo stesso inserto.
spero di essermi spiegato in maniera corretta . non sono una cima nello spiegarmi bene.
Grazie

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » lunedì 5 maggio 2014, 9:24

mi sto confondendo davvero :lol:

facciamo un esempio pratico: abbiamo 3 slot con 4 utensili ciascuno, tutti messi. avremo una tabella utensili con 12 offset, per forza mi pare o no? come fai la tabella utensili?
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da MORINO » lunedì 5 maggio 2014, 10:37

:mrgreen:
grazie per la pazienza pedro , si nel caso avessi 3 slot con 4 utensili ciascuno , avrei 12 offset .

esempio:
utensile 1 ----- utensile 2 -----utensile 3
--t0101 -------- t0205 ------- t0309
--t0102 -------- t0206 ------- t0310
--t0103 -------- t0207 ------- t0311
--t0104 -------- t0208 ------- t0312

io sono di bergamo , sai cosa si dice di noi bergamaschi: bravi lavoratori cattivi oratori :lol:

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » lunedì 5 maggio 2014, 11:28

la macro mi sembra ok. Controlli per favore se sulla pagina di general config hai queste due cose se sono marcate:

1) Angular properties (sta a sinistra) A axis is angular credo ovviamente di si

2) Rotational (sta al centro) Rot 360 rollover

e mi dici?



sei sicuro che sia

OldToolSlot=Abs(GetOEMDRO(803)/60)

e non debba essere invece

OldToolSlot=Abs(GetOEMDRO(803)*6)
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Avatar utente
MORINO
Member
Member
Messaggi: 499
Iscritto il: mercoledì 17 ottobre 2007, 21:45
Località: LAGO D'ISEO

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da MORINO » lunedì 5 maggio 2014, 21:24

:mrgreen: ci siamo
mi è bastato aggiungere le righe che mi hai scritto nel primo intervento che hai fatto nel post , e tutto si e messo a funzionare alla perfezione , senza riposizionarsi tutte le volte in zona di cambio utensili e modificando i dro al nuovo offset.
Il programmino grammaticalmente parlando mi sà che che non è perfetto , si insomma se lo leggesse uno del mestiere avrebbe da ridire , però funziona alla perfezione.
Pedro stò già ragionando su mach4 , e mi par di capire che non utilizzerà più visual basic , quindi questo programma non funzionerà in maniera corretta su mach4 senza un aggiustamento , ho potro pensare di farglielo digerire comunque ?
la lascio in allegato per i posteri
=D> grazie pedro


'Macro cambio utensili automatico per toretta 6 posti tornio cnc
'verisone 2.0 05/05/2014

Sub Main()

Dim old_tool As Single 'N. Utensile nel mandrino; 0 siginifica vuoto
Dim new_tool As Single 'N Utensile da prelevare, numeri ammessi da 1 a 6

old_tool = GetCurrentTool()
new_tool = GetSelectedTool()
If new_tool=old_tool Then 'se il nuovo utensile è uguale al vecchio allora non fare nulla
End 'esce dalla macro
End If

NumSlots=6
OldTurretPos=(GetOEMDRO(803))
OldToolSlot=Abs(GetOEMDRO(803)/60)
NextTool = GetSelectedTool()
NextToolSlot =(NextTool-1)*360/NumSlots

If OldToolSlot = NextToolSlot Then
SetCurrentTool(NextTool)

Exit Sub

End If

If NextTool>6 Or nextTool<1 Then
Message("UTENSILE ERRATO")

Exit Sub

End If

MoveDis = (NextToolSlot-OldTurretPos)
If Abs(MoveDis) >180 Then If MoveDis < 0 Then
MoveDis = 360 + MoveDis
Else
MoveDis = MoveDis - 360

End If

Code "G53 x -10" 'riposizionamento della toretta
Code "G53 z -30" 'prima del cambio utensili
While IsMoving ()
Wend
ActivateSignal(OUTPUT4) 'attiva il pistone per avanzamento torretta
Code "G4 P0.5" 'tempo di ritardo per uscita pistone
While IsMoving ()
Wend
Code "G00 G91 A" & MoveDis
While IsMoving ()
Wend
DeActivateSignal(OUTPUT4) 'disattiva pistone per ritorno torretta
SetCurrentTool(NextTool)
Code "G90"

End Sub
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

Avatar utente
Pedro
God
God
Messaggi: 7084
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: Modifica programma in V.B. per cambio utensili tornio cn

Messaggio da Pedro » lunedì 5 maggio 2014, 21:28

ciao, contento che tutto vada per il meglio :D

Mach4: ci vorrà ancora tempo, io ovviamente lo monterò ma terrò anche mach3 per parecchio fino a che tutte le cose che ho, macro e accozzaglie varie, saranno trasferite, e siccome non so a chi chiedere mi toccherà farmele da solo :lol:

tranquillo, ci vorrà un bel po' di tempo e poi si vedrà...magari se sei nelle vicinanze, del forum ,fammi pure un fischio :wink:

PS: i programmi perfetti sono quelli che funzionano bene, credimi
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Rispondi

Torna a “Mach3”