Hello Guest it is March 28, 2024, 03:13:15 PM

Author Topic: Macro for automatic tool changer (ATC) in the script M6Start with two axis  (Read 12302 times)

0 Members and 1 Guest are viewing this topic.


'**************************************************************************
'*   Macro for automatic tool changer (ATC) in the script M6Start.m1s
'*   with two axis moving the ATC.
'*
'*   Description:
'*
'*   We used two axis (B-Axis and C-Axis) to move two motors, one motor
'*   is used to move the ATC (with the B-axis). And, the C-axis
'*   (The second motor) is used to rotate the ATC and select the tool.
'*   It is used one out (output1) to hold or relase the tool, when it is
'*   necessary.
'*
'*    Process:
'*
'*    1. Z-axis goes to "Z zero".
'*    2. Then, Z-axis moves to the height of the ATC.
'*    3. The ATC comes to a programed position with the B-axis, and takes
'*      the tool.
'*    4. The output1 relases the tool and Z-axis goes up.
'*   5. Whith the C-axis we rotate the ATC to the new tool.
'*     6. The Z-axis goes down and holds the tool activating Output1.
'*    7. The ATC returns to the start position and Z-axis returns to
'*      home.
'*
'*
'*    Caution:
'*
'*   It is necessary consider two inputs for home, one for
'*   each axis (C and B) Because they need a start position to know
'*   when the ATC takes the tool or where is each tool.
'*   Also is necessary to edit the button´s script "Ref all home" with
'*   the code "DoButton( 25 ), DoButton( 26 )", letting ATC found a
'*   start position, and in the menu "General Config" indicate that
'*   axis B and C works like rotative axis.
'*   The units of the axis B and C are in degrees.
'*
'*               Marco A Perez C.
'*                Sadosa S.A. de C.V.
'*
'* '**************************************************************************



Sub Main()         'Definir variables
OldTool = GetOEMDRO (1200)    
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
a = GetToolChangeStart( 3 )
b = GetToolChangeStart( 4 )
c = GetToolChangeStart( 5 )
tool = GetSelectedTool()
NewTool = tool
MaxToolNum = 5            'Maximum number of tools to use.
ToolDown   = -50       'Height for tool change.
ToolUp     = 0.0          'Height the Z-axis during tool change.
If NewTool = OldTool Then
   Exit Sub
End If
While NewTool > MaxToolNum
NewTool = Question ("Place valid tool number (1 to 5)")
Wend
Call MovePos(OldTool)      'The ATC identifies the old tool.
While IsMoving()
Wend
Code "G53 Z" & ToolDown      'The Z-axis goes to ATC height
Code "G4 P.75"
While IsMoving()
Wend
Code "G00 G53 B1.0"      'The ATC moves to Z-axis and takes the tool
While IsMoving()
Wend
ActivateSignal(Output1)    'Send signal to relase tool.
Code "G4 P1.0"          'Wait a second.
Code "G53 Z" & ToolUp      'The Z-axis goes up and waits here.
Call  MovePos(NewTool)      'The ATC moves to the new tool.
While IsMoving()
Wend
Code "G53 Z" & ToolDown      'Z-axis moves down and takes the tool
Code "G4 P.75"
While IsMoving()
Wend
DeActivateSignal(Output1)    'Send signal to hold tool.
Code "G4 P1.0"          'wait a second.
While IsMoving()
Wend
Code "G00 G53 B0.0"      'The ATC returns to start position.
While IsMoving()
Wend

Code "G53 Z" & ToolUp      'The Z-axis up, and it's ready to use.
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
End Sub

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber      'Positions to each tool in C-axis
       Case Is = 1
         Code "G00 G53 C1.0"
       Case Is = 2
         Code "G00 G53 C2.0"
       Case Is = 3
         Code "G00 G53 C3.0"
       Case Is = 4
         Code "G00 G53 C4.0"
       Case Is = 5
         Code "G00 G53 C5.0"
       Case Is = 6
         Code "G00 G53 C6.0"
       Case Is = 7
         Code "G00 G53 C7.0"
       Case Is = 8
         Code "G00 G53 C8.0"
End Select

