CNC Teil5 - Makros
Dies ist der fünfte Teil meiner Serie über Portalfräsmaschinen. Er befasst sich mit praktischem Zubehör, das Ihnen das Leben als CNC-Bediener erleichtert und zu schnelleren und genaueren Fräsergebnissen führen kann.
- Teil 1: Gedanken zu CNCs im Allgemeinen und zur Maschinenauswahl
- Teil 2: CNC-Elektronik aufbauen
- Teil 3: CNC-Maschinenbau
- Teil 4: CNC-Einrichtung
Übersicht
In diesem Artikel geht es um Makros für die CNC, mit deren Hilfe bestimmte sich wiederholende Vorgänge automatisiert werden können. Es werden sowohl grundlegende als auch anspruchsvollere Makros für mehrere Zwecke wie automatische Z-Nullstellung, Werkzeuglängenmessung oder Werkzeugwechsel behandelt. Er wird einige G-Code Befehle behandeln und versuchen, dabei zu helfen, mehr Vertrauen in die Maschine aufbauen zu können.
Haftungsausschluss
Die folgenden Subroutinen wurden für den RS274 NGC Interpreter geschrieben. Ich habe sie mit EdingCNC validiert, da dies die CNC-Software ist, die ich zufälligerweise verwende. Ich habe einige Aspekte von Makro-Dateien abgeleitet, die sowohl Sorotec als auch Eding zusammen mit ihren Maschinen ausliefern.
Da Sie möglicherweise unterschiedliche Hardware- und Softwaredistributoren für Ihre Maschine haben, passen diese Routinen möglicherweise nicht zu 100%. Meine Absicht war mehr zu erklären, was in ihnen geschieht, als eine 1-zu-1 Kopievorlage zu liefern.
Was ist ein Makro?
Ein Makro oder Unterprogramm ist eine Sammlung von Anweisungen, die für den CNC-Interpreter geschrieben wurden, um Aktionen auszuführen. Sie werden oft verwendet, um wiederkehrende Vorgänge zu automatisieren. Auf meiner Maschine beginnt ein solches Makro mit einem SUB
-Befehl und endet mit einem ENDSUB
. Sie enthalten oft Verzweigungslogik und G-Code-Befehle, um die Maschine zu veranlassen, Dinge zu tun oder sogar Benutzerdialoge anzuzeigen, um die Eingaben des Bedieners zu erhalten.
Auf meiner Maschine befinden sich alle Makros in einer einzigen Datei namens macro.cnc
, die von meiner CNC-Software beim Start gelesen wird, damit sie ausgeführt werden kann. Einige “Soft-Buttons” der Software rufen direkt Makros aus dieser Datei auf, z.B. für die Referenzfahrt.
Um zu demonstrieren, dass diese Datei von großer Bedeutung ist, schließen Sie Ihre CNC-Software und öffnen Sie das Dokument macro.cnc
mit einem Texteditor. Suchen Sie nach Sub user_9
(es sollte eine Routine sein, die nichts Relevantes tut), entfernen Sie ihren Inhalt und fügen Sie die Zeile MSG "hello world!"
hinzu. Speichern Sie Ihre Arbeit, starten Sie die CNC-Software, und drücken Sie im Benutzermenü die Taste 9
- Voilà!
Ein einfaches Makro zur Erkennung des Status des Werkzeuglängensensors
Legen wir los und verbinden das neu erworbene Wissen über Makros mit einem nützlichen Beispiel.
Der Werkzeuglängensensor
Ein Werkzeuglängensensor ist ein Zubehörteil, das an einen Eingang der CNC-Maschine angeschlossen wird und bei Berührung (z.B. durch eine Werkzeugspitze) auslöst. Es gibt viele verschiedene Ausführungen, von einem sehr einfachen Mikroschalter mit Gehäuse und einfachem Tastmechanismus bis hin zu hochpräzisen induktiven Sensoren aus feingedrehtem Edelstahl mit automatischer Luftspülung um sicherzustellen, dass die Oberfläche des Sensors sauber ist.
Der Werkzeuglängensensor wird entweder am Maschinenbett, auf dem Ablagetisch oder einfach an einer anderen festen Position an der Maschine angebracht. Meiner ist ein sehr einfacher Schalter, den ich an jeder beliebigen Stelle meiner Maschine anbringen kann. Er hat eine angebliche Wiederholgenauigkeit von 10µm
.
Wie auch immer, der eigentliche Zauber wird in der CNC-Software vollbracht.
Makro-Aufgabe
Ich möchte, dass das Makro prüft, ob der Werkzeuglängensensor betriebsbereit ist (und nicht klemmt). Ich überprüfe also, ob der Sensorschalter den Status “nicht ausgelöst” hat - normalerweise geschlossen. Wenn er ausgelöst wurde (seine Kontakte also offen sind), könnte das bedeuten, dass der Sensor in der ausgelösten Position klemmt (ist mir schon passiert) oder dass ein Sensordraht gebrochen ist (ist mir bisher noch nicht passiert), oder dass der Sensor überhaupt nicht mit der Maschine verbunden ist.
Macko code
SUB is_sensor_ok
IF [sensorStatus == triggered] ;# 5068 == 0 (normally closed)
DLGMSG "Tool length sensor not connected or already triggered - please check"
IF [dialogButton == 1]
IF [sensorStatus == triggered]
ERRMSG "Tool length sensor input still unexpected - aborting"
ENDIF
ELSE
ERRMSG "User abort."
ENDIF
ENDIF
ENDSUB
Der Name des Makros ist is_sensor_ok
. Ich prüfe den Sensorstatus und zeige eine Dialogmeldung an, falls hier etwas nicht stimmt. Sobald auf “OK” gedrückt wird, gehe ich davon aus, dass das Problem behoben wurde und versuche es erneut. Wenn er immer noch ausgelöst ist, breche ich die Routine ab.
Dieses Makro ist in allen folgenden Abschnitten zu finden, in denen ich den Werkzeuglängensensor benötige, um etwas zu messen - es dient als Schutz, um nicht versehentlich meine Maschine, den Sensor oder das Werkstück zu zerstören, indem ich einen fehlerhaften Zustand annehme.
Benennung von Variablen
Die RS274/NGC-Sprache ist alt. Ich meine wirklich alt. Ihre erste Version wurde in den späten 1950er Jahren veröffentlicht. Kein Wunder, dass die Parameter (#1 - #5399 ist der erlaubte Bereich) alle numerisch sind, sowohl in der Benennung als auch in den Werten, die sie speichern können. Es gibt kein Typsystem (wie Strings
, int
usw.) und keine praktische Benennung, die das Verständnis eines Parameters wie sensorStatus
erleichtert.
Es wird einfach #5068
sein und Sie müssen sich selbst daran erinnern, dass der Hersteller der CNC-Software diese Variable ausgewählt hat, um den Status des Werkzeuglängensensors zu kennzeichnen, und dass sie boolean
ist mit 0
= nicht ausgelöst und 1
= ausgelöst.
Um den Makrocode so lesbar und verständlich wie möglich zu gestalten, verzichte ich in diesem Artikel auf die Verwendung von numerischen Parameternamen. Eine Übersetzungstabelle finden Sie ganz unten.
Verwendung des Werkzeuglängensensors zur Ermittlung der Werkstückoberfläche (Z=0)
Mit dieser Methode brauchen Sie die Werkstückoberfläche nicht manuell abzunullen. So entfällt das Absenken der Z-Achse bis das Werkzeug die Oberfläche leicht ankratzt und dann das Festlegen der Werkstückkoordinaten.
Sobald das Makro programmiert und eingerichtet ist, platzieren Sie den Werkzeuglängensensor auf dem Werkstück und verfahren die Maschine so, dass sie sich direkt über dem Sensor befindet (noch nicht berührt). Starten Sie dann das Makro. Ihre Maschine wird nun automatisch ihre Z-Achse langsam absenken, bis der Sensor schaltet. Dann fährt sie sehr langsam zurück, bis der Sensorkontakt wieder geschlossen ist. Dieser Punkt wird dann zur Bestimmung von Z-0 herangezogen, die dann automatisch gesetzt wird.
Voraussetzungen
Bevor wir das Makro schreiben können, benötigen wir die Z-Position des Werkzeuglängensensors “zTls” zum Zeitpunkt des Umschaltens von “ausgelöst” auf “nicht ausgelöst”. Ich habe meine vorerst (denn das ist nicht sehr genau) mit einem Messschieber gemessen und notiert. Wir brauchen diesen Wert, damit die Maschine ihn beim Ansetzen von der Z-Höhe abziehen kann, um die Position der Werkstückoberfläche zu ermitteln.
Wie man die Messung des Auslösepunktes präziser hinbekommt soll Gegenstand eines eigenen Artikels werden.
Außerdem ist es wichtig zu wissen, wie der Schalter mit der Maschine verbunden ist. Die bevorzugte Art ist “normal geschlossen”, d.h. der Schalter öffnet sich, wenn er ausgelöst wird: “Ausgelöst = 0”. Dies ist die sicherste Anwendung, da ein Drahtbruch oder eine unterbrochene Verbindung automatisch erkannt wird, wenn der Stromkreis unterbrochen wird.
Schließlich müssen wir den Vorwärts- und Rückwärtsvorschub des Messtasters festlegen, z.B. Tasten = 100mm/min
, Lösen = 10mm/min
.
Das Makro enthält auch einen etwas aufwendigeren Teil: Wenn Z-0 gemessen werden soll, aber die Werkzeuglänge nicht bekannt ist, kann die Maschine die aktuelle Position posX, posY
vor der Fahrt zum Werkzeuglängensensor in Neupositionierungsvariablen speichern, so dass das Makro get_tool_length
direkt von hier aus aufgerufen werden kann. So kann es später automatisch wieder dorthin positionieren, wo Z-0 des Werkstücks gemessen wird.
Das Unterprogramm “Z-Null-Erkennung”
Nach dem Ausschalten der Spindel senkt das Programm die Z-Achse der Maschine ab, bis der Fräser Werkzeuglängensensor auslöst (oder bis sie ohne eingelegtes Werkzeug so weit nach unten gefahren ist, dass die Spindelnase den Sensor fast berührt, wo das Makro dann wiederum abbrechen würde, weil es den Sensor nicht gefunden hat), und zwar mit dem Befehl G38.2
. Wenn der Sensor ausgelöst wird, fährt die Maschine vorsichtig die Z-Achse wieder hoch, bis der Sensor freigegeben ist. Dieser Punkt wird dann als neuer Koordinaten-Offset für die Z-Achse mit dem Befehl G92
gespeichert.
Code
Bevor wir beginnen, stellen wir sicher, dass wir uns im richtigen Zustand befinden. Die Werkzeuglänge sollte bereits festgelegt sein, damit bei künftigen Werkzeugwechseln nicht erneut der Z-Nullpunkt gemessen werden muss. Außerdem sollten wir wissen, dass der Sensor richtig angeschlossen ist.
SUB measure_workpiece_z0
IF ![toolLengthStat]
DLGMSG "WARNING - Please first measure tool length!"
IF [dialogButton == 1]
xPosReposition = xPos
yPosReposition = yPos
repositionTo = 1
GOSUB get_tool_length
ENDIF
ENDIF
GOSUB is_sensor_ok ;# Check if tool length sensor status is OK
Programmieren wir nun die eigentliche Routine, indem wir abfragen, ob der Z-Nullabgleich jetzt durchgeführt werden soll. Wenn die CNC im Simulatormodus läuft (ohne angeschlossene Hardware), wird der Z-Nullabgleich nicht funktionieren, also müssen wir auch dies überprüfen und den Schritt gegebenenfalls überspringen.
DLGMSG "Start Z-Zeroing?"
IF [dialogButton == 1] AND [operatingMode != simulator]
M5 ;#Switch spindle off
M9 ;#Switch coolant off
G53 G38.2 Z[zSpindleTip + 5] F[touch]
;# G38.2 = touch toward probe, stop on contact, flag error on fail
;# fail = 5mm before touching spindle tip
IF [probeOk == 1] ;# #5067 == 1 : G38.2 command success
G38.2 G91 Z20 F[rev] ;# now reverse slowly to find untrigger point (max. 20mm up)
G90 ;# back to absolute coordinates
IF [probeOk == 1]
G00 Z[zTouched] ;# #5063 Go to Z-axis's probe point
G92 Z[zTls] ;# Set Z-axis's coordinate offset (0) to tool length sensor's height
G00 Z[zTls + 5] ;# clear sensor
ELSE
ERRMSG "Could not locate sensor untrigger point."
ENDIF
ELSE
DLGMSG "Could not locate sensor trigger point. Retry?"
IF [dialogButton == 1]
GOSUB measure_workpiece_z0
ELSE
ERRMSG "User abort."
ENDIF
ENDIF
ENDSUB
Ausführen des Makros Z-Nullabgleich auf Zerspanobert
Es steht Ihnen natürlich frei, dieses Makro komplexer zu gestalten - z.B. könnten Sie abfragen, ob die Werkzeuglänge zuvor gemessen wurde, so dass von Ihnen vorgenommene Werkzeugänderungen automatisch kompensiert werden können, oder wenn Sie den Z-Nullpunkt immer an derselben XY-Position messen, könnten Sie die Maschine mit einem Z-Up-Befehl dorthin fahren lassen usw.
Messung der Werkzeuglänge
Wenn die Maschine die Werkzeuglänge kennt, bevor sie den Z-Nullpunkt misst, müssen Sie den Z-Nullpunkt bei anstehenden Werkzeugwechseln während des Auftrags nicht immer wieder messen. Deshalb ist es eine gute Idee, die Länge der verwendeten Werkzeuge zu messen und zu aktualisieren. Schreiben wir ein weiteres, das diese Aufgabe übernimmt.
Vorbereitung
Die CNC-Software ist in der Lage, die Position der Werkzeugspitze zu erkennen, da sie ihre Position im Raum (X, Y, Z) kennt, wenn sie ordnungsgemäß referenziert worden ist. Die meisten CNCs leiten ihre aktuellen Positionsdaten durch Zählen der Motorschritte ab, die sie nach Abschluss der Referenzfahrt ausgeführt hat.
Um die Werkzeuglänge zu messen und die Position der Werkzeugspitze korrekt einzustellen, muss die Maschine eine Reihe zusätzlicher Parameter kennen:
- Spindelspitze
zSpindleTip
(berührt Werkzeuglängensensor ohne eingelegtes Werkzeug), damit berechnet werden kann, wie weit das Werkzeug aus der Spindel herausragt - X-Position
xPosTls
des Werkzeuglängensensors beim Werkzeugwechsel - Y-Position
yPosTls
des Werkzeuglängensensors bei Werkzeugwechseln - Sicherheitshöhe
zSafety
(stellt sicher, dass die Spindel auf ihrem Weg zum Werkzeugwechselbereich nicht auf ein Hindernis stößt) - Berührungsvorschub vorwärts und rückwärts. Wir können sie aus dem Makro Z-Null wiederverwenden.
Die Unterroutine “Werkzeuglänge messen”
Legen wir zunächst fest, was diese Unterroutine tun soll:
- Spindel, Kühlmittel etc. anhalten.
- Dialog: Bediener soll die geschätzte Länge eingeben
- Eilgang Z auf Sicherheitshöhe, dann XY zur Position des Werkzeugsensors
- Werkzeuglängensensor abtasten, ähnlich wie bei der Z-Nullpunkt-Erkennung
- Werkzeuglänge berechnen
- Berechnung der Differenz zwischen der letzten und der aktuellen Werkzeuglänge
- Z-Nullpunkt entsprechend aktualisieren
- Z im Eilgang wieder auf Sicherheitshöhe bringen
Code
SUB get_tool_length
GOSUB is_sensor_ok ;# Check if tool length sensor status is OK
DLGMSG "Start tool length measurement? Please enter estimated tool length: " [toolLengthEst]
IF [dialogButton == 1] AND [operatingMode != simulator]
IF [toolLengthEst < 0]
ERRMSG "Error: tool length cannot be negative."
ENDIF
IF [[zSpindleTip+ toolLengthEst + 10] > [zSafety]
ERRMSG "Error: tool too long - could collide with sensor."
ENDIF
M5 ;# Switch spindle off
M9 ;# Switch coolant off
G53 G00 Z[zSafety] ;# Go to safety height (machine coordinates)
G53 G00 X[xPosTls] Y[xPosTls] ;# Go to tool length sensor
G53 G00 Z[zSpindleTip + toolLengthEst + 10] ;# Move Z down to 10mm above estimated tool tip
;# measure tool length, save results, apply Z-offset if needed
G53 G38.2 Z[zSpindleTip] F[touch] ;# probe sensor, latest stop point is spindle tip
IF [probeOk == 1] ;# #5067 == 1 : G38.2 command success
G38.2 G91 Z20 F[rev] ;# now reverse slowly to find untrigger point
G90 ;# back to absolute coordinates
IF [probeOk == 1]
toolLength = [zTouched - sTip]
MSG "Tool length = " toolLength
IF [toolLengthStat == 1] ;# defaults to 0 on startup
lastToolLength = currToolLength ;# save last tool's length
currToolLength = toolLength ;# save current tool's length
toolLengthDiff = [currToolLength - lastToolLength]
G92 Z[zPos - toolLengthDiff] ;# Set Z-axis's coordinate offset (0)
ELSE
currToolLength = toolLength ;# save current tool's length
ENDIF
toolLengthStat = 1
GOSUB reposition_spindle
ELSE
ERRMSG "Could not locate sensor untrigger point."
ENDIF
ELSE
ERRMSG "Could not locate sensor trigger point."
ENDIF
ENDIF
ENDSUB
Werkzeuglängenmakro auf meiner Maschine
In diesem Video ist die Maschine so konfiguriert, dass sie zum XY-Nullpunkt zurückkehrt, wenn die Werkzeugmessung abgeschlossen ist. Sie würde sich genauso verhalten, wenn ich die Werkzeuglänge nach einem Werkzeugwechsel messen lassen würde.
Werkzeugwechsel
Wenn es kein Makro für den Werkzeugwechsel gibt, hält die Maschine ihren Auftrag an und wartet, bis Sie sie manuell an die Stelle fahren, an der Sie den Werkzeugwechsel durchführen, und verlangt, dass Sie die Z0-Position des Werkstücks aufgrund der möglicherweise geänderten Werkzeuglänge neu nullen, bevor sie den Auftrag fortsetzt.
Diese Aufgabe kann leicht automatisiert werden und der folgende Abschnitt zeigt Ihnen, wie Sie ein entsprechendes Makro schreiben können.
Voraussetzungen
Ein optionales Flag getToolLength
kann das Verhalten des Werkzeugwechsel-Makros konfigurieren - ob die Länge jedes Werkzeugs nach einem Werkzeugwechsel gemessen werden soll oder nicht. Wenn Sie einen automatischen Werkzeugwechsler haben, brauchen Sie dies vielleicht nicht.
Die folgenden zusätzlichen Parameter werden ebenfalls benötigt:
- X-Position
xToolChg
wo der Werkzeugwechsel stattfindet (bei mir ist esxToolChg = xPosTls
) - Y-Position
yToolChg
, wo der Werkzeugwechsel stattfindet (bei mir ist esyToolChg = yPosTls
) - Wiederverwendung von
zSafety
ausget_tool_length
Makro newToolNumber
zur Angabe des angeforderten Werkzeugs aus dem G-Code (oder bei manueller Eingabe)currToolNumber
zur Angabe des “alten” Werkzeugs, das ersetzt werden sollToolChangeDone
-Hilfsflag, um anzuzeigen, ob ein Werkzeugwechsel bereits stattgefunden hat
Das Makro “Werkzeugwechsel”
Die folgenden Schritte werden von dem Makro ausgeführt, wenn ein Werkzeugwechsel entweder durch den Befehl M06
“Werkzeugwechsel” in der G-Code-Datei eines Jobs oder manuell durch Benutzer ausgelöst wird:
- Spindel, Kühlmittel etc. anhalten.
- Wenn das angeforderte Werkzeug das aktuelle Werkzeug ist, erscheint ein Dialog mit der Frage, ob es trotzdem gewechselt werden soll.
- Z im Eilgang nach oben (
zSafety
), dann XY auf die Werkzeugwechselposition fahren - Dialog: Angabe des aktuellen Werkzeugs
a
und Aufforderung, das gewünschte Werkzeugb
einzusetzen - Prüfen, ob die Werkzeugwechselkonfiguration die Bestimmung der Werkzeuglänge impliziert. Wenn ja, Makro “get_tool_length” aufrufen.
Code
SUB change_tool
toolChangeDone = 0
M5 ;# Switch spindle off
M9 ;# Switch coolant off
IF [operatingMode != simulator]
TCAGuard off ;# tool change area guard: off for tool change
;# handle case that tool is already in place
IF [newToolNumber == currToolNumber]
DLGMSG "Tool already mounted. Change anyways?"
IF [dialogButton == 1]
toolChangeDone = 0
ELSE
toolChangeDone = 1
ENDIF
ENDIF
;# go to tool change position and prompt to change tool
IF [toolChangeDone == 0]
G53 G00 Z[zSafety] ;# Go to safety height (machine coordinates)
G53 G00 X[xToolChg] Y[yToolChg] ;# Go to tool change position
DLGMSG "Please mount tool now. Old tool number: " [currToolNumber]
" New tool number: " [newToolNumber]
IF [dialogButton == 1]
IF [newToolNumber > 99] OR [newToolNumber < 0]
TCAGuard on ;# tool change area guard: on for normal job
ERRMSG "New tool number implausible."
ENDIF
toolChangeDone = 1
ELSE
ERRMSG "Tool change aborted."
ENDIF
ENDIF
;# prompt when complete and optionally call tool length measurement
IF [toolChangeDone == 1]
MSG "Tool change from " [currToolNumber] " to " [newToolNumber] " complete."
M6 T[newToolNumber] ;# set new tool number
IF [getToolLength == 1] ;# config flag 0 = no, 1 = yes
GOSUB get_tool_length ;# Measure tool length. Careful: To be called after M6 T !
ELSE
GOSUB reposition_spindle
ENDIF
ENDIF
TCAGuard on ;# tool change area guard: on for normal job
ENDIF
ENDSUB
Repositionieren (auf gespeicherte Koordinaten)
Dies ist ein sehr kurzes Makro, das von anderen Unterprogrammen aufgerufen werden kann, um die Maschine entweder zu einer befohlenen Position oder zum XY-Werkstücknullpunkt zu repositionieren. Das Makro könnte mit mehreren repositionTo
-Flag-Werten erweitert werden, z.B.
0 = keine Neupositionierung, 1 = benutzerdefinierte Position, 2 = Werkstücknullpunkt, 3 = Maschinennullpunkt …
Code
SUB reposition_spindle
G53 G00 Z[zSafety] ;# Go to safety height (machine coordinates)
IF [repositionTo == 1]
G00 X[xPosReposition] Y[yPosReposition] ;# Move back to where requested before
repositionTo = 0 ;# reset reposition flag and values
xPosReposition = 0
yPosReposition = 0
ELSE
G00 X0 Y0 ;# Move back to XY zero (workpiece coordinates)
ENDIF
ENDSUB
Tabelle der Variablen
In den folgenden Abschnitten finden Sie alle Parameter, die ich in den obigen Makros verwendet habe.
Systemparameter
protected
bedeutet, dass diese Parameter zu festen Befehlen oder Zuständen gehören, die schreibgeschützt sind. reserved
bedeutet, dass die Parameter eine feste Verwendung innerhalb meiner CNC-Software haben (ich weiß nichts über andere CNC-Programme).
Variable name | Parameter nr. | Type | Comment |
---|---|---|---|
xPos | #5001 | protected | current CNC position |
yPos | #5002 | protected | current CNC position |
zPos | #5003 | protected | current CNC position |
currToolNumber | #5008 | protected | [1…99] |
newToolNumber | #5011 | protected | [1…99] |
zTouched | #5063 | protected | Z where sensor touched |
probeOk | #5067 | protected | 1 = OK |
sensorStatus | #5068 | protected | 1 = triggered |
operatingMode | #5397 | reserved | 1 = simulator |
dialogButton | #5398 | reserved | 1 = OK |
Konfig-Parameter
Config-Parameter sind die Parameter, die einmal eingestellt und dann konstant gehalten werden, da sie an die CNC und ihre Geometrie gebunden sind.
Die Volatilität der Parameter hängt stark von der CNC-Softwarelösung ab, die Sie verwenden, und die Anzahl der freien Parameter kann unterschiedlich sein. In meiner Software werden die Variablen im Bereich “#4000 - #4999” beibehalten, während alle anderen freien und reservierten Parameter flüchtig und/oder skaliert sind.
Variable name | Parameter nr. | Type | Comment |
---|---|---|---|
triggered | #4400 | free, persisted | 1 = normally open |
currToolLength | #4501 | free, persisted | [mm] |
lastToolLength | #4502 | free, persisted | [mm] |
zSafety | #4506 | free, persisted | Z position for move |
xPosTls | #4507 | free, persisted | tls position |
xPosTls | #4508 | free, persisted | tls position |
zSpindleTip | #4509 | free, persisted | Z zpindle on tls |
zTls | #4510 | free, persisted | TLS height [mm] |
toolLengthEst | #4511 | free, persisted | [mm] |
touch | #4512 | free, persisted | touch feed [mm/min] |
rev | #4513 | free, persisted | reverse feed [mm/min] |
getToolLength | #4520 | free, persisted | Flag, 1 = Yes |
xToolChg | #4521 | free, persisted | tool change position |
yToolChg | #4522 | free, persisted | tool change position |
Flag-Parameter
Freie Parameter können nach Belieben verwendet werden. Es muss jedoch darauf geachtet werden, dass nicht versehentlich eine bestehende Systemvariable wiederverwendet oder überschrieben wird.
Variable name | Parameter nr. | Type | Comment |
---|---|---|---|
toolLengthStat | #3501 | free | 1 = measured |
toolLengthDiff | #3502 | free | [mm] |
toolChangeDone | #5015 | free | 1 = Yes |
repositionTo | #5020 | free | Flag, 1 = Yes |
xPosReposition | #5021 | free | reposition flag |
yPosReposition | #5022 | free | reposition flag |
toolLength | #5024 | free | [mm] |
PS: Damit die obigen Code-Beispiele ordentlich angezeigt werden, habe ich fürs Markup die Sprachinterpretation ruby
verwendet. Hier kommt die farbige Syntax-Markierung am besten überein mit der Logik des NGC-interpreters.