Unterprogrammtechnik

Auch in der NC-Programmierung ist es sinnvoll, häufig benutzte Befehlsfolgen als Unterprogramm zu gestalten. Auf diese Weise ist es möglich, aus verschiedenen Werkstückprogrammen auf eine vorgefertigte und ausgetestete Funktion zurückzugreifen.

Innerhalb eines Programms werden Unterprogramme über eine Nummer identifiziert. Diese muss eindeutig sein: Es kann nur ein Unterprogramm mit einer bestimmten Nummer (1..>2.000.000.000) geben.

Bei der Interpretation wird das aufrufende Programm unterbrochen. Der Text des Unterprogramms wird (bei Bedarf mehrmals) abgearbeitet. Anschließend wird die Abarbeitung im aufrufenden Programm hinter der Aufrufstelle fortgesetzt.

Selbstverständlich kann auch aus einem Unterprogramm ein anderes Unterprogramm aufgerufen werden. In diesem Fall wird sinngemäß verfahren. Dabei bildet sich ein Stapel von Rücksprunginformationen. Zurzeit ist diese Unterprogramm-Schachtelung aus technischen Gründen auf 20 Ebenen begrenzt.

Definition eines Unterprogramms

Der Code eines Unterprogramms kann in derselben Datei geschrieben werden, in der sich auch das aufrufende Programm befindet. In diesem Fall wird das Unterprogramm direkt gebunden: Es wird beim Laden der Datei automatisch mitgeladen. Soll es allgemein verfügbar sein, muss es in eine eigene Datei geschrieben werden, die sich im CNC-Verzeichnis befinden muss.

Der Name der Datei beginnt mit dem Buchstaben 'L' und es folgt eine Ziffernkette. Diese Ziffernkette muss die Unterprogramm-Nummer ohne führende '0' wiedergeben.

Der Startpunkt des Unterprogramms ist im Code mit einem Unterprogramm-Label zu markieren. Dieses besteht wie der Dateiname aus dem Buchstaben 'L' und der beschriebenen Ziffernfolge.

Unmittelbar hinter diesem Label setzt der Interpreter auf.

Syntax Unterprogramm:

(Datei L2000.NC)
L2000
N100...
N110...
...
N5000 M17 (return command)

Aufruf eines Unterprogramms

Um in einem beliebigen Satz des NC-Programms ein Unterprogramm aufzurufen, ist folgende Syntax zu benutzen. Wichtig ist, dass der Ausdruck "L2000" nicht am Zeilenanfang steht, um eine Verwechslung mit einem Unterprogramm-Label zu vermeiden.

(syntax of the subroutine call)
N100 L2000

Im folgenden Beispiel wird mit dem Ausdruck "P5" eine 5-fache Wiederholung des Unterprogramms veranlasst.

(n-fold subroutine call (here: 5- fold))
N100 L2000 P5

Dynamischer Unterprogrammaufruf

Manchmal steht erst zur Laufzeit fest, welches Unterprogramm aufgerufen werden soll. Um sich für diesen Fall die CASE-Anweisung zu sparen, ist es auch möglich, das Unterprogramm mit einem R-Parameter aufzurufen. Dabei muss der Wert für R aber in einer eigenen Zeile zugewiesen bzw. berechnet werden.

(Dynamic call of a subroutine)
N099 R47=R45+1
N100 L=R47

Parameterübergabe

Die Übergabe von Parametern an Unterprogramme ist mit Hilfe der R-Parameter zu verwirklichen. Dabei ist zu beachten, dass R-Parameter nicht automatisch gesichert werden (vergl. Retten von R-Parametern) .

Parameterverwendung

In einem NC-Unterprogramm können R-Parameter im Prinzip frei verwendet werden. Das hat eine Reihe von Konsequenzen, die zu Fehlern führen können, wenn sie nicht beachtet werden. Auf der anderen Seite ist ein gezielter Einsatz möglich, der dem NC-Programmierer eine Reihe von Arbeitstechniken zur Verfügung stellt.

Ergebnisse von Unterprogrammen

Wird ein R-Parameter verändert, ohne dass sein Inhalt gerettet und restauriert wurde, ist die Veränderung nach einem Unterprogrammrücksprung wirksam. Wenn dies unbeabsichtigt war, kann es in der Folge zu einem nicht geplanten Verhalten der Maschine kommen.

Dies kann jedoch auch bewusst dazu ausgenutzt werden, den weiteren Verlauf der Bearbeitung von den Ergebnissen eines Unterprogramms abhängig zu machen. Dabei ist keinerlei Einschränkung außer denen der R-Parameter zu beachten.

Beispiel:

N100 L2000
N110 R2=R3+R4
...
N999 M30
L2000
N10 R3=17.5
N20 R4=1
N99 M17

Hier werden in einem Unterprogramm Werte festgelegt. Die Werte werden im aufrufenden Programm weiter verwendet.

Beenden eines Unterprogramms

Ein Unterprogramm wird mit M17 beendet.