End Sub
Main   
Re: Macro for automatic tool changer (ATC) in the script M6Start with two axis
« Reply #1 on: September 01, 2011, 12:19:54 PM »
'**********************************************************************************
'*
'*   Macro para intercambiador de herramientas automático del script M6Start.m1s
'*
'*   Descripción:
'*
'*   Se usan dos ejes el B y C para mover dos motores,
'*   El eje B se usa para acercar o alejar el carrusel de herramientas;
'*    El eje C se usa para girar el carrusel y seleccionar la herramienta deseada;
'*    adicional mente se utiliza una saluda (Output1) para sujetar o soltar la herramienta.
'*
'*    Procedimiento:
'*
'*    1. Se manda al eje Z a casa.
'*    2. El eje Z es posicionado a la altura del carrusel de herramientas.
'*    3. Se acerca el carrusel con una posición dada al eje B y toma la herramienta..
'*    4. Se suelta la herramienta con Output1 y sube el eje Z.
'*   5. Con el eje C se gira el carrusel de herramientas.
'*     6. El eje Z baja y toma la herramienta con Output1.
'*    7. Se aleja el carrusel de herramientas y el eje Z vuelve a casa.
'*
'*    Advertencia:
'*
'*   Para estar seguro que el eje C y B no se muevan y pierdan su posición
'*    es necesario colocar limites de casa y habilitarlos en "ports and pins",
'*    además se debe editat el script del boton "Ref all home" colocandole las siguientes
'*    dos líneas al final "DoButton( 25 )" y "DoButton( 25 )", esto para que busque casa
'*   de esos ejes cuando se mande a casa toda la máquina.
'*
'*
'*                   Sadosa S.A. de C.V.
'*
'* ********************************************************************************

Sub Main()         'Definir variables
OldTool = GetOEMDRO (1200)    'Tomar el valor de la herramienta actual.
x = GetToolChangeStart( 0 )
y = GetToolChangeStart( 1 )
z = GetToolChangeStart( 2 )
a = GetToolChangeStart( 3 )
b = GetToolChangeStart( 4 )
c = GetToolChangeStart( 5 )
tool = GetSelectedTool()
NewTool = tool
MaxToolNum = 5            'Número máximo de herramientas que se puede utilizar.
ToolDown   = -50       'Posición de Z a la altura del carrusel de herramientas.
ToolUp     = 0.0          'Posición de Z arriba del carrusel.
If NewTool = OldTool Then
   Exit Sub
End If
While NewTool > MaxToolNum
NewTool = Question ("Ingresa nùmero de herramienta vàlido (Entre 1 y 5)")
Wend
Call MovePos(OldTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
Code "G00 G53 B1.0"
While IsMoving()
Wend
ActivateSignal(Output1) 'Mandar señal para soltar herramienta
Code "G4 P1.0"    'Espera mietras se suelta la herramienta
Code "G53 Z" & ToolUp
Call MovePos(NewTool)
While IsMoving()
Wend
Code "G53 Z" & ToolDown
Code "G4 P.75"
While IsMoving()
Wend
DeActivateSignal(Output1) 'Mandar señal para sostener la herramienta
Code "G4 P1.0"    'Tiempo de espera para sostener la herramienta
While IsMoving()
Wend
Code "G00 G53 B0.0"
While IsMoving()
Wend
Code "G53 Z" & ToolUp
Call SetUserDRO (1200,NewTool)
SetCurrentTool( NewTool )
End Sub

Sub MovePos(ByVal ToolNumber As Integer)

Select Case ToolNumber   'Posiciones del eje C donde se encuentra cada herramienta
       Case Is = 1
         Code "G00 G53 C1.0"
       Case Is = 2
         Code "G00 G53 C2.0"
       Case Is = 3
         Code "G00 G53 C3.0"
       Case Is = 4
         Code "G00 G53 C4.0"
       Case Is = 5
         Code "G00 G53 C5.0"
       Case Is = 6
         Code "G00 G53 C6.0"
       Case Is = 7
         Code "G00 G53 C7.0"
       Case Is = 8
         Code "G00 G53 C8.0"
End Select

End Sub
Main
Thank you much