hey thats a macro for a boxford 125 i have written some time ago for an other guy here.
sorry it is in german, but with a Little Google translator you should be able to understand it.
' TPS 29.01.2018 Version 1.0
' BOXFORD 125TCL
' 8 Positionen Werkzeugwechsler mit A-Achse
Sub Main()
Dim newtool As Integer
Dim acttool As Integer
Dim grad_pro_tool As Integer
Dim grad_nach_pin As Integer
Dim grad_rueckwaerts as Integer
Dim Anzahl_Takte As Integer
Dim Dist_schnell As Double
Dim F_fast As Integer
Dim F_slow As Integer
If IsLoading() Then
'wenn ein neues File geladen wird nichts tun
' Exit Sub
Else
grad_pro_tool = 45 ' Distanz für einen Werkzeugschritt
grad_nach_pin = 10 ' freifahren Pin
grad_rueckwaerts = 25 ' zurückfahren an Pin
f_fast = 4000 ' Speed drehen schnell
f_slow = 2000 ' Speed rückwärts gegen Pin
newtool = GetSelectedTool() ' die neue Werkzeugnummer holen
acttool = GetCurrentTool() ' die aktuelle Werkzeugnummer holen
'lass uns ein paar Basic's checken
' neues und altes Werkzeug = 0
If ((newtool = 0) and (acttool = 0)) Then
message("neues und altes Werkzeug = 0 -> nicht's tun")
Sleep(500)
Exit Sub
End If
' neues Werkzeug = 0
If (newtool = 0) Then
message("neues Werkzeug = 0 -> nicht's tun")
Sleep(500)
Exit Sub
End If
' neues und altes Werkzeug sind gleich
If newtool = acttool Then
message("neues und altes Werkzeug sind gleich -> nicht's tun!")
Sleep(500)
Exit Sub
End If
'Werkzeugnummer gültig ?
If (((newtool > 8) Or (newtool < 1)) and (newtool <> 0)) Then
DoButton(3)
Sleep(500)
Message (" Werkzeugnummer " & newtool & " nicht im Bereich (1-8). Abbruch ! ")
Exit Sub
End If
'X-Achse nicht referenziert
If GetOEMLED(807) Then
DoButton(3)
Sleep(500)
Message ("X-Achse nicht referenziert -> Abbruch !!")
Exit Sub
End If
'Z-Achse nicht referenziert
If GetOEMLED(809) Then
DoButton(3)
Sleep(500)
Message ("Z-Achse nicht referenziert -> Abbruch !!")
Exit Sub
End If
'jetzt geht's los
Message "Werkzeugwechsel von: " +CStr(acttool) + " nach: " + CStr(newtool)
'Anzahl der Takte zwischen den Werkzeugen berechnen
If newtool > acttool Then Anzahl_Takte = newtool - acttool
If newtool < acttool Then Anzahl_Takte = 8 - acttool+newtool
'Distantz in Schritte umrechnen
Dist_schnell = (Anzahl_Takte * grad_pro_tool) + grad_nach_pin
msgbox("Takte: " + cstr(Anzahl_Takte) + " Distanz schnell: " + Cstr(Dist_schnell))
Message "Wechsel X-Achse freifahren"
Code "G90 G53 G0 X2"
While IsMoving()
Sleep(15)
Wend
Message "Wechsel Z-Achse freifahren"
Code "G90 G53 G0 Z2"
While IsMoving()
Sleep(15)
Wend
'A-Achse nullen
Code "G92 A0"
'incremental Mode , Einheiten pro Minute , Exakter Stop
Code "G91 G94 G61"
'A-Achse plus schnell
Message "A-Achse plus schnell zum neuen Werkzeug"
Code "G01 A" & Dist_schnell & "F" & f_fast
While IsMoving()
Sleep(15)
Wend
'A-Achse langsam zurückfahren
Message "A-Achse zurueck langsam zum Pin"
Code "G01 A-" & grad_rueckwaerts & "F" & f_slow
While IsMoving()
Sleep(15)
Wend
'neues Werkzeug im System anmelden
SetCurrentTool(newtool)
'wieder auf Absolutmodus schalten
Code "G90" ' back to absolute movement
Message ""
End If
End Sub