Implizite Unterprogrammaufrufe (G80-G89/G800-G819)

G80 - G89  [ [<Val1>,<Val2>, - ,<Val10>] ] Unterprogrammaufruf (nicht modal) 

oder zusätzlich

G800 - G819  [ [<Val1>,<Val2>, - ,<Val10>]] Unterprogrammaufruf (nicht modal) 

G8x / G8xx Bei der Programmierung von G80-G89 bzw. G800-G819 wird implizit ein zugeordnetes globales Unterprogramm aufgerufen bzw. ausgeführt. Die Defaultnamen dieser Unterprogramme können entweder in den Kanalparametern [1]-45/ [1]-46 konfiguriert oder zur Programmlaufzeit über den Befehl #FILENAME definiert werden.

Ist bei Programmierung von G80-G89 bzw. G800-G819 kein Programmname hinterlegt, so wird die Fehlermeldung P-ERR-20131 "Unbekannte G-Funktion" erzeugt.

Das globale Unterprogramm wird nur einmal aufgerufen, d.h. ein G80-G89 bzw. G800-G819 hat keine modale Wirkung.

<Val1> , - , <Val10> Optional können in einer nachfolgenden Klammerung maximal 10 Übergabeparameter (mathematische Ausdrücke im REAL-Format) in einer festen Reihenfolge zur Versorgung eines Unterprogrammes (Zyklus) aufgeführt werden. Die Parameter sind durch Kommas getrennt. Lücken in der Reihenfolge müssen durch aufeinanderfolgende Kommas ", ," markiert sein.

Im Unterprogramm können die Parameter analog zur Zyklenprogrammierung über @Px-Zugriffe ausgelesen werden. Hierbei besteht eine feste Zuordnung zwischen dem Parameter und dem @Px-Lesezugriff (z.B. @P1 liest Parameterwert 1, @P2 liest Parameterwert 2 usw.). Auch die zusätzliche erweiterte Zyklensyntax mit dem @-Zeichen kann in den auf diese Art aufgerufenen Unterprogrammen genutzt werden. Ob ein Parameter programmiert (gültig) ist, kann im Unterprogramm (Zyklus) über die Variable V.G.@P[i].VALID ermittelt werden.

Ein G80-G89 bzw. G800-G819 wird immer als letzte Aktion am Satzende ausgeführt, d.h. sind im gleichen NC-Satz noch Achsbewegungen programmiert, so werden diese immer vor dem Aufruf des globalen Unterprogramms ausgefahren.

Programmierbeispiel

Für G80 soll das globale UP - g80_up_test.nc - aufgerufen werden:..

N10 #FILENAME[ G80="g80_up_test.nc" ] 
Nx ..
N30 G80 Aufruf g80_up_test.nc als globales UP
:
Für G815 soll das globale UP - g815_up_test.nc - aufgerufen werden:
..
N10 #FILENAME[ G815="g815_up_test.nc" ]
Nx ..
N30 G815 Aufruf g815_up_test.nc als globales UP
:
G85 ruft das globale UP - cycle_test.nc - mit Parametern auf:
N10 #FILENAME[ G85="cycle_test.nc" ]
Nx ..
N30 G85 [10,2, ,15,-3, ,5] Aufruf cycle_test.nc als globales UP
: