Steuertexte sind das zentrale Element beim Export mit dem Postprozessor. Sämtliche Steuertexte können vom Anwender im Dialog "Postprozessor editieren" editiert werden. Einige Steuertexte werden immer genau einmal, andere mehrmals und wieder andere unter Umständen überhaupt nicht exportiert. Ob überhaupt und wie häufig ein Steuertext exportiert wird, hängt von seinem Typ, von Einstellungen im Dialog "Postprozessor editieren", sowie von Einstellungen in den Dialogen "Werkzeugliste verwalten" und "Generelle Parameter" des CAM-Plug-Ins sowie den gewählten Objekten ab.
Die resultierende NC-Datei, zum Beispiel mit G-Code-Befehlen nach DIN 66025 für eine Fräsmaschine oder HP-GL-Kommandos für einen großformatigen Schneidplotter, setzt sich also aus einer Abfolge von Steuertexten zusammen. Alle Variablen in diesen Steuertexten werden vom Postprozessor vor dem Export durch ihren jeweiligen Inhalt (Zeichenkette) zum aktuellen Zeitpunkt ersetzt. Außerdem werden sämtliche Textanweisungen (zum Beispiel funktionale Anweisungen und numerische Termanweisungen) ausgewertet (siehe Anweisungen in Texten).
Am besten Sie öffnen im Dialog "Postprozessor editieren" die Einstellungsdatei Universal DIN-ISO.pps und speichern dann die Einstellungen sofort wieder unter einem anderen Namen ab, zum Beispiel Test DIN-ISO.pps. So können Sie dann parallel zum Lesen gleich einmal ausprobieren, wie sich Änderungen in Steuertexten oder anderen Einstellungen auf die resultierende NC-Datei auswirken. Zum Export eignet sich eine kurze Kurve (Linienzug) oder eine einfache Fläche (Rechteck) für diesen Zweck am besten.
Von Zeichnungsobjekten über Steuertexte zur NC-Datei
Nachdem die Zeichnungsobjekte vom Anwender für den Export mit dem Postprozessor gewählt wurden, wird für jedes gewählte Objekt geprüft, welche Maschinen-Werkzeugnummer bzw. welcher logischer Werkzeugindex ihm gemäß der aktuellen Werkzeugliste zugeordnet ist. Sollte ein Objekt keinem Werkzeug zugeordnet sein, so wird es nicht exportiert.
Für die Reihenfolge der zu erzeugenden Export-Objekttypen ist die Reihenfolge der Objekte in der Zeichnungsliste entscheidend. Zusätzlich kann optional auch noch die Reihenfolge der Werkzeuge in der Werkzeugliste berücksichtigt werden, so dass zum Beispiel alle Objekte, die Werkzeug Nr. 1 zugeordnet sind, vor denen ausgegeben werden, die Werkzeug Nr. 2 zugeordnet sind.
Ein Zeichnungsobjekt hat immer einen eindeutigen Startpunkt. Alle Zeichnungsobjekte mit einer Kontur, wie zum Beispiel Kurven, Flächen, aber auch einzelne Linien, Kreisbögen und Bézier-Kurven, haben darüber hinaus immer auch eine Richtung bzw. einen Drehsinn. Beim Wandeln der Zeichnungsobjekte werden diese Informationen berücksichtigt.
Nehmen wir zum Beispiel das Zeichnungsobjekt Rechteck (bei ausgeschalteter Radiuskorrektur): Für dieses wird zunächst der Steuertext für Konturstart aufgerufen. In diesem wird der Startpunkt des Rechtecks mit Eilgeschwindigkeit in Sicherheitshöhe angefahren (Bewegung in X/Y-Ebene), anschließend wird das Werkzeug mit Eilgeschwindigkeit auf Arbeitshöhe heruntergefahren und von dort auf die aktuelle Einstechtiefe abgesenkt (Bewegungen entlang der Z-Achse). Dann wird für jeden Kante des Rechtecks gemäß seines Drehsinns der Steuertext für Linien aufgerufen (Vorschübe in der X/Y-Ebene), also insgesamt vier Aufrufe des Steuertextes für Linien. Die Objektvariablen werden vor jedem Aufruf entsprechend aktualisiert. Schließlich wird der Steuertext für Konturende aufgerufen. In diesem wird das Werkzeug von der aktuellen Einstechtiefe mit Eilgeschwindigkeit auf Sicherheitshöhe (Bewegungen entlang der Z-Achse) angehoben.
Tabelle 1: Abfolge der Steuertextaufrufe und zugehörige Werkzeugpositionen
Steuertexttyp
|
Zeitpunkt des Steuertextaufrufs
|
Anzahl
Aufrufe
|
Z-Position des Werkzeugs vor Aufruf
|
Veränderung der Werkzeugposition im Steuertext (X/Y-Ebene oder Z-Achse)
|
Programmstart
|
Am Anfang der NC-Datei
|
Einer
|
Undefiniert
|
Immer auf Sicherheitshöhe fahren. (4)
|
Programmende
|
Am Ende der NC-Datei
|
Einer
|
Sicherheitshöhe
|
Keine
|
Kontur-Unterprogrammstart
|
Vor jedem Kontur-Unterprogramm. Kontur-Unterprogramme werden von speziellen Zyklen (Ausräumen, Schlichten etc.) aufgerufen. Die dazugehörigen Blockinstanzen aus der aktiven CAM-Bibliothek müssen ein Attribut mit dem Namen "CONTOUR-SUBPROGRAM" besitzen.
|
Variabel (1)
|
Sicherheitshöhe
|
Kontur-Unterprogramme enthalten nur Bewegungen in der X/Y-Ebene (keine Veränderung der Z-Achse). Möglicherweise existierende Vorschubangaben oder Zusatzbefehle werden ignoriert.
|
Kontur-Unterprogrammende
|
Nach jedem Kontur-Unterprogramm. Kontur-Unterprogramme werden von speziellen Zyklen (Ausräumen, Schlichten etc.) aufgerufen. Die dazugehörigen Blockinstanzen aus der aktiven CAM-Bibliothek müssen ein Attribut mit dem Namen "CONTOUR-SUBPROGRAM" besitzen.
|
Variabel (1)
|
Sicherheitshöhe
|
Kontur-Unterprogramme enthalten nur Bewegungen in der X/Y-Ebene (keine Veränderung der Z-Achse). Möglicherweise existierende Vorschubangaben oder Zusatzbefehle werden ignoriert.
|
Primärlauf / Materialvorschub
|
Nach Ausgabe des letzten Objektes bzw. falls Materialvorschub aktiv ist nach Ausgabe des letzten (beschnittenen) Objektes des aktuellen Vorschubfensters
|
Variabel (1)
|
Sicherheitshöhe
|
Falls nötig, am Ende wieder auf Sicherheitshöhe fahren. (4)
|
Vor Wiederholung
|
Nachdem sämtliche Primärlaufe bzw. Materialvorschübe abgeschlossen sind
|
Variabel (1)
|
Sicherheitshöhe
|
Falls nötig, am Ende wieder auf Sicherheitshöhe fahren. (4)
|
Konturstart
|
Vor jeder Kontur (bestehend aus Linien, Kreisbögen oder Bézier-Kurven)
|
Einmal pro
Kontur (2)(7)
|
Sicherheitshöhe oder aktuelle Arbeitshöhe
|
Falls erforderlich, zunächst in Sicherheitshöhe den Konturstartpunkt (X/Y-Ebene) anfahren und dann auf die aktuelle Arbeitshöhe herunterfahren. Am Ende immer auf die aktuelle Einstechtiefe absenken. (4)(6)
|
Konturende
|
Nach jeder Kontur (bestehend aus Linien, Kreisbögen oder Bézier-Kurven)
|
Einmal pro
Kontur (2)(7)
|
Aktuelle Einstechtiefe oder Sicherheitshöhe
|
Von der aktuelle Einstechtiefe auf Sicherheitshöhe anheben bzw. auf Sicherheitshöhe Zielpunkt (X/Y-Ebene) anfahren. (4)(6)
|
Werkzeugwechsel
|
Falls für das aktuelle Objekt (für das allererste Objekt gilt dies immer) aufgrund der Werkzeugliste ein neues physisches Werkzeug gewählt werden muss oder ein logischer Werkzeugwechsel bevorsteht, wird dieser Steuertext aufgerufen. Dieser Steuertext wird (falls überhaupt) immer vor dem dazugehörigen Steuertext für Konturstart, Zyklen (Attribute) oder Punkte (Markierungen) aufgerufen.
|
Variabel (3)
|
Sicherheitshöhe
|
Nach physischem Werkzeugwechsel anschließend wieder auf Sicherheitshöhe fahren (4), bei logischem Werkzeugwechsel keine Veränderung.
|
Linien
|
Für jeden zu erzeugenden Export-Objekttyp Linie
|
Variabel (2)
|
Aktuelle Einstechtiefe
|
Vorschub in X/Y-Ebene (5)
|
Kreisbögen
|
Für jeden zu erzeugenden Export-Objekttyp Kreisbogen
|
Variabel (2)
|
Aktuelle Einstechtiefe
|
Vorschub in X/Y-Ebene (5)
|
Bézier-Kurven
|
Für jeden zu erzeugenden Export-Objekttyp Bézier-Kurve
|
Variabel (2)
|
Aktuelle Einstechtiefe
|
Vorschub in X/Y-Ebene (5)
|
Zyklen (Attribute)
|
Für jeden zu erzeugenden Export-Objekttyp Zyklus (Attribut). Gilt nur für Blockinstanzen der aktiven CAM-Bibliothek mit passendem Namen des Zyklusattributs. Der Textinhalt des Zyklusattributs oder der referenzierten Datei wird als Steuertext für die Ausführung des eigentlichen Zyklus' verwendet.
|
Variabel (2)
|
Sicherheitshöhe
|
In Sicherheitshöhe den Zielpunkt (X/Y-Ebene) anfahren, Zyklus ausführen (Bohren, Gewindeschneiden etc.) und am Ende auf wieder auf Sicherheitshöhe hochfahren. Siehe auch Kapitel "CAM-Blocktypen und Zyklus-/Steuerattribute". (4)
|
Punkte (Markierungen)
|
Für jeden zu erzeugenden Export-Objekttyp Punkt (Markierung). Anders als der Steuertext für Zyklen (Attribute) enthält dieser Steuertext neben den Kommandos zum Positionieren des Werkzeugs auch sämtliche Vorschubkommandos für den eigentlichen Zyklus.
|
Variabel (2)
|
Sicherheitshöhe
|
In Sicherheitshöhe den Zielpunkt (X/Y-Ebene) anfahren. Auf die aktuelle Arbeitshöhe herunterfahren, Zyklus ausführen (Bohren, Gewindeschneiden etc.) und am Ende auf wieder auf Sicherheitshöhe hochfahren. (4)
|
Satznummern (Zeilennummern)
|
Am Anfang eines Satzes (Zeile)
|
Gemäß Anzahl Zeilen (3)
|
k.A.
|
k.A.
|
(1) | Funktion muss vom Anwender explizit eingeschaltet werden. |
(2) | Aufruf hängt davon ab, welche Export-Objekttypen erzeugt werden (hängt von den Einstellungen im Dialog "Postprozessor editieren" ab) bzw. welche Zeichnungsobjekte gewählt sind. |
(3) | Funktion kann vom Anwender ausgeschaltet werden. Für Werkzeugwechsel gilt: Ist gerade die Aufzählung eines Kontur-Unterprogramms aktiv, so wird dieser Steuertext nicht aufgerufen. |
(4) | Das Fahren in, auf und von Sicherheitshöhe geschieht immer mit Eilgeschwindigkeit. Ansonsten geschieht das Absenken/Einstechen bzw. Anheben/Ausziehen mit der jeweils für das aktuelle Werkzeug eingestellten Geschwindigkeit. |
(5) | Der Vorschub findet immer in der X/Y-Ebene in der aktuellen Einstechtiefe mit der für das aktuelle Werkzeug eingestellten Vorschubgeschwindigkeit statt. Die Z-Achse bleibt also unverändert. Einzige Ausnahme: Schräges Einstechen/Ausziehen (muss aber vom Anwender explizit eingeschaltet werden) |
(6) | Bitte beachten Sie die Beschreibung der Arbeitsvariablen ~UpdateXYPosition~,~X1~/~Y1~ und ~UseAuxPoint~. |
(7) | Bitte beachten Sie den Sonderfall für die Arbeitsvariable ~UpdateCutterRotationOnly~. |
Der Aufruf eines Steuertexts erfolgt in zwei Schritten: 1. Alle Variablen werden aufgelöst, das heißt durch Ihren jeweiligen Inhalt (Zeichenkette) ersetzt, und anschließend werden sämtliche Textanweisungen ausgewertet (siehe Anweisungen in Texten). 2. Der resultierende Textabschnitt wird an die aktuelle NC-Datei gehängt. Ausnahme: Die resultierende Textabschnitte für Unterprogrammstart/-ende werden nicht jeweils direkt an die NC-Datei gehängt, sondern sie werden zunächst separat gespeichert und dann am Ende vor dem Aufruf des Steuertexts für Programmende an die NC-Datei gehängt.
Zusammenfassend kann man sagen, dass alle Texte außerhalb eines Paares geschweifter Klammern { } und außerhalb eines Tildezeichenpaares ~ ~ konstant sind, also eins-zu-eins in die NC-Datei kopiert werden. Die Variablen inklusive der umschließenden Tildezeichen (zum Beispiel ~X1~, ~Y1~) werden zum jeweiligen Zeitpunkt durch ihren aktuellen Inhalt ersetzt. Anschließend werden die Anweisungen ausgewertet und inklusive der geschweiften Klammern durch das jeweilige Resultat ersetzt. Aus dem Steuertext {+~X1~} wird so zum Beispiel {+50.0} und schließlich +50. Zuweisungs- und Kommentaranweisungen erscheinen grundsätzlich nicht in der NC-Datei. Auch die Bedingungsanweisung kann unter Umständen einen Leertext liefern (siehe Tabelle 2, ~FirstContourElement~), das heißt, in diesem Fall wird nichts in die NC-Datei kopiert. Weitere Informationen zu Anweisungen in Texten und Termauswertung finden Sie in der "CAD6 Referenz" im Kapitel "Grundlagen".
Im folgenden Beispiel wird ein Rechteck mit einem Startpunkt bei X=50 / Y=100 mm, einer Breite von 100 mm und einer Höhe von 50 mm ohne Radiuskorrektur ausgegeben. Seine Drehung ist im Uhrzeigersinn. Die Sicherheitshöhe liegt bei 100 mm und die Einstechtiefe beträgt 20 mm. Die Einstechgeschwindigkeit liegt bei 250 mm/min, die Vorschubgeschwindigkeit beträgt 400 mm/min, ein Kühlmittel wird zugeführt und die Spindel dreht sich im Uhrzeigersinn mit 4000 U/min. Dieses Beispiel basiert auf dem oben erwähnten Postprozessor "Universal DIN-ISO.pps". Die Darstellung der Steuertexte ist jedoch zum besseren Verständnis auf die für diesen Fall relevanten Teile beschränkt. Eine ausführliche Erläuterung der verwendeten Variablen finden Sie im Kapitel "Variablen für Steuertexte".
Tabelle 2: Beispiel für die Umsetzung von Steuertexten in Textabschnitte der NC-Datei
Steuertext
|
Resultierender Textabschnitt in der NC-Datei
|
Beschreibung
|
{=LineNumber{10}}
%~PrgName~
G17 {?~Units~==2||~Units~==3{$G70}{$G71}} G90
|
N10 %TEST-DIN-ISO
N20 G17 G71 G90
|
In der ersten Zeile wird der Variablen ~LineNumber~ der Startwert 10 zugewiesen. Das Ausgeben und Inkrementieren der Satznummern geschieht mit dem Steuertext für Satznummern. Eine solche Zuweisungsanweisung erscheint nicht in der NC-Datei! Erst die zweite Zeile des Steuertexts für Programmstart erscheint als erste Zeile in der NC-Datei. Die nächste Zeile besteht aus den konstanten Texten G17 und G90 zwischen die das Ergebnis (G70 oder G71) der Bedingungsanweisung eingefügt wird.
|
T{#~MachineToolNo~} S{#~MillingSpindleRate~}
G00 G40 Z{+~ZClearance~}
|
N30 T1 S4000
N40 G00 G40 Z+100
|
Im Steuertext für Werkzeugwechsel wird das physische Werkzeug Nr. 1 gewählt und die Spindeldrehzahl eingestellt. In der zweiten Zeile fährt das Werkzeug auf Sicherheitshöhe.
|
G00 G40 X{+~X1~} Y{+~Y1~}
G00 Z{+~ZWorking~} {?~MillingSpindleDir~{$M04}{$M03}}
G01 Z{+~Z1~} F{#~LoweringVel~} {?~ToolControl1~{$M08}}
|
N50 G00 G40 X+50 Y+100
N60 G00 Z+5 M03
N70 G01 Z-20 F250 M08
|
Das Anfahren des ersten Punktes der Kontur auf Sicherheitshöhe geschieht immer im Steuertext für Konturstart. Anschließend wird das Werkzeug mit Eilgeschwindigkeit auf Arbeitshöhe (hier identisch mit dem Betriebsabstand) gefahren und die Spindel wird im Uhrzeigersinn eingeschaltet. Als letztes wird das Werkzeug auf Einstechtiefe mit Einstechgeschwindigkeit und eingeschalteter Kühlmittelzufuhr abgesenkt.
|
G01 X{+~X1~} Y{+~Y1~}{?~FirstContourElement~ {$ F{#~MovingVel~}}}
|
N80 G01 X+50 Y+150 F400
N90 G01 X+150 Y+150
N100 G01 X+150 Y+100
N110 G01 X+50 Y+100
|
Der Steuertext für Linien wird für jede Kante des Rechtecks genau einmal aufgerufen. Sämtliche Variablen (hier ~X1~/ ~Y1~ und ~FirstContourElement~) werden gemäß des aktuellen Zustands vor jedem Aufruf aktualisiert. F400 erscheint nur einmal, weil nur beim ersten Aufruf ~FirstContourElement~ wahr (1) ist.
|
G00 Z{+~ZClearance~} M05{?~ToolControl1~{$ M09}}
|
N120 G00 Z+100 M05 M09
|
Im Steuertext für Konturende wird das Werkzeug wieder auf Sicherheitshöhe gefahren und Spindel und Kühlmittelzufuhr werden ausgeschaltet.
|
M30
|
N130 M30
|
Der Steuertext für Programmende beinhaltet nur einen konstanten Text, der eins-zu-eins kopiert wird.
|
Expliziten Zahlwert (Sonderzeichen) in NC-Datei kopieren
Um einen expliziten Zahlwert bzw. ein Sonderzeichen (z.B. Escape = Zahlwert 27) in die NC-Datei zu kopieren, verwenden Sie folgende Zeichenfolge in einem beliebigen Steuertext:
\\\~XX
| XX ist dabei eine immer zweistellige Hexadezimalzahl (sowohl Groß- als auch Kleinbuchstaben sind gültig), zum Beispiel wird \\\~1B in den Zahlwert (Escape-Sonderzeichen) 27 gewandelt. Manche Plotter benötigen zum Beispiel eine bestimmte Escape-Sequenz, um in den HP-GL-Modus umzuschalten. |
Per Dateiinjektion den Inhalt von einer NC-Datei in eine andere dynamisch einfügen
Um den Inhalt einer exisiterenden NC-Datei in einem beliebigen Steuertext (und damit in eine andere NC-Datei) einzufügen, verwenden Sie die folgende Zeichenfolge:
\\\~*NAME*
| NAME steht dabei für den Dateinamen der einzufügenden Datei. Verwenden Sie einen Dateinamen ohne Pfad, um auf den Pfadnamen der festen Exportdatei zuzugreifen. Man kann diese Funktionalität zum Beispiel in einer Postprozessor-Kette verwenden. Ein erster Postprozessor erzeugt eine Liste mit den tatsächlich benutzten Werkzeugen und ein in der Kette folgender Postprozessor fügt diese Liste dann per Dateiinjektion im Steuertext für Programmstart ein. Zu diesem Zweck kann man einen Job definieren, der einen extra Dateinamen verwendet. |
Weitere Informationen finden Sie in Postprozessor-Kette, Dateiinjektion, Job und Schattenmodus.
|