Pedro nn capisco questo passaggio in grassetto, in poche parole mi sembra di leggere che la pinza a petali si chiude prima di essersi alzata Z e aver lasciato l'utensile nel carosello?!
forse sono io che nn riesco a leggerla in sequenza temporale
' Macro cambio utensile automatico (ATC) Rel 1.02 del 15/10/2013
'**************** Definizione degli I/O (si considerano attivi ad 1 e disattivi a 0(
' Output 1 comando carosello fuori
' Input 1 sensore carosello fuori
' Output 2 comando carosello dentro
' Input 2 sensore carosello dentro
' Output 3 pinza mandrino
' Output 4 valvola aria pulizia mandrino
' Home B sensore di zero su carosello
' Output 5 freno mandrino
' Input 4 sensore di posizione mandrino
'*************** Definizione variabili
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
Dim B_pos (8) As Double ' sono le posizioni, in gradi, degli utensili messi sul carosello
Dim refrigerante As Single ' memorizza se si stava usando il refrigerante o no
Dim old_speed As Single ' memorizza la velocità del mandrino
Dim counter As Double 'yimeout fermo mandrino
'************** Definizione costanti
Const safe_z=-11 'posizione z sicura per il carosello
Const load_z = -44 'posizione z per presa utensile
Const timeout_carosello=10 'quanto tempo può impiegare il carosello per uscire o rientrare prima di errore
Const Z_speed=30 'velocità di movimento asse Z
Const B_speed=30 'velocità movimento carosello
' le posizioni degli utensili nel carosello. Non si è usata una formula in modo da poter tarare esattamente ogni posizione
B_pos(1)=0
B_pos(2)=45
B_pos(3)=90
B_pos(4)=135
B_pos(5)=180
B_pos(6)=45
B_pos(7)=270
B_pos(8)=315
' **** Inizio Programma ****
old_speed=GetRPM() 'legge la velocità mandrino
' controlla se esiste lo zero macchina per assi Z e B
If GetOEMLed(809)=0 Or GetOEMLed(811)=0 Then 'manca lo Zero macchina su Z o lo zero sul carosello
MachMsg("NON E'STATO FATTO LO ZERO MACCHINA","ERRORE",0) ' scrive messaggio di errore
Code("M5 M9") 'ferma il refrigerante e ferma il mandrino
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
' ferma refrigerante e ferma mandrino
refrigerante= GetOemLed(13) 'se stavo usando il refrigerante o no
Code("M9") 'ferma il refrigerante
Code "G53" 'passa a coordinate assolute macchina
Code "F" & Z_speed 'porta la velocità di Z a quella impostata per ATC
Code "G01 Z" & load_z 'porta Z nella posizione LOAD per far uscire il carosello e rimettere l'utensile dentro
While IsMoving() ' attendi fino a che si ferma
Wend
Code("S20") 'rallenta il mandrino
counter=300000
While(IsACTIVE(Input4)=0 Or counter > 0) 'attende l'index posizione mandrino o timeout
couter=counter-1
Wend
sleep (500) 'leggero ritardo
If (IsActive(INPUT4)=0) Then ' se il sensore del carosello fuori non è attivo
MachMsg("Il mandrino non si è fermato correttamente","ERRORE",0) ' scrive messaggio di errore
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
Code "M5"
ActivateSignal(Output5) 'attiva freno mandrino su inverter
sleep(1000) 'applica freno per 1 secondo
DeactivateSignal(Output5) 'toglie il freno
old_tool = GetCurrentTool()
new_tool = GetSelectedTool()
If(new_tool>8) Then ' se il sensore del carosello fuori non è attivo
MachMsg("Il numero consentito di utensili è tra 1 e 8","ERRORE",0) ' scrive messaggio di errore
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
If(old_tool>0) Then 'al primo cambio utensili mi trovo il mandrino vuoto altrimenti devo rimettere l'utensile a posto
' *********** Rimette l'utensile dentro il carosello
' rimettere l'utensiel a posto
Code "F" & B_speed
Code "G01 B" & B_pos(old_tool)
While IsMoving() ' attendi fino a che si ferma
Wend
' porta fuori il carosello
ActivateSignal(Output1) 'sposta il carosello in fuori
sleep(timeout_carosello * 1000) ' attende che il carosello sia fuori
If(IsACTIVE(Input1)=0) Then ' se il sensore del carosello fuori non è attivo
MachMsg("IL CAROSELLO E' BLOCCATO","ERRORE",0) ' scrive messaggio di errore
ActivateSignal(Output2) 'riporta il carosello dentro
sleep(timeout_carosello*1000) 'aspetta
DeactivateSignal(Output2)
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
ActivateSignal(Output3) 'apre la pinza del mandrino per mollare l'utensile
sleep(1000) 'aspetta un secondo
ActivateSignal(Output4) 'flush aria compressa per pulizia
sleep(500) 'aspetta mezzo secondo
DeActivateSignal(Output4) 'ferma flush aria compressa per pulizia
End If
' *********** Va a prendere il nuovo utensile
Code "F" & Z_speed 'porta la velocità di Z a quella impostata per ATC
DeActivateSignal(Output3) 'chiude la pinza del mandrino
Code "G01 Z" & safe_z 'porta Z nella posizione Safe per far ruotare il carosello
While IsMoving() ' attendi fino a che si ferma
Wend
Code "F" & B_speed
Code "G01 B" & B_pos(new_tool) 'si posiziona sul nuovo utensile
While IsMoving() ' attendi fino a che si ferma
Wend
' porta fuori il carosello
ActivateSignal(Output1) 'sposta il carosello in fuori
sleep(timeout_carosello * 1000) ' attende che il carosello sia fuori
If(IsACTIVE(Input1)=0) then ' se il sensore del carosello fuori non è attivo
MachMsg("IL CAROSELLO E' BLOCCATO","ERRORE",0) ' scrive messaggio di errore
ActivateSignal(Output2) 'riporta il carosello dentro
sleep(timeout_carosello*1000) 'aspetta
DeactivateSignal(Output2)
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
Code "F" & Z_speed 'porta la velocità di Z a quella impostata per ATC
ActivateSignal(Output3) 'apre la pinza del mandrino
Code "G01 Z" & load_z 'porta Z nella posizione di presa
While IsMoving() ' attendi fino a che si ferma
Wend
ActivateSignal(Output3) 'chiude la pinza del mandrino
sleep(1000) 'attendi 1 secondo
ActivateSignal(Output2) 'riporta il carosello dentro
sleep(timeout_carosello*1000) 'aspetta
DeactivateSignal(Output2)
If(IsACTIVE(Input2)=0) Then ' se il sensore del carosello fuori non è attivo
MachMsg("IL CAROSELLO E' BLOCCATO","ERRORE",0) ' scrive messaggio di errore
ActivateSignal(Output2) 'riporta il carosello dentro
sleep(timeout_carosello*1000) 'aspetta
DeactivateSignal(Output2)
DoOEMButton(1003) 'ferma l'esecuzione del gcode
End 'esce dalla macro
End If
Code "G54" 'passa a coordinate precedenti
Code "F" & Z_speed 'porta la velocità di Z a quella impostata per ATC
Code "G01 Z" & GetToolchangestart(2) 'rimette Z dove era prima della macro
While IsMoving() ' attendi fino a che si ferma
Wend
If refrigerante Then
Code "M7" 'se il refrigerante era acceso lo rimette
End If
END
la sequenza temporale di tutti i passaggi io la interpreto:
controlla se esiste 0 macchina
ferma refrigerante ecc. ecc.
rimette utensile a posto (se c'è)
porta fuori il carosello
va a prendere il nuovo utensile
porta fuori il carosello
fine
è questo che nn mi torna, o meglio che nn so leggere!!!
nn mandarmici pedro!!!
