CNC Programmierung

Makroprogrammierung: Eingaben, Ergebnisse und Zustände sauber trennen

Makroprogrammierung bündelt wiederverwendbare Aufgaben mit klaren Eingaben, Prüfbedingungen und Ergebnissen. Ein zuverlässiges CNC-Makro braucht außerdem definierte Zustände vor und nach dem Aufruf sowie einen nachvollziehbaren Fehlerfall.

Eine Formel macht ein Programm noch nicht zu einem gut verwendbaren Baustein. Wenn dieselbe Berechnung an mehreren Stellen benötigt wird, entstehen zusätzliche Fragen: Welche Werte erwartet der Aufruf? Wo steht anschließend das Ergebnis? Was geschieht bei ungültigen Eingaben? Bleibt nach dem Aufruf eine veränderte Einstellung zurück? Dieser Artikel behandelt diese Schnittstellen. Die Grundlagen von Variablen und Positionsreihen stehen bereits im Beitrag zur Parameterprogrammierung.

Ein Makro braucht eine begrenzte Aufgabe

Eine klar begrenzte Aufgabe lässt sich leichter prüfen als ein Baustein, der gleichzeitig Positionen berechnet, Werkzeuge wechselt und mehrere Maschinenzustände verändert. Für ein eigenes Lehrmodell wählen wir deshalb ausschließlich eine Berechnung: Aus zwei geordneten X-Koordinaten sollen Mitte und Abstand ermittelt werden. Das Beispiel enthält keine Fahrbewegung, keine Messfahrt und keine Werkzeugkorrektur. Es erklärt, wie ein Aufruf verlässliche Ergebnisse bereitstellen kann.

Die Eingaben heißen x_links und x_rechts. Beide beschreiben in unserem Modell bereits festgelegte geometrische Koordinaten in Millimetern und im selben Bezugssystem. Es handelt sich nicht um unbearbeitete Messtastersignale. Die Aufgabenbeschreibung verlangt x_rechts größer als x_links. Als Ergebnisse werden die Mitte, der Abstand und eine Aussage über die Gültigkeit zurückgegeben. Diese Festlegungen sind Teil des Beispiels; andere Aufgaben dürfen andere Regeln besitzen, müssen sie aber ebenso deutlich beschreiben.

Lehrbeispiel mit zwei eindeutigen Ergebnissen

Für x_links = 18,2 mm und x_rechts = 42,6 mm ergibt sich der Abstand zu 42,6 − 18,2 = 24,4 mm. Die Mitte liegt bei 18,2 + 24,4 / 2 = 30,4 mm. Die zweite Schreibweise zeigt unmittelbar, dass von der linken Position die halbe Spanne hinzugefügt wird. Auch (18,2 + 42,6) / 2 liefert dasselbe Ergebnis. Es sind frei gewählte Lehrwerte und keine Messdaten einer realen Maschine.

Der aufrufende Programmteil darf mit diesen Ergebnissen rechnen, wenn der Aufruf erfolgreich war. Die Zahl 30,4 allein beweist dagegen nicht, dass gerade eine gültige Berechnung stattgefunden hat. Sie könnte noch aus einem früheren Aufruf stammen. Deshalb behandeln wir Ergebnis und Gültigkeitsstatus als zusammengehörig. Wie diese Information in einer konkreten CNC-Sprache gespeichert oder zurückgegeben wird, richtet sich nach deren dokumentierten Möglichkeiten.

SchnittstellenpunktVereinbarung im Lehrmodell
Eingabe 1Linke X-Koordinate, Millimeter, vereinbarter Bezug
Eingabe 2Rechte X-Koordinate, gleiche Einheit und gleicher Bezug
VorbedingungBeide Werte gültig; rechte Koordinate größer als linke
ErgebnisMitte und positiver Abstand
FehlerfallKein neues gültiges Ergebnis; Fehlerstatus auswerten
NebenwirkungKeine Bewegung und keine Änderung von Maschinenmodi

Ablauf zuerst als Pseudocode formulieren

