Machsupport Forum

Mach Discussion => VB and the development of wizards => Topic started by: WF1 on July 08, 2020, 05:49:16 AM

Title: mach3 macro auto tool length for atc bed type 8 tools
Post by: WF1 on July 08, 2020, 05:49:16 AM
Hello i'm french newbie sorry for my broken English
 i do one macro for my CNC  1200 x1200x250  with ATC 8 tools bed type and fix probe
break out bord  ZK motion 6 axis    usb   windows 10 64 bit
we replace G92 by SetDRO(2,0.00) chinese probleme with parameter  probe var2000 and so and

 the macro  start with emty spindle no tool T0
she go pick up T1 tool n°1  Mastertool
she measure  it and wright is length in tooltable
she SET the DRO  Z  to zero  as reference for the measure  of secondary tool
she put back the Mastertool o the rack
and ask you if you want measure more tool
and after routine for secondary tool
pick tool n°x
measure tool n°x
wright tool table toolx
put back tool x in the rack
and so and still tool n°8
Title: Re: mach3 macro auto tool length for atc bed type 8 tools
Post by: WF1 on July 08, 2020, 05:50:44 AM
 'elle commence par mesurée l'outils  maître, puis vous pouvez définir maximum 8 d’outils si vous le souhaitez ou annuler à la fin.
    ' elle effectue 2 palpage pour chaque longueur d' outils pour auguementer la precision
         
           Sub Main()   
                                '**************** PREPARATION ************************
                     ' variable n°3 difference longueur outils maitre moins outils secondaire
           Code "M9"                       ' STOP L ARROSAGE
           DoSpinStop()                    ' STOP LA SPINDLE 
           Sleep(10)                     ' donne le temps de charge à fond
           MaxToolNum =  8       'Maximum d outils  pour le rack
           ToolDown   = -200     'Z bas position pour prendre ou relacher les outils dans le rack
           ToolUp     = -50      'Z haut de secu pour les deplacement au dessus table et rack
           Yprepa     =  1000    'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux
           Ypos       =  1176.33 'Y position à fond de berceau  pour prendre ou relacher l outils
           XpalF      =  141.1   'X position palpeur fixe en X
           YpalF      =  1165.8  'Y  position palpeur fixe en Y

           NewTool = Tnum               ' le numero du nouvel outils = le n° d outils  dans la table d 'outils
           OldTool = GetOEMDRO (824)   'enregistre le numero d 'outils dans la broche 
           Tnum= 1 
           tool = GetSelectedTool()
           NewTool = tool
         
          ActivateSignal(OUTPUT5)           'remonte les  balais anti-projection en  haut
           
         MsgBox(" *** la broche doit etre VIDE  Pas d'outils ***")
         MachMsg ("Prêt à exécuter le réglage de L'OUTILS MAITRE N°1 BROCHE VIDE SANS OUTILS < tool information =0> ET  Ok", "OUTILS MAITRE", 1)
         If Ret= 2 Or  OldTool<>0  Then  End    'si Ret=2 ou si Tool differend de zero alors fin du programme                               
           
            '************************************* REM VA CHERCHER L OUTILS N°1 MAITRE ************************
          NewTool = 1                     
          Code "G0G53 Z" & ToolUp                  'Z haut de secu pour les deplacement au dessus table et rack
 
       Call MovePos(NewTool)                ' appel MovePos(NewTool)coordonnées Machine des outils
          While IsMoving()
          Wend
          Code "G0G53 Z" & ToolUp                  'Z haut de secu pour les deplacement au dessus table et rack
          Code "G0G53 Y" & Ypos                    'Y position à fond de berceau  pour prendre ou relacher l outils
          ActivateSignal(OUTPUT6)                'active la sortie 5 ( machoires) pour relacher l'outils
          Sleep(4)                              '**tempo 10 s    secondes pour relacher  l'outils + jet d air chasse copeaux       
          Code "G53 Z" & ToolDown                'Z bas position pour prendre ou relacher les outils dans le rack
          Code "G4 P2.75"                        ' temporisation 2.75 seconde
          While IsMoving()                       ' tant que ça bouge
          Wend
          DeactivateSignal(Output6)               'desactive la sortie 5 de la carte en plus ou en moins selon la config des pins
          Code "G4 P1.50"                        'temporisation 2secondes attente fermeture des machoires sortie 5
          While IsMoving()                       'tant que ça bouge
          Wend
          Code "G53 Y" & Yprepa                  'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux
          Code "G4 P1.75"                        '** temporisation 1.75 seconde
          Code "G0G53 Z" & ToolUp                  'Z haut de secu pour les deplacement au dessus table et rack
          Code "G0G53 X"&XpalF &"Y"&YpalF        'va audessus du palpeur fixe
          While IsMoving()                       ' tant que ça bouge
          Wend
          SetOEMDRO (824, NewTool)
          Sleep(1)   
                         
          '***************************************** Rem MESURE DE L OUTILS N°1 MAITRE ************************
       
       Code "G31 Z-150    f 350."           ' descente sur le palpeur jusqu'a -150 avance f=350
       While IsMoving ( )                   'tant que ça bouge
       Sleep(3)                            ' temporisation 10s
       Wend
       PRP= GetOEMDRO(802)+10
       Code "G0 Z" & PRP                    ' remonte de10mm au dessus de la sonde
       Code "G31 Z-150. f 150."             ' descente sur le palpeur jusqu'a -150 avance f=150
       While IsMoving ( )                   'tant que ça bouge
       Sleep(3)                            ' temporisation 10s
       Wend
         SetDRO(2,0.00)                   'Code "G92 Z0.00"***passe z à o.oo en sans mouvement  en relatif origine des mesures de longueur       
        Tlo = GetDro(2)                     '  valeur de z   Tlo = GetDro(2)                                           '       
       SetToolParam(Tnum,2,Tlo)             ' ecrit la longueur z de l outils n°1 dans la table d outils
       Sleep(4)                             'tempo 3 s pour ecriture                                     
       Code "G00 G53 Z" & ToolUp             ' va a grande vitesse en Z secu coordonnées Machine
       Code"f500"
         
                        N1: '************************ ROUTINE   nom de la routine N1    *********************************************
                                   '************* PREPARATION N1 **********
              OldTool = GetOEMDRO(824)         
              NewTool=   NewTool +1
              Tnum = NewTool
 
    Ret = MachMsg ("Etes-vous prêt pour le réglage de l’outil suivant?", "OUTILS SECONDAIRES",1)
   
    If Ret=2 Or NewTool>8 Then End                 ' si Ret=2 reponse NON=2 alors fin du programme ou outils superieur à 8 alors fin
   
   Call MovePos(OldTool)              '**** appel MovePos(OldTool) coordonnées Machine des outils
        While IsMoving()              ' tant que ça bouge
        Wend                          'fin du mouvement
        Code "G0G53 Y" & Yprepa         'Yprepa  position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux
        Code "G53 Z" & ToolDown       'va à Z position pour  relacher les outils dans le rack
        Code "G53 Y"& Ypos            'va à Y position à fond de berceau  pour prendre ou relacher l outils
        Sleep(1)                      ' temporisation 1. seconde
        While IsMoving()
        Wend       
        ActivateSignal(OUTPUT6)        'active la sortie 6 machoires OUVERTES pour relacher l'outils
        Code "G4 P2.75"                ' temporisation sans mouvement 2.75 secondes pour relacher  l'outils + jet d air chasse copeaux               
        Code "G0G53 Z" & ToolUp          ' monte   en Z secu coordonnées Machine

     Call MovePos(NewTool)             '****appel MovePos(NewTool)coordonnées Machine des outils
          While IsMoving()
          Wend
          Code "G0G53 Z" & ToolUp                  'Z haut de secu pour les deplacement au dessus table et rack
          Code "G0G53 Y" & Ypos                    'Y position à fond de berceau  pour prendre ou relacher l outils
          Code "G53 Z" & ToolDown                'Z bas position pour prendre ou relacher les outils dans le rack
          Code "G4 P2.75"                        ' temporisation 2.75 seconde
          While IsMoving()                       ' tant que ça bouge
          Wend
         DeactivateSignal(Output6)               'desactive la sortie 5 MACHOIRES FERMEES
          Code "G4 P 0.70"                        'temporisation 2secondes attente fermeture des machoires sortie 6
          While IsMoving()                       'tant que ça bouge
          Wend
          Code "G53 Y" & Yprepa                  'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux
          Code "G0G53 Z" & ToolUp                  'Z haut de secu pour les deplacement au dessus table et rack
          Code "G0G53 X"&XpalF &"Y"&YpalF        'va audessus du palpeur fixe
          While IsMoving()                       ' tant que ça bouge
          Wend
         SetOEMDRO (824, NewTool)                 'ecrit le numero du nouvel  outils dans tool information dro
         Sleep(1)   
       
                   '********************REM MESURE DES OUTILS SECONDAIRES  double palpage = prescision ****************************
     Code "G31 Z-130 f350."         ' descente sur le palpeur jusqu'a -150 avance f=350
     While IsMoving()               'alors que ça bouge
     Sleep(4)                      'tempo 10 s
     Wend
     PRP= GetOEMDRO(802)+10         'PRP=  Z +10mm
     Code "G0 Z" & PRP              'remonte de 10mm
     Code "G31 Z-130 f150."         'va palper jusqu'a Z-150mm vitesse 150mm/M
     While IsMoving()               'alors que ça bouge
     Sleep(4)                       ' tempo 10s
     Wend
      Tlo =GetDro(2)                'Tlo=GetDro(2) lit la valeur de z au contact sur la sonde 
       SetToolParam(Tnum,2,Tlo)       ' ecrit la diference de longueur de l'outils N°"" par rapport à la longueur de l outils maitre
    While Ismoving()                'alors que ça bouge
    Sleep(5)                       'tempo 10 s
    Wend
    Code"f1000"                       ' on regle l avance icipour les deplacements qui n ont pas de G0
         GoTo N1                     ' retourne au debut de la routine  N1
   
      End Sub

       Sub MovePos(ByVal ToolNumber As Integer)

       Select Case ToolNumber
                                           ' COORDONNEES  X ,Y ET Yprepa DES OUTILS SELON LEUR Numero°
       Case Is = 1               ' VALEUR X ET Y de l outils N°1 sur le rack
         Xpos = 430.17
         Yprepa = 1000          ' EN COORDONNEES MACHINE
         YPos = 1176.33            
       Case Is = 2            
         Xpos = 543.01
          Yprepa =1000            
         YPos = 1176.33
       Case Is = 3
         Xpos = 655.68
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 4
         Xpos = 771.82
         Yprepa = 1000   
         YPos =1176.33   
       Case Is = 5
         Xpos = 885.60
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 6
         Xpos = 998.28
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 7
         Xpos = 1115.72
         Yprepa = 1000
         YPos = 1176.33   
       Case Is = 8
         Xpos = 1227.27
         Yprepa = 1000   
         YPos  =1176.33
         End Select
         
        Code "G53 Y" & Yprepa  ' position des Y prepa pour les retour d outils au rack
        Code "G53 X" & XPos    'position des Xpos pour les retour d outils au rack
        While IsMoving()
        Wend                                       
                                   
        End Sub
       
        Main
   
