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