Parameterübergabe in CNC-Programmen: Werte, Unterprogramme und Fehlerprüfung
Vier Bohrungen auf einem Lochkreis lassen sich mit festen Koordinaten programmieren. Soll derselbe Ablauf anschließend sechs Bohrungen auf einem größeren Kreis erzeugen, beginnt ohne Struktur schnell das Kopieren und Ändern. Parameterübergabe trennt den wiederverwendbaren Ablauf von seinen Eingabewerten. Das spart doppelte Programmlogik – vorausgesetzt, Bedeutung, Einheit und Gültigkeit jedes Werts sind eindeutig festgelegt.
Was wird bei der Parameterübergabe übergeben?
Ein Hauptprogramm ruft einen wiederverwendbaren Ablauf auf und liefert dazu Werte. Diese übergebenen Werte heißen Argumente. Das aufgerufene Unterprogramm ordnet sie seinen vorgesehenen Parametern beziehungsweise Variablen zu. Dort können sie in Berechnungen, Bedingungen und Bewegungsanweisungen verwendet werden.
Der Unterschied lässt sich ohne NC-Syntax erklären: Ein Ablauf „Lochkreis“ erwartet Mittelpunkt, Radius, Anzahl und Startwinkel. Ein konkreter Aufruf liefert beispielsweise Mittelpunkt 40/30 mm, Radius 20 mm, Anzahl 4 und Startwinkel 0°. Die Rechenvorschrift bleibt gleich; mit anderen Werten entsteht ein anderes Lochbild.
Eine Variable ist dabei zunächst ein Speicherplatz für einen Wert. Erst die vereinbarte Verwendung macht daraus etwa einen Radius in Millimetern. Der Name oder die Nummer allein verhindert keine Verwechslung. Ein mathematisch gültiger Zahlenwert kann für eine reale Bearbeitung trotzdem unzulässig sein.
Die Schnittstelle ist wichtiger als ein kurzer Aufruf
Vor der Programmierung wird festgelegt, was der Ablauf benötigt und garantiert. Ein kleiner Parameterkatalog macht die Verwendung nachvollziehbar. Für das folgende reine Geometriebeispiel gilt:
| Eingabe | Bedeutung | Vereinbarung im Beispiel |
|---|---|---|
| Mittelpunkt X / Y | Lage des Lochkreismittelpunkts | Millimeter im vereinbarten Werkstückbezug |
| Radius | Abstand eines Lochzentrums zum Kreismittelpunkt | Positiver Wert, ausdrücklich kein Durchmesser |
| Anzahl | Zahl gleichmäßig verteilter Lochpositionen | Positive ganze Zahl |
| Startwinkel | Lage der ersten Position | Grad, ab positiver X-Richtung gegen den Uhrzeigersinn |
Ein realer Bearbeitungsablauf braucht weitere Festlegungen: Werkzeug, Bearbeitungsebene, Tiefenbezug, Sicherheitsabstände und zulässige Betriebszustände. Diese müssen entweder übergeben, zuverlässig gesetzt oder als dokumentierte Voraussetzungen geprüft werden. Versteckte Annahmen über den Zustand des vorherigen Programms machen die Wiederverwendung fehleranfällig.
Animation: Vom Aufruf zum Lochbild
Die vier Stationen zeigen ausschließlich eine Koordinatenberechnung. Sie starten keine Maschine und enthalten keinen ausführbaren NC-Code. So lässt sich die Datenübergabe unabhängig von einer bestimmten Steuerung verstehen.
Station 1 von 4
- Der Aufrufer stellt die für diesen Lochkreis vorgesehenen Argumente zusammen.
- Der Ablauf ordnet die Werte zu und prüft die vereinbarte Bedeutung und zulässige Eingaben.
- Aus vier Positionen ergibt sich eine Winkelteilung von 90 Grad; daraus werden die Lochzentren berechnet.
- Die Ergebnisse können über einen ausdrücklich definierten Ausgabemechanismus bereitgestellt werden. Danach kehrt der Ablauf zurück.
Der Aufrufer stellt die für diesen Lochkreis vorgesehenen Argumente zusammen.
Das Rechenbeispiel nachvollziehen
Für n gleichmäßig verteilte Positionen beträgt der Winkelschritt 360° / n. Bei n = 4 sind es 90°. Mit dem vereinbarten Startwinkel entstehen die Winkel 0°, 90°, 180° und 270°. Die Koordinaten folgen aus X = Mittelpunkt X + Radius × cos(Winkel) und Y = Mittelpunkt Y + Radius × sin(Winkel).
Damit ergeben sich im Beispiel die vier Lochzentren (60, 30), (40, 50), (20, 30) und (40, 10), jeweils in Millimetern. Wird versehentlich der Durchmesser 40 statt des Radius 20 übergeben, verdoppelt sich der Abstand zum Mittelpunkt. Das Programm könnte weiterhin rechnen – nur mit einem falschen Lochbild.
Vor einer Umsetzung ist zudem zu prüfen, welche Winkeleinheit die Funktionen der Zielsteuerung erwarten. Eine Parameterliste enthält nicht automatisch sämtliche Informationen darüber, wie die Maschine die daraus entstehenden Koordinaten interpretiert. Dazu gehört auch das aktive Koordinatensystem mit seinen Nullpunkten und Wegangaben.
Gleiche Idee, unterschiedliche Steuerungsregeln
LinuxCNC dokumentiert für O-Call die Übergabe von bis zu 30 Argumenten an die Parameter #1 bis #30. Die Argumente werden dabei in eckigen Klammern angegeben. Beim Rücksprung werden die vorherigen Werte dieses lokalen Bereichs wiederhergestellt. Nicht übergebene Positionen innerhalb dieses Bereichs übernehmen laut Dokumentation Werte aus dem aufrufenden Kontext. Deshalb ist „weggelassen“ dort nicht pauschal gleich „null“.
Haas beschreibt dagegen die Übergabe über G65 mit einer Zuordnung von Adressbuchstaben zu lokalen Variablen. Die Zuordnung ist nicht einfach eine lückenlose alphabetische Nummerierung. Außerdem weist die Dokumentation auf eine besondere Interpretation von Argumenten ohne Dezimalpunkt hin. Das bloße Kopieren einer Zahlenliste zwischen Steuerungen kann deshalb andere Werte erzeugen als erwartet.
Diese Beispiele zeigen das Prinzip, sind aber keine austauschbaren Programmiervorlagen. Für eine konkrete Maschine müssen Aufrufart, verfügbare Makrofunktionen, Softwarestand und Herstellerdokumentation zusammenpassen. Auch die Übergabe eines Rückgabewerts ist ausdrücklich festzulegen; ein Rücksprung allein überträgt nicht automatisch jede intern berechnete Variable an den Aufrufer.
Lokale Werte begrenzen unbeabsichtigte Nebenwirkungen
Lokale Variablen gehören zu einem begrenzten Ausführungskontext. Globale Variablen können dagegen von mehreren Programmteilen gemeinsam genutzt werden. Werden Eingaben und Zwischenergebnisse unterschiedslos global gespeichert, kann ein späterer Aufruf unbemerkt Werte überschreiben, die ein anderer Ablauf noch benötigt.
Eine verständliche Struktur trennt daher Eingaben, interne Hilfswerte und ausdrücklich vereinbarte Ausgaben. Welche Variablen dafür geeignet sind und wie lange sie erhalten bleiben, ist steuerungsspezifisch. Systemvariablen sind kein beliebig nutzbarer Notizzettel: Sie können Zustände und Funktionen der Steuerung betreffen.
Typische Fehler bei der Parameterübergabe
| Fehler | Mögliche Folge | Vorbeugung |
|---|---|---|
| Radius und Durchmesser verwechselt | Falsche Geometrie trotz korrekter Rechnung | Bedeutung eindeutig dokumentieren |
| Argumente vertauscht | Wert landet im falschen Parameter | Zuordnung mit einem einfachen Beispiel prüfen |
| Pflichtwert fehlt | Undefinierter oder unerwartet übernommener Wert | Vollständigkeit nach Steuerungsregeln kontrollieren |
| Anzahl ist null oder nicht ganzzahlig | Ungültige Teilung oder Schleifenlogik | Zulässigen Wertebereich vor der Berechnung prüfen |
| Einheit oder Bezug unklar | Falsche Abstände oder Positionen | Einheiten und Bezugssystem festlegen |
| Globaler Hilfswert überschrieben | Fehler zeigt sich erst bei späterem Aufruf | Gültigkeitsbereich und Ausgaben bewusst gestalten |
Ein kleines Testset schafft Vertrauen
Zuerst werden Werte verwendet, deren Ergebnis von Hand überprüfbar ist – wie der vierteilige Lochkreis. Danach folgen ein versetzter Mittelpunkt, ein anderer Radius und eine andere Anzahl. Anschließend werden absichtlich unzulässige Eingaben geprüft. Ein fehlender Pflichtwert darf nicht unbemerkt zu einem scheinbar brauchbaren Bearbeitungsergebnis führen.
Für eine reale Bearbeitung folgen Simulation und die vorgesehenen Einrichtprüfungen der Maschine. Dabei werden auch Anfahrten, Rückzüge, Werkzeuge und Spannmittel betrachtet. Parameterprüfung allein kann keine Kollisionsfreiheit garantieren. Für wiederkehrende Modellbauteile lohnt eine versionierte Ablage von Ablauf, Parameterbeschreibung und geprüftem Beispielsatz; Änderungen bleiben dadurch nachvollziehbar.
Die Verbindung zur Werkstattplanung zeigt der Artikel über systematische Rüstzeitverbesserung. Die geometrische Wiederverwendung lässt sich außerdem mit den Grundlagen zur Spiegelung in CAD und CNC vergleichen: Wiederholung wird erst dann zuverlässig, wenn die veränderten Bedingungen ausdrücklich berücksichtigt werden.
Quellen und Geltungsbereich
Recherchestand: 26. Oktober 2026. Der Artikel erläutert Programmstruktur und Datenübergabe; er enthält kein unmittelbar ausführbares Maschinenprogramm.
- LinuxCNC: O Codes – Argumentübergabe und lokale Parameter bei O-Call.
- LinuxCNC: G-code Overview – Parameter und Gültigkeitsbereiche.
- Haas: Mill – Macros – Argumentzuordnung und Zahleninterpretation.