Title: Re: mach3 macro auto tool length for atc bed type 8 tools
Post by: WF1 on July 08, 2020, 10:10:03 AM
I have on the tool rack  we have slot for the toolholder  and we are oblige to move horizontaly  to go inside he slide see drawing
if you like it send me one hello
take care of covid 19
Title: Re: mach3 macro auto tool length for atc bed type 8 tools
Post by: WF1 on July 08, 2020, 11:22:07 AM
HERE FIND THE LAST VERSION
there is a small bug in version 2
Title: Re: mach3 macro auto tool length for atc bed type 8 tools LAST VERSION
Post by: WF1 on July 18, 2020, 01:18:49 PM
THE LAST VESION ITS WORKING NICE

 ' MACRO  BOUTON D CHANGEMENT D OUTILS AUTO WF POUR BOB ZK

   'ToolChange Macro For Bed type tool changer 11/05 Brian et06/20 WF
   Sub Main()
     
   Code "M9"                    'STOP L ARROSAGE
   DoSpinStop()                 ' STOP LA SPINDLE
   ActivateSignal(Output5)   ' ACTIVE LA SORTIE 5 REMONTE LE CACHE POUSSIERE   
   
   
   OldTool = GetOEMDRO (24)    ' ENREGISTRE LE N° DE L OUTILS DANS LA BROCHE
   OldTool = GetOEMDRO (1200) 'Tool In spindle DRO You must add this to your settings screen

   x = GetToolChangeStart( 0 )
   y = GetToolChangeStart( 1 )
   z = GetToolChangeStart( 2 )
   a = GetToolChangeStart( 3 )
   b = GetToolChangeStart( 4 )
   c = GetToolChangeStart( 5 )

    tool = GetSelectedTool()
    NewTool = tool   
                         
      'Tool Changer Macro (Bed Type)
 MaxToolNum =  8       'Maximum d outils  pour le rack
 ToolDown   = -237.45     'Z bas position pour prendre ou relacher les outils dans le rack
 ToolUp     = -40      'Z haut de secu pour les deplacements au dessus table et rack
 Yprepa     =  1000    'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux
 Ypos       =  1176.33 'Y position à fond de berceau  pour prendre ou relacher l outils
   
         Newtool= Question("Entrez le N°du nouvel Outils du N°1 au N°8 "  & MaxToolNum1) 
         If NewTool = OldTool Or   NewTool>MaxToolNum Or  NewTool=0 Then'   ' si Newtool est egale à OldTool alors
         Message"******OOOOO**** Erreur de N° d'Outils *****OOOOO ******"       
             Exit Sub
               
        End If                ' sortie du sous programme                                 
           
        Code "G00 G53 Z" & ToolUp     ' va a grande vitesse en Z secu coordonnées Machine 
        While IsMoving()              ' tant que ça bouge
        Wend                          'fin du mouvement
  Call MovePos(OldTool)               '**** appel MovePos(OldTool) coordonnées Machine des outils
        While IsMoving()              ' tant que ça bouge
        Wend                          'fin du mouvement
        Code "G53 Z" & ToolDown       'va à Z position pour  relacher les outils dans le rack
        Code "G53 Y"& Ypos            'va à Y position à fond de berceau  pour prendre ou relacher l outils
        Code "G4 P1.75"                ' temporisation 1.75 seconde
        While IsMoving()
        Wend
       
        ActivateSignal(Output6)        'active la sortie 6 ( machoires) pour relacher l'outils
        Code "G4 P3.0"                 'attend 3 secondes pour relacher  l'outils + jet d air chasse copeaux
       
        Code "G53 Z" & ToolUp          ' va  en Z secu coordonnées Machine 

     Call MovePos(NewTool)                '**** appel MovePos(NewTool)coordonnées Machine des outils
          While IsMoving()
          Wend
          Code "G53 Z" & ToolUp         'Z haut de secu pour les deplacement au dessus table et rack
          Code "G53 Y" & Ypos           'Y position à fond de berceau  pour prendre ou relacher l outils
          Code "G53 Z" & ToolDown       'Z bas position pour prendre ou relacher les outils dans le rack
          Code "G4 P2.75"               ' temporisation 2.75 seconde
          While IsMoving()              ' tant que ça bouge
          Wend
          DeActivateSignal(Output6)     'desactive la sortie 6 de la carte en plus ou en moins selon la config des pins
          Code "G4 P2.0"                'temporisation 2secondes attente fermeture des machoires sortie 5
          While IsMoving()              'tant que ça bouge
          Wend
          Code "G53 Y" & Yprepa         'Y position pour la descente du porte outils  permettant encliquement dans les rainures des berceaux

          Code "G53 Z" & ToolUp         'Z haut de secu pour les deplacement au dessus table et rack

          While IsMoving()              ' tant que ça bouge

          Wend
         
     Call SetUserDRO (1200,NewTool)
          SetCurrentTool( NewTool )
          Code "G43 H" & NewTool         'prend compte la difference de longueur d outils par rapport à l'outils N°1 qui reference
                                         ' et avec lequel on fait le zero piece
          Code "G00 X" & x & " Y" & y   'retourne aux positions x et y qui ont ete enregistre au debut de la macro
          While IsMoving()              'tant que ça bouge
          Wend
                    Code "G4 P10.0"                'temporisation 2secondes attente descente cache poussiere
          DeActivateSignal(Output5)     'desactive la sortie 5 cache poussiere en bas
          DeActivateSignal(Output6)     'desactive la sortie à la fin le changement d outils
      End Sub

 Sub MovePos(ByVal ToolNumber As Integer)

 Select Case ToolNumber
                                           ' COORDONNEES  X ET Y DES OUTILS SELON LEUR N°
       Case Is = 1               ' VALEUR X ET Y de l outils N°1 sur le rack
         Xpos = 430.17
         Yprepa = 1000          ' EN COORDONNEES MACHINE
         YPos = 1176.33            
       Case Is = 2            
         Xpos = 543.01
          Yprepa =1000            
         YPos = 1176.33
       Case Is = 3
         Xpos = 655.68
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 4
         Xpos = 771.82
         Yprepa = 1000   
         YPos =1176.33   
       Case Is = 5
         Xpos = 885.60
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 6
         Xpos = 998.28
         Yprepa = 1000   
         YPos = 1176.33   
       Case Is = 7
         Xpos = 1115.72
         Yprepa = 1000
         YPos = 1176.33   
       Case Is = 8
         Xpos = 1227.27
         Yprepa = 1000   
         YPos  =1176.33
         End Select
         
         Code "G53 Y"& Yprepa 'ok
         Code "G53 X"& XPos   'ok
         While IsMoving()
         Wend
         
End Sub

Main             

IF YOU USE IT SEND ME ONE HELLO ON THE SITE