'#################ToolChange Macro For 8 Position Rackchanger CopyRight 1/2018 CNC4XR7  cnc4xr7@gmail.com#############################'#################ISO 20 Style holders Slide in ########################################################Sub Main()  	DoSpinStop()                ' Make sure the spindle is OFFCode"M09"                    	 ' Make sure the coolant is OFFOldTool = GetOEMDRO (1224) x = GetToolChangeStart( 0 )y = GetToolChangeStart( 1 ) z = GetToolChangeStart( 2 ) tool = GetSelectedTool()NewTool = tool'#################Tool Changer Macro (Rack Type)##################MaxToolNum = 99      ToolDown   = GetUserDro(1221)  ToolUp     = GetUserDro(1222)  Xstart  = GetUserDro(1225)  Xrack = GetUserDro(1220)  TCFR = GetOEMDRO(1251) Delay = GetOEMDRO (1230)If NewTool = OldTool ThenMessage" Tool change Aborted"        Exit Sub	End IfWhile NewTool > MaxToolNumMessage " Tool # " & NewTool & " Exceeds Maximun Tool # " & MaxToolNumStop Wend'########################################Code "G00 G53 Z-5.0"While IsMoving()WendCode "G00 G53 X" & XstartCall MovePos(OldTool)While IsMoving()WendCode "G00 G53 Z" & ToolUp Code "F" & TCFRCode "G53 Z" & ToolDown Code "G4 P.75"While IsMoving()WendCode "G00 G53 X" & XrackWhile IsMoving()WendCode "M7" 'Air blastCode "G4 P.25"Code "M9"ActivateSignal(Output6) Sleep(Delay)Code "G4 P1.0"    Call PdbOpen()Code "G53 Z" & ToolUpWhile IsMovingWendDeActivateSignal(Output6) '#####################################################Call MovePos(NewTool)While IsMoving()WendActivateSignal(Output6) Code "M7"Code "G4 P.25"Code "M9"Code "G53 Z" & ToolDownCode "G4 P.75"While IsMoving()WendDeActivateSignal(Output6) Sleep(Delay)Code "G4 P1.0"    Call PdbClose()Code "G53 X" & XstartWhile IsMoving()WendCode "G00 G53 Z-5.0"Call SetUserDRO (1224,NewTool)SetCurrentTool( NewTool )Code "G43 H" & tool        Code "G00 X" & x & " Y" & y End Sub'###############################Sub PdbOpenDim UnclampUnclamp = GetOEMLed(823)If Unclamp = (False)ThenMessage" PDB Released"ElseCall  PdbFaultEnd IfEnd SubSub PdbFaultDim Msg, Style, TitleMsg = "Tool Not Released Clear Jam?          "  Style = 5 + 16 + 0   Title = "    PDB Failed "   Response = MsgBox(Msg, Style, Title)If Response = (4) Then Call PdbOpen ElseCode "M30"StopEnd IfEnd Sub'##############################################################Sub MovePos(Slot)Dim Slot0,Slot1,Slot2,Slot3,Slot4,Slot5,Slot6,Slot7,Slot8,y1,y2,y3,y4,y5,y6,y7,y8Slot1 = GetUserDRO(1201)Slot2 = GetUserDRO(1202)Slot3 = GetUserDRO(1203)Slot4 = GetUserDRO(1204)Slot5 = GetUserDRO(1205)Slot6 = GetUserDRO(1206)Slot7 = GetUserDRO(1207)Slot8 = GetUserDRO(1208)Slot0 = OldTooly1=GetUserDro(1231)y2=GetUserDro(1232)y3=GetUserDro(1233)y4=GetUserDro(1234)y5=GetUserDro(1235)y6=GetUserDro(1236)y7=GetUserDro(1237)y8=GetUserDro(1238)Select Case Slot          Case = Slot1      Code  "G0 G53Y" & y1          Case = Slot2      Code  "G0 G53Y" & y2           Case = Slot3      Code  "G0 G53Y" & y3           Case = Slot4      Code  "G0 G53Y"& y4          Case = Slot5      Code  "G0 G53Y" & y5           Case = Slot6      Code "G0 G53Y" & y6           Case  = Slot7      Code "G0 G53Y" & y7            Case = Slot8      Code "G0 G53Y" & y8           Case = OldTool                        Case Else             Dim Msg, Style, TitleMsg = "Tool  " & " ( "  & GetSelectedTool() & " ) " & " or " &" ( "  & OldTool & ")" & " Not Availible in Rack   " ' Define message Style = 16    Title = "         Tool Requested Not Availible"   Response = MsgBox(Msg, Style, Title)Message  "Program Stopped Tool Not Avalible "Code "M30"Stop                       End SelectEnd Sub'###############################################Sub PdbCloseDim ClampedClamped = GetOEMLed(823)If Clamped = (True)ThenMessage" Tool secure"ElseCall ClampFaultEnd IfEnd SubSub ClampFaultDim Msg, Style, TitleMsg = "       Tool Not Secure Clear Jam?          "  Style = 5 + 16 + 0    Title = "    PDB Clamp Failed "    Response = MsgBox(Msg, Style, Title)If Response = (4) Then Call PdbClose ElseCode "M30"StopEnd IfEnd SubMain                                                                  