Die $GOTO-Anweisung

Diese Funktionalität bietet neben der Unterprogrammtechnik oder der Verwendung von Steuersatzanweisungen ($IF, $FOR...) eine weitere Möglichkeit der Verzweigung in andere Programmteile. Durch das Setzen von Sprungmarken (s.g. Labeln) im NC-Programm kann durch Aufruf des GOTO-Befehls an jede Stelle des NC-Programmes gesprungen werden.

Syntax:

Es gibt zwei Möglichkeiten der Programmierung von Sprunganweisungen:

Expression Label:

N<satz_nr> :

Definition Sprungziel, Satznummer mit Doppelpunkt

$GOTO N<satz_nr>

Sprungaufruf

String Label:

[<name>]

Definition Sprungziel, Name in eckigen Klammern

$GOTO [<name>]

Sprungaufruf

Eigenschaften:

Programmierbeispiel

prg_example

Die $GOTO-Anweisung

%goto

N05  P1=1

N06  P2=1

N10  G74 X1 Y2 Z3

N11      X0 Y0 Z0

N15  $IF P1==1 $GOTO N40: ;   Sprung von außen nach N40 in einen

                          ;   Steuerblock

N20  X10

N25  Y10

N30  $IF P1==2

N35    X20

N40:   $IF P2==1

N45    X30

N50:     Y30 $GOTO N65: ;   Sprung nach N65 zwischen Steuersatzebenen

                        ;   IF-ELSE

N51    $ENDIF

N55  $ELSE

N60    Y40

N65:   X40

N70  $ENDIF

N80   Z99

N999  M30

Zulässige und nicht zulässige Sprünge beim $GOTO-Befehl
Abb.: Zulässige und nicht zulässige Sprünge beim $GOTO-Befehl

Programmierbeispiel

prg_example

N10 G1 XY

N20: X100                              ;Label Definition N20:

$IF V.L.dummy_1 <100 $GOTO N20         ;Sprung zu Label N20

$IF V.L.dummy_1 >200

$GOTO [LABEL_1]                        ;Sprung zu Label [LABEL_1]

Y20

$ENDIF

[LABEL_1] X0                           ;Label Definition [LABEL_1]

N30 A0

$FOR V.P.my_var = 0, 4, 1

$IF V.L.dummy_2 <200 $GOTO [CONTINUE]  ;Sprung zu Label [CONTINUE]

$SWITCH V.P.my_var

$CASE 0

V.P.AXE_X=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 1

V.P.AXE_Y=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 2

V.P.AXE_Z=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 3

V.P.AXE_A=V.P.GROUP[1].position[V.P.my_var]

$DEFAULT

$ENDSWITCH

$ENDFOR

[CONTINUE]                       ;Label Definition [CONTINUE]

N1000 ...

...