Hello Guest it is March 28, 2024, 06:28:23 PM

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Pierpaolo

Pages: 1 2 »
1
Thanks TPS...
But for you is the macro M6 defect or there is a problem when these two macros to work togeder?

2
is it possible that the problems are in this follow macro?
becouse the M6 macro is ok...

Amove = -300   ' massimo movimento per ricerca probe verso Z-
speed = 300   ' velocità di ricerca
lo_speed = 30   ' velocità di ricerca low
Aret = 25   ' di quanto arretra l'asse dopo il sensing per il secondo approccio
Amove1 = -(Aret * 5)   ' massimo movimento per ricerca probe on Z- per il secondo punto
curr_tool = GetCurrentTool()   ' tool nel mandrino




If GetOemLed (825) <> 0 Then ' sente se il probe è triggerato o scollegato

Code "(Il probe è triggerato o scollegato o il modulo MP1 è spento)"
End
Else


Code "M5"   ' ferma il mandrino
Code "M8"   ' ferma il refrigerante
GotoSafeZ()   ' porta in posizione di sicurezza Z
While IsMoving()   ' completa il percorso
Wend

Code "M6 T8"   ' carica il probe dalla posizione 8 del carosello


Code "G91"   ' spostamento relativo
CurrentFeed = GetOemDRO(818) ' legge il feedrate corrente

' primo trigger Z


Code "F" & speed   ' porta il feedrate alla velocità di approccio

Code "G31 Z " & Amove
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend

' secondo trigger Z

Code "G01 Z " & Aret
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend

Code "F" & lo_speed   ' porta il feedrate alla velocità di approccio low
Code "G31 Z " & Amove1
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend





SetOemDRO(802,0)   ' offset asse Z

Code "F" & speed   ' porta il feedrate alla velocità iniziale


Code "M6 T0" & curr_tool   ' ricarica il tool che era nel caroselo

Code "F" & CurrentFeed ' ripristina il feedrate originale
Code "G90"   ' rimette lo spostamento assoluto
GotoSafeZ()   ' riporta in posizione di sicurezza Z
While IsMoving()   ' completa il percorso
Wend


End If

