Wie erstelle ich in Mach3 ein einfaches Script für einen Werkzeuglängensensor?

Dieser Artikel befasst sich mit der Erstellung eines Scriptes in Mach3 welches ermöglicht mehrere Fräser in einem Projekt auf der exakt gleichen Höhe zu nutzen. Dazu wird ein Werkzeuglängensensor (WZLS) genutzt.

Ich benutze den Werkzeuglängensensor von WS-Motion und kann ihn nur empfehlen. Diesen findet ihr hier.

Alternativen:

Mein Beispiel nutzt die Variablen vom Selig Screen (GetOEMDRO 1202 / 1203). Dazu muss im Selig Screen im Tab Offsets unter Positionen die Wechselposition eingetragen werden. Solltest du einen anderen Screen nutzen kannst du ebenfalls auch hardcodierte Werte eintragen.

Bevor das Marco gestartet werden kann ist eine Referenzfahrt aller Achsen notwendig, falls nicht schon durchgeführt. Weiterhin muss der Nullpunkt für das Werkstück der Z-Achse korrekt gesetzt sein. Wäre dies nicht der Fall können wir in Mach3 die Differenz zwischen Werkstückoberfläche und Werkzeuglängensensor nicht korrekt berechnen.

Vorgehen und setzen der Referenzhöhe

  • Speicherung der aktuellen absoluten X und Y Koordinaten
  • Fahrt auf Safe – Z um Kollisionen auf dem Weg zur Wechselposition zu vermeiden
  • Bewegen zur Wechselposition
  • Starte Längenmessung mit 300mm/min
  • Fahre nach erreichen des Sensors um 1mm hoch
  • Starte Längenmessung mit 20mm/min für ein exakteres Ergebnis
  • Speichern der gemessenen Z-Position des Längensensors, wir speichern praktisch die Differenz (Z-Achse) zwischen der Werkstückoberfläche und dem Schalten des Sensors
  • Hochfahren auf Safe – Z um Kollisionen auf dem Weg zur Ausgangsposition zu vermeiden
  • Fahre zu den gespeicherten X und Y Koordinaten zurück
'Speicherung von absoluten Koordinaten X und Y
oldX = GetOEMDRO(83)
oldY = GetOEMDRO(84)

'Fahre auf Safe Height Z
Code("G00 G53 Z" & GetOEMDRO(54))
While IsMoving()
Wend

'Fahre zu den Koordinaten der Wechselposition im Selig Screen.
'Es ist jedoch auch möglich fixe absolute Werte für X und Y einzutragen.
'Hier steht der Werkzeuglängensensor.
Code("G00 G53 X" & GetOEMDRO(1202) & " Y" & GetOEMDRO(1203))
While IsMoving()
Wend

'Starte Längenmessung mit 300mm/min bis minimal Z-100
Code "G31 Z-100.0 F300"
While IsMoving()
Wend

'Wurde der Werkzeugländensensor erreicht wird die Z-Achse um 1mm hoch gefahren
code "G01 G53 F500 z" & GetOEMDRO(85)+1
While IsMoving()
Wend

'Nun wird ein erneutes Antasten mit F20 durchgeführt.
Code "G31 Z-100.0 F20"
While IsMoving()
Wend

'Nachdem das langsame Antasten fertig ist wird der ertastete Z-Wert in die Variable 1337 gespeichert.
'Dieser dient später als Referenz. Wir kennen nun den Unterschied zwischen der Werkstückoberfläche und dem 
'Werkzeuglängensensor
setuserdro (1337,GetVar(2002))

'Fahre auf Safe Height Z
Code("G00 G53 Z" & GetOEMDRO(54))
While IsMoving()
Wend

'Fahre zurück zur Ausgangsposition von X und Y
Code("G00 G53 F500 X" & oldX & " Y" & oldY)
While IsMoving()
Wend

Nach Beendigung des Scriptes kennen wir die Differenzhöhe zwischen der Werkstückoberfläche und dem Werkzeuglängensensor. Dieser Wert wurde in einer Variablen für zukünftige Messungen gespeichert.

Zur Veranschaulichung eine kleine Skizze (WZLS in blau, Werkstück in grün):

Skizze einer Fräse mit Werkzeuglängensensor

Setzen der Werkstückhöhe weiterer Fräser

Da wir nun den Höhenunterschied zwischen WZLS und Werkstückoberfläche können, müssen wir mit neu eingespannten Fräsern nur noch auf den Werkzeuglängensensor fahren und wissen dann, das wir noch x mm von der Werkstückoberfläche entfernt sind.

Das Vorgehen ist ähnlich mit der Referenzfahrt für den ersten Fräser. Statt jedoch einen neuen Wert zu ermitteln setzen wir den Z Wert auf den gespeicherten Wert (Zeile 34 im nachfolgenden Code).

'Speicherung von absoluten Koordinaten X und Y
oldX = GetOEMDRO(83)
oldY = GetOEMDRO(84)

'Fahre auf Safe Height Z
Code("G00 G53 Z" & GetOEMDRO(54))
While IsMoving()
Wend

'Fahre zu den Koordinaten der Wechselposition im Selig Screen.
'Es ist jedoch auch möglich fixe absolute Werte für X und Y einzutragen.
'Hier steht der Werkzeuglängensensor.
Code("G00 G53 X" & GetOEMDRO(1202) & " Y" & GetOEMDRO(1203))
While IsMoving()
Wend

'Starte Längenmessung mit 300mm/min bis minimal Z-100
Code "G31 Z-100.0 F300"
While IsMoving()
Wend

'Wurde der Werkzeugländensensor erreicht wird die Z-Achse um 1mm hoch gefahren
code "G01 G53 F500 z" & GetOEMDRO(85)+1
While IsMoving()
Wend

'Nun wird ein erneutes Antasten mit F20 durchgeführt.
Code "G31 Z-100.0 F20"
While IsMoving()
Wend

'Nachdem langsamen Antasten setzen wir diese Position wieder auf den Referenzwert,
'den wir beim ersten Fräser angetastet haben. 
setdro(2, Getuserdro(1337))

'Fahre auf Safe Height Z
Code("G00 G53 Z" & GetOEMDRO(54))
While IsMoving()
Wend

'Fahre zurück zur Ausgangsposition von X und Y
Code("G00 G53 F500 X" & oldX & " Y" & oldY)
While IsMoving()
Wend

Der Werkstückoberfläche ist nun für den neuen Fräser korrekt gesetzt.

Hilfreiche Links

Beitrage der gleichen Kategorie

0 Kommentare

Bitte tragt euren Namen ein.
Bitte tragt eure Email-Adresse ein.
Top