Der folgende Pseudocode ist absichtlich keine G-Code-Schreibweise. Er beschreibt die Logik unabhängig von einer Steuerung. Die Ausgabe „ungültig“ steht für einen festgelegten Status und nicht für einen bestimmten Maschinenbefehl. Ein reales Programm müsste außerdem das vorhandene Datenformat und die Fehlerbehandlung der jeweiligen Steuerung berücksichtigen.

FUNKTION MitteUndAbstand(x_links, x_rechts):
    Ergebnisstatus = ungueltig
    WENN Eingaben fehlen ODER x_rechts <= x_links:
        GIB Fehlerstatus zurueck
    Abstand = x_rechts - x_links
    Mitte = x_links + Abstand / 2
    GIB gueltig, Mitte, Abstand zurueck

Wichtig ist die Reihenfolge: Zunächst wird verhindert, dass ein alter Erfolg stillschweigend weitergilt. Danach werden die Eingaben geprüft. Erst für einen zulässigen Fall entstehen neue Ergebnisse. Der aufrufende Teil muss den Fehlerstatus tatsächlich beachten; eine gute Prüfung im Makro hilft wenig, wenn anschließend unabhängig davon ein alter Wert verwendet wird. Das ist eine Entwurfsregel für dieses Lehrmodell, keine Behauptung über die automatische Behandlung jeder CNC-Variablen.

Ein Makro mit klarer SchnittstelleEin Makro mit klarer Schnittstelle01Eingaben18,2 mm und 42,6 mm02PrüfungRechts größer als links?03BerechnungAbstand 24,4; Mitte 30,404ErgebnisNur mit gültigem Status nutzenDie Stationen werden nacheinander hervorgehoben.
Eigene Rechenaufgabe ohne Maschinenbewegung. Die Stationen verdeutlichen die Übergabe zwischen aufrufendem Programm und Berechnungsbaustein.

Das Prinzip Schritt für Schritt

Ein Makro mit klarer SchnittstelleEin Makro mit klarer Schnittstelle01Eingaben18,2 mm und 42,6 mm02PrüfungRechts größer als links?03BerechnungAbstand 24,4; Mitte 30,404ErgebnisNur mit gültigem Status nutzenDie Stationen werden nacheinander hervorgehoben.

Startet nur auf Wunsch. Pause hält den aktuellen Stand fest. Die Darstellung läuft in Lerngeschwindigkeit; sie simuliert keine Maschinensteuerung. Ohne Bewegung erklären Grafik und Liste denselben Inhalt.

  1. Der Aufruf übergibt 18,2 mm und 42,6 mm im selben Koordinatenbezug.
  2. Die Eingaben erfüllen die vereinbarte Reihenfolge: 42,6 ist größer als 18,2.
  3. Abstand: 24,4 mm. Mitte: 18,2 plus 12,2 ergibt 30,4 mm.
  4. Der Aufrufer erhält neue Werte zusammen mit dem gültigen Status. Ein Fehlerfall darf keinen früheren Erfolg vortäuschen.

Nicht nur den Normalfall prüfen

Eine kleine Prüftabelle sollte auch Fälle enthalten, die bewusst nicht akzeptiert werden. Vertauschte Eingaben werden in unserem Modell zurückgewiesen und nicht heimlich sortiert. Das ist sinnvoll, weil die Namen links und rechts bereits eine Bedeutung tragen. Ein automatisches Sortieren könnte einen Fehler im aufrufenden Programm verdecken. Für eine anders definierte Hilfsfunktion wäre eine Sortierung möglich, müsste aber ausdrücklich zum Vertrag gehören.

Eingaben in mmErwartung im Lehrmodell
18,2 und 42,6Gültig: Mitte 30,4; Abstand 24,4
−5 und 7Gültig: Mitte 1; Abstand 12
12 und 12Ungültig: kein positiver Abstand
42,6 und 18,2Ungültig: vereinbarte Reihenfolge verletzt
Gültiger Aufruf, danach ungültiger AufrufZweiter Status ungültig; erstes Ergebnis nicht als neu verwenden

