Implizite Unterprogrammaufrufe (G80–G89/G800..)

Syntax:

G80 G89 [ [<Val1>,<Val2>, - ,<Val50>] ]

Unterprogrammaufruf

nicht modal

oder zusätzlich

G800 -G8xx [ [<Val1>,<Val2>, - ,<Val50>] ]

Unterprogrammaufruf

nicht modal

G80-G8x / G800–G8xx

Bei der Programmierung von G80–G89, G800 – G819 bzw. G800-G839** 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, G800 – G819 bzw. G800-G839** kein Programmname hinterlegt, so wird die Fehlermeldung ID 20131 "Unbekannte G-Funktion" erzeugt. Das globale Unterprogramm wird nur einmal aufgerufen, d.h. ein G80–G89, G800 – G819 bzw. G800-G839** 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.

**Erweitert auf 40 Aufrufe (G800 – G839) ab V3.1.3079.23

Ein G80–G89 bzw. G800... 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/G8xx)

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

Beispiel 2:

G803[5, @P1, @P2, @P3]

Die Bedeutung der obigen Zeile:

G803[@P1=5, @P2=@P1, @P3=@P2, @P4=@P3]

Das Ergebnis: alle übergebenen Parameter sind vom gleichen Wert: 5