Parameterprogrammierung verstehen: Variablen, Reihen und Prüfbedingungen
Meine selbst auf CNC umgerüstete Optimum BF 20 gibt dem Thema den persönlichen Werkstattbezug. Welche Steuerung dort eingesetzt wird, ist hier nicht festgelegt. Das folgende LinuxCNC-Beispiel erläutert ausdrücklich dessen dokumentierte Schreibweise; es ist keine Aussage über die Software meiner Maschine und kein freigegebenes Bearbeitungsprogramm.
Erst die Geometrie, dann den Programmablauf beschreiben
Für eine eigene Lehrreihe werden vier Positionen auf gleicher Y-Koordinate berechnet. Die erste X-Position beträgt 10 mm, der Abstand zwischen benachbarten Positionen 15 mm. Der Index k nimmt nacheinander die Werte 0, 1, 2 und 3 an. Damit lautet die Vorschrift x(k) = x₀ + k × p.
Das Prinzip Schritt für Schritt
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.
- Index k = 0: x = 10 + 0 × 15 = 10 mm. Der Index beginnt in diesem eigenen Modell bei null.
- Index k = 1: x = 10 + 1 × 15 = 25 mm. Die zweite Position liegt um genau einen Teilungsabstand weiter.
- Index k = 2: x = 10 + 2 × 15 = 40 mm. Berechnung und konkrete Maschinenbewegung sind weiterhin getrennte Aufgaben.
- Index k = 3: x = 10 + 3 × 15 = 55 mm. Vier Positionen enthalten drei Zwischenräume; die Gesamtausdehnung beträgt daher 45 mm.
| Index k | Rechnung | X-Position |
|---|---|---|
| 0 | 10 + 0 × 15 | 10 mm |
| 1 | 10 + 1 × 15 | 25 mm |
| 2 | 10 + 2 × 15 | 40 mm |
| 3 | 10 + 3 × 15 | 55 mm |
Der Abstand von der ersten bis zur letzten Position ist (N − 1) × p = 45 mm. Die Rechnung N × p würde hier 60 mm ergeben und einen zusätzlichen Zwischenraum enthalten. Dieser Unterschied ist eine typische Stelle für einen Zählfehler. Eine Zeichnung mit nummerierten Positionen macht ihn leichter sichtbar als eine unkommentierte Schleife.
Ein reines Rechenfragment in LinuxCNC-Schreibweise
LinuxCNC dokumentiert benannte Parameter mit der Schreibweise #<name>, Zuweisungen mit dem Gleichheitszeichen und Ausdrücke in eckigen Klammern. Das folgende Fragment berechnet nur die dritte Position unserer Reihe. Jede Zuweisung steht in einer eigenen Zeile; Bewegungsbefehle sind nicht enthalten.
#<x_start> = 10
#<abstand> = 15
#<index> = 2
#<x_position> = [#<x_start> + #<index> * #<abstand>]Das Ergebnis ist 40. Die Zuordnung zu Millimetern stammt in diesem Lehrbeispiel aus der vorher definierten Modellaufgabe. Das Fragment setzt selbst keinen Einheitenmodus und kein Koordinatensystem. Es enthält auch keinen Programmabschluss, keine Werkzeugdaten und keine Prüfung eines Bewegungsraums. Es soll deshalb nicht als eigenständig ausführbares CNC-Programm verstanden werden.
Warum Zeilenfolge und Gültigkeitsbereich wichtig sind
Nach der LinuxCNC-Dokumentation wirken Parameterzuweisungen innerhalb eines Blocks erst nach dem Auslesen der dort verwendeten Parameterwerte. Eine neue Zuweisung und deren vermeintlich sofortige Nutzung in derselben Zeile können deshalb anders wirken als erwartet. Getrennte, klar geordnete Rechenschritte erleichtern die Prüfung.
LinuxCNC unterscheidet außerdem lokale und globale benannte Parameter. Die O-Code-Dokumentation beschreibt eigene Regeln für Unterprogrammaufrufe; die dort ebenfalls behandelte Fanuc-Kompatibilitätsvariante besitzt nicht in jeder Hinsicht denselben Gültigkeitsbereich. Eine Aussage wie „Variablen werden beim Aufruf immer zurückgesetzt“ wäre daher zu pauschal.
Für ein eigenes Programm würde ich festhalten, welche Werte Eingaben sind, welche im Ablauf berechnet werden und welche nach einem Aufruf noch verfügbar sein sollen. Alle benötigten Eingaben müssen vor ihrer Nutzung einen definierten Wert besitzen. Eine zufällig verbliebene Belegung aus einem früheren Lauf darf nicht unbemerkt zur Voraussetzung werden.
Eingaben prüfen, bevor daraus Positionen entstehen
Für unsere gerade Reihe ist N als positive ganze Zahl definiert. Ein Wert von 3,5 passt nicht zu dieser Aufgabe. Auch die Bedeutung von p muss eindeutig bleiben: In diesem Beispiel ist es ein positiver Abstand in Richtung +X. Eine Funktion für rückwärts laufende Reihen könnte anders definiert werden, müsste das aber ausdrücklich vorsehen.
| Prüffall | Erwartung im eigenen Reihenmodell |
|---|---|
| N = 1 | Nur x₀; Abstand zwischen erster und letzter Position ist null |
| N = 4 | Genau vier Positionen mit Indizes 0 bis 3 |
| N = 0 | Für diese Aufgabenbeschreibung ungültige Eingabe |
| N nicht ganzzahlig | Eingabe zurückweisen, nicht stillschweigend runden |
Anschließend müssen die berechneten Positionen zur tatsächlichen Zeichnung und zum verwendeten Bezug passen. Eine formal korrekte Zahl beweist weder eine freie Anfahrt noch eine zulässige Werkzeugposition. Die Geometrieprüfung und die Prüfung des vollständigen Maschinenablaufs sind getrennte Aufgaben.
Parameter nicht mit Koordinatenmodi verwechseln
Ein Parameterwert ist zunächst eine Zahl im jeweiligen Programmzusammenhang. Ob ein später verwendeter Koordinatenwert eine absolute Position oder eine inkrementelle Änderung bezeichnet, ergibt sich daraus noch nicht. Der Beitrag zu Absolutmaß und Kettenmaß erklärt diesen Unterschied. Auch der Werkstücknullpunkt und seine Abgrenzung zum Maschinenbezug muss zur Rechnung passen.
Zur Prüfung würde ich zunächst die erwarteten Ergebnisse tabellarisch berechnen, dann die Auswertung im vorgesehenen Steuerungsumfeld kontrollieren und erst anschließend den vollständigen Ablauf beurteilen. Die Grundlagen der CNC-Programmerstellung sowie der G-Codes und Vorschubmodi bleiben dabei relevant. Eine kürzere parametrische Schreibweise reduziert Wiederholungen; sie ersetzt keine fehlenden Festlegungen.
Quellen und fachliche Einordnung
Primärquellen, geprüft am 25.10.2026. Eigene Lehrbeispiele und schematische Grafiken. Produkt- und Verfahrensangaben gelten im jeweils beschriebenen Zusammenhang.