'**************************************************************************
'* 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