Implizite Unterprogrammaufrufe (G80–G89/G800-G819)

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

oder zusätzlich

G800 G819 [ [<Val1>,<Val2>, - ,<Val50>] ]        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 P-CHAN-00160 - P-CHAN-00169 und P-CHAN-00187 konfiguriert oder zur Programmlaufzeit über den Befehl #FILE NAME 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>, - ,<Val50>

Optional können in einer nachfolgenden Klammerung maximal 50 Ü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.

Durch die Angabe von Übergabeparametern wird der Unterprogrammaufruf zu einem Zyklusaufruf und gemäß den Regeln für Zyklen behandelt.

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

prg_example

Implizite Unterprogrammaufrufe (G80–G89/G800-G819)

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

N10 #FILE NAME[ 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 #FILE NAME[ 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 #FILE NAME[ G85="cycle_test.nc" ]

Nx ..    

N30 G85 [10,2, ,15,-3, ,5]     Aufruf cycle_test.nc als globales UP