Negative Koordinaten sind hier nicht grundsätzlich ungültig. Sie können sich aus dem gewählten Bezug ergeben. Die Prüfbedingung darf deshalb nicht aus Gewohnheit alle negativen Zahlen verbieten. Umgekehrt garantiert die korrekte Mathematik keine zulässige Werkzeugposition. Sobald berechnete Werte in Bewegungen eingehen, kommen Arbeitsraum, Werkzeug, Aufspannung und Maschinenzustand hinzu. Die Prüfung eines CNC-Programms muss den vollständigen Ablauf betrachten.

Lokale Daten und globale Ergebnisse unterscheiden

LinuxCNC 2.9 dokumentiert für O-Code-Unterprogramme mit call lokale nummerierte Parameter #1 bis #30, deren Werte beim Rücksprung im aufrufenden Kontext wiederhergestellt werden. Höhere nummerierte Parameter und globale benannte Parameter können dagegen Änderungen über den Aufruf hinaus sichtbar machen. Die ebenfalls angebotene M98/M99-Aufrufvariante besitzt andere Regeln. Deshalb sollte ein Beispiel für eine Aufrufart nicht ungeprüft auf eine andere übertragen werden.

Für die eigene Dokumentation genügt die Aussage „Variable für Ergebnis“ nicht. Benenne, wem der Speicher gehört, wann er gültig ist und wer ihn verändern darf. Ein temporärer Zwischenwert sollte nicht unbeabsichtigt als dauerhafte Ausgabe verwendet werden. Werden globale Ergebnisplätze eingesetzt, braucht es eine klare Zuordnung, damit ein späterer Hilfsaufruf die Werte nicht unbemerkt überschreibt. Die konkrete Umsetzung ist erst nach Auswahl von Steuerung und Softwarestand festzulegen.

Rücksprung stellt nicht automatisch alles wieder her

Ein Unterprogramm kann neben Daten auch modale Einstellungen beeinflussen. Beispielsweise ändert sich die Bedeutung späterer Koordinaten, wenn ein anderer Distanzmodus aktiv bleibt. LinuxCNC beschreibt mit M73 eine Möglichkeit, den dokumentierten modalen Zustand beim Verlassen eines Unterprogramms wiederherzustellen. Die Dokumentation nennt aber ausdrücklich Grenzen: Ein Programmabbruch innerhalb des Unterprogramms bewirkt diese Wiederherstellung nicht. Daraus darf keine allgemeine Zusage eines unveränderten Maschinenzustands abgeleitet werden.

In einer Schnittstellenbeschreibung sollten daher Voraussetzungen und zugesicherter Zustand nach erfolgreicher Rückkehr getrennt stehen. Der Fehler- oder Abbruchfall erhält einen eigenen Eintrag. Unser Rechenmodell vermeidet diese Schwierigkeit, weil es keine Maschinenmodi verändert. Ein später erweitertes Makro müsste neu bewertet werden. Die Unterschiede zwischen relativen und absoluten Koordinaten bleiben auch dann wichtig, wenn die Zahlen automatisch berechnet wurden.

Wiederverwendung braucht einen nachvollziehbaren Stand

Gib einem wiederverwendeten Baustein eine eindeutige Bezeichnung und einen dokumentierten Stand. Halte fest, welche Aufrufer ihn verwenden und welche Testfälle zu diesem Stand gehören. Eine Änderung an der Eingabereihenfolge kann mehrere Programme betreffen, selbst wenn die Berechnung unverändert bleibt. Gerade solche Schnittstellenänderungen sind leicht zu übersehen, weil das Makro für sich genommen weiterhin plausible Zahlen liefert.

Ein gutes Makro spart Wiederholungen und macht eine begrenzte Aufgabe überprüfbar. Sein Wert liegt nicht in möglichst vielen verschachtelten Anweisungen, sondern in klaren Eingaben, verständlicher Logik und definierten Ergebnissen. Die hier gezeigte Mitte-Abstand-Funktion bleibt bewusst eine reine Rechenhilfe. Ihre Verbindung mit einer realen CNC-Bewegung wäre ein zusätzlicher, separat zu prüfender Entwicklungsschritt.

Quellen und fachliche Einordnung

Primärquellen, geprüft am 26.10.2026. Eigene Lehrbeispiele; keine dokumentierten Maschinenversuche und keine pauschalen Schnittwertempfehlungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.