3
Tryed....I'm apologize but the same results..
the macro M6 run While the Z axis find the Indicize input :(

4
Okk I Will try it!

5
Exactly what you change?

6
Now I try to write the code sleep (20000) after M6T8 and Now the toolchange run while wait 20 seconds... for me the macro need a code that told to Mach3 to wait the tool change and not run for find the digitize while run the M6

7
When execute m6t8 in the macro for zero pièce, the machine run directly to find the indicize but not wait the toolchange and In the screen of mach3 the tool is update to 8.
I don't know why!

8
I try it... the results is the same :(

9
this is the macro that I use from 2015... run perfectly for my machine...



' Macro cambio utensile automatico (ATC) Rel 4.00 del 25/9/2014

'**************** 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 asse B sensore di zero su carosello
'   Output 8 perno freno mandrino               
'      Input 4 sensore di posizione mandrino
'   Output 7 Accende pompa circuito pneumatico

'*************** 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 tool As Single               'N. Utensile nel mandrino; 0 siginifica vuoto
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               'timeout fermo mandrino
counter=300000                  'counter per attendere che il mandrino si fermi


'************** Definizione costanti

Const safe_z=-1               'posizione Z sicura per non urtare il carosello
Const load_z = -85               'posizione Z per presa utensile
Const timeout_carosello=3            'quanto tempo può impiegare il carosello per uscire o rientrare prima di errore
Const Z_speed=3000               'velocità di movimento asse Z
Const B_speed=4000               'velocità movimento carosello
Const vel_mandrino=40               'velocità mandindrino minima per posizionamento presa utensile

' 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)=225
B_pos(7)=270
B_pos(8)=315



                     
'            **** Inizio Programma ****
   old_speed=GetRPM()               'legge la velocità mandrino


   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
   
   If(new_tool>8  Or new_tool<0) Then         'il numero utensile > 8 o < 0
      MachMsg("Il numero consentito di utensili è tra 0 e 8","ERRORE",0) 'scrive messaggio di errore
      Code "M9"               'ferma il refrigerante
      Code "M5"               'ferma il mandrino
      DoOEMButton(1003)            'ferma l'esecuzione del gcode
      End                  'esce dalla macro
   End If
 
    tool = GetSelectedTool()
     SetCurrentTool( tool )

   
' controlla se esiste lo zero macchina per assi Z e B
   
   If (GetOEMLed(809) And  GetOEMLed(811)) 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 "M9"               'ferma il refrigerante
      Code "M5"               'ferma il mandrino
      DoOEMButton(1003)            'ferma l'esecuzione del gcode
      End                  'esce dalla macro
   End If

' Attiva Pompa circuito pneumatico   
   ActivateSignal(Output7)               'attiva pompa
   
' 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 G53 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 "S"&vel_mandrino               'rallenta il mandrino
   Code "M3"                  'parte il mandrino
   ActivateSignal(Output8)               'esce il perno freno mandrino
   sleep(3500)                  'aspetta 5 secondi
   Code "M5"                  'ferma  il mandrino,che comuque dovrebbe fermarsi appena il perno entra nella sede
   
   
'   While(IsActive(INPUT4)=FALSE And counter > 0)       'attende l'index posizione mandrino o timeout
'   counter=counter-1
'   Wend
counter=300000
'   Code "M5"
'   ActivateSignal(Output8)               'spenge mandrino
'   sleep(1000)                  'applica freno per 1 secondo
'   DeactivateSignal(Output8)            'toglie il freno
'   sleep (500)                  'leggero ritardo

   If (IsActive(INPUT4)=FALSE)   Then         'se il sensore index del mandrino non è attivo
      MachMsg("Il mandrino non si è fermato correttamente","ERRORE",0)   'scrive messaggio di errore
      Code "M5"               'spenge il mandrino
'Disattiva pompa circuito pneumatico   
      DeactivateSignal(Output7)            'disattiva pompa
      DoOEMButton(1003)            'ferma l'esecuzione del gcode
      DeActivateSignal(Output8)            'rientra il perno fermo mandrino
      End                  'esce dalla macro
   End If

If(new_tool=0) Then   'se devo riporre l'utensile senza caricarne uno nuovo

'   *********** Rimette l'utensile dentro il carosello

Code "F" & B_speed   
   Code "G01 G53 B" & B_pos(old_tool)            'posiziona il carosello sull'utensile da riporre
   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
   DeactivateSignal(Output1)

   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
'Disattiva pompa circuito pneumatico   
      DeactivateSignal(Output7)            'disattiva pompa
      DeActivateSignal(Output8)            'rientra il perno fermo mandrino
      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
   Code "F" & Z_speed               'porta la velocità di Z a quella impostata per ATC
   Code "G01 G53 Z" & safe_z               'porta Z nella posizione Safe per far ruotare il carosello
   While IsMoving()               'attendi fino a che si ferma
   Wend
   DeActivateSignal(Output3)            'chiude la pinza del mandrino
   ActivateSignal(Output2)            'riporta il carosello dentro
      sleep(timeout_carosello*1000)         'aspetta
      DeactivateSignal(Output2)
      DoOEMButton(1003)            'ferma l'esecuzione del gcode
'Disattiva pompa circuito pneumatico   
      DeactivateSignal(Output7)            'disattiva pompa
      DeActivateSignal(Output8)            'rientra il perno fermo mandrino
      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'utensile a posto


   Code "F" & B_speed   
   Code "G01 G53 B" & B_pos(old_tool)            'posiziona il carosello sull'utensile da riporre
   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
   DeactivateSignal(Output1)

   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
'Disattiva pompa circuito pneumatico   
      DeactivateSignal(Output7)            'disattiva pompa
      DeActivateSignal(Output8)            'rientra il perno fermo mandrino
      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   
If(new_tool>0) Then                  ' se il nuovo utensile è da 1 a 8 allora lo prende                      
   Code "F" & Z_speed               'porta la velocità di Z a quella impostata per ATC
   Code "G01 G53 Z" & safe_z               'porta Z nella posizione Safe per far ruotare il carosello
   While IsMoving()               'attendi fino a che si ferma
   Wend
   DeActivateSignal(Output3)            'chiude la pinza del mandrino
   Code "F" & B_speed   
   Code "G01 G53 B" & B_pos(new_tool)            'si posiziona sul nuovo utensile
   While IsMoving()               ' attendi fino a che si ferma
   Wend
   
   
' porta fuori il carosello, se non è già fuori.....

   If(IsACTIVE(Input1)=0)   Then               'se il  carosello è ancora dentro
      ActivateSignal(Output1)               'sposta il carosello in fuori
      sleep(timeout_carosello * 1000)            'attende che il carosello sia fuori
      DeactivateSignal(Output1)

      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)
'Disattiva pompa circuito pneumatico   
         DeActivateSignal(Output8)            'rientra il perno fermo mandrino
         DeactivateSignal(Output7)            'disattiva pompa
         DoOEMButton(1003)            'ferma l'esecuzione del gcode
         End                  'esce dalla macro
      End If
   End If
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 G53 Z" & load_z               'porta Z nella posizione di presa
   While IsMoving()               'attendi fino a che si ferma
   Wend      
   DeActivateSignal(Output3)            'chiude la pinza del mandrino
   sleep(1000)                  'attendi 1 secondo
   ActivateSignal(Output2)               'riporta il carosello dentro
   sleep(timeout_carosello*1000)            'aspetta
   
   If(IsACTIVE(Input2)=0)   Then            'se il sensore del carosello dentro non è attivo
      MachMsg("IL CAROSELLO E' BLOCCATO","ERRORE",0)      'scrive messaggio di errore
      ActivateSignal(Output2)            'prova a riportare il carosello dentro
      sleep(timeout_carosello*1000)         'aspetta
      DeactivateSignal(Output2)
      DoOEMButton(1003)            'ferma l'esecuzione del gcode
'Disattiva pompa circuito pneumatico   
      DeActivateSignal(Output8)            'rientra il perno fermo mandrino
      DeactivateSignal(Output7)         'disattiva pompa
      End                  'esce dalla macro
   End If

'Disattiva pompa circuito pneumatico   
   DeactivateSignal(Output7)   'disattiva pompa
   DeactivateSignal(Output2)


   Code "G54"   'passa a coordinate precedenti
   Code "F" & Z_speed   'porta la velocità di Z a quella impostata per ATC
   Code "S" & old_speed   'ripristina velocitù mandrino
   If refrigerante Then
      Code "M7"   'se il refrigerante era acceso lo riaccende
   End If
   DeActivateSignal(Output8)            'rientra il perno fermo mandrino

   Code "M3"   'riaccende il mandrino   
   'Code "G01 Z" & GetToolchangestart(2)   'rimette Z dove era prima della macro
   While IsMoving()   'attendi fino a che si ferma
   Wend


End

10
Hi Guys,
I need of your support for a problem with my macro that I use for my machine.
In this macro there is the comand M6T8 that load the probe in 8 position on my carousel..
But when the macro is started the z axis muove directly without wait the charge 8 tool.
In this macro is there necessity to write anything code for wait total charge after M6T8 code?

Following my macro and thanks on Advance



Amove = -300   ' massimo movimento per ricerca probe verso Z-
speed = 300   ' velocità di ricerca
lo_speed = 30   ' velocità di ricerca low
Aret = 25   ' di quanto arretra l'asse dopo il sensing per il secondo approccio
Amove1 = -(Aret * 5)   ' massimo movimento per ricerca probe on Z- per il secondo punto
curr_tool = GetCurrentTool()   ' tool nel mandrino




If GetOemLed (825) <> 0 Then ' sente se il probe è triggerato o scollegato

Code "(Il probe è triggerato o scollegato o il modulo MP1 è spento)"
End
Else


Code "M5"   ' ferma il mandrino
Code "M8"   ' ferma il refrigerante
GotoSafeZ()   ' porta in posizione di sicurezza Z
While IsMoving()   ' completa il percorso
Wend

Code "M6 T8"   ' carica il probe dalla posizione 8 del carosello


Code "G91"   ' spostamento relativo
CurrentFeed = GetOemDRO(818) ' legge il feedrate corrente

' primo trigger Z


Code "F" & speed   ' porta il feedrate alla velocità di approccio

Code "G31 Z " & Amove
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend

' secondo trigger Z

Code "G01 Z " & Aret
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend

Code "F" & lo_speed   ' porta il feedrate alla velocità di approccio low
Code "G31 Z " & Amove1
While IsMoving()   ' completa il percorso a meno che si triggeri il probe
Wend





SetOemDRO(802,0)   ' offset asse Z

Code "F" & speed   ' porta il feedrate alla velocità iniziale


Code "M6 T0" & curr_tool   ' ricarica il tool che era nel caroselo

Code "F" & CurrentFeed ' ripristina il feedrate originale
Code "G90"   ' rimette lo spostamento assoluto
GotoSafeZ()   ' riporta in posizione di sicurezza Z
While IsMoving()   ' completa il percorso
Wend


End If

Pages: 1 2 »