Sprung

G-Code: G20

Funktion: Der Befehl führt einen bedingten Sprung aus.

Syntax

G20 L K

G-Code Wort

Beschreibung

L

Sprungziel:

  • definierte Zeilennummer, beispielsweise L20

  • Sprungmarke

    Der Sprung wird durch ein Fragezeichen und einen Index definiert, beispielsweise L?4. Der Befehl für das Sprungziel selbst wird durch ein Ausrufezeichen und den zugehörigen Index gekennzeichnet, beispielsweise L!4. Das Sprungziel kann an jeden G-Code-Befehl angehängt werden.

    Dieser Sprung wird bei automatisch generierten CNC-Programmen eingesetzt, wenn die Zielzeile zunächst nicht bekannt ist.

    Voraussetzung: Die Zeile mit der Sprungmarke muss nach der Zeile mit dem Sprungbefehl stehen. Ein "Rückspringen" ist nicht möglich. Wenn die "Zielzeile" nicht definiert ist, werden alle nach dem Sprungbefehl folgenden Befehle nicht ausgeführt.

K

Bedingung

Wenn K <> 0, wird der Sprung ausgeführt. Wenn K nicht definiert ist, wird eine interne Decoder-Variable verwendet.

Beispiel: Sprung ausführen bis interner Zähler = 0

10 Geraden werden durch den Relativmodus aneinander gehängt. Daraus resultiert eine Geradenbewegung auf 100/100.

N00 G36 D10          (Setzen des Zählers auf 10)
N10 G91              (Relativer Modus)
N20 G01 X10 Y10 F100 (Bewegung um Distanz 10/10)
N30 G37 D-1          (Zähler dekrementieren)
N40 G20 L20          (Sprung, wenn Zähler != 0)

Beispiel: Sprungbedingung zum Zeitpunkt des Dekodierens auswerten

Voraussetzung: Das Verhalten der Variable bvar ist in der Applikation programmiert. Wenn die X-Achse die Position 15 überschreitet, wird bvar FALSE (bVar ist initial auf TRUE gesetzt.)

Beim ersten Programmzyklus ist die X-Position 10 und das Programm springt in die Zeile 20. Da die Auswertung der Bedingung zum Zeitpunkt des Decodierens stattfindet und der Interpolator noch nicht gestartet wurde oder mit der Abarbeitung von Objekten vom Anfang des Puffers beschäftigt ist, wird die Schleife fortwährend durchlaufen. Erst wenn so viele Objekte erzeugt wurden, dass der Puffer voll ist und der Interpolator mit der Abarbeitung beginnt, wird diese Bedingung erfüllt und der Decoder springt aus dieser Schleife.

Beim zweiten Durchlauf ist die X-Achse noch nicht auf Position 20. Die Bedingung ist nicht erfüllt und bVar wurde im IEC-Code nicht auf FALSE gesetzt.

N0 G92 X0 Y0
N10 G91              (Relativer Modus)
N20 G01 X10 Y10 F100 (Bewegung um Distanz 10/10)
N30 G20 L20 K$bvar$  (Sprung, wenn Zähler != 0)

Beispiel: Zeitsynchronisation einfügen

G75 führt eine Zeitsynchronisation des Interpolators aus. G75 bewirkt, dass der Decoder so lange mit der Verarbeitung pausiert, bis der Interpolator und mit ihm die Mechanik die entsprechende Position erreichen.

N0 G92 X0 Y0
N10 G91              (Relativer Modus)
N20 G01 X10 Y10 F100 (Bewegung um Distanz 10/10)
N25 G75
N30 G20 L20 K$x$     (Sprung, wenn Zähler != 0)

Beispiel: Sprung auf Sprungmarke

Hinweis: Sprünge auf Sprungmarken funktionieren nur im Online-Decoder (nicht im CNC-Editor).

N0 G16 F100 E100 E-100
N10 G20 L?4      //unconditional jump to the unknown target with index 4
N15 G20 L60
N20 G1 X1
N30 G1 X1 L!5    //resolution unknown jump target with index 5
N40 G1 Z1 L!4    //resolution unknown jump target with index 4
N50 G20 L15
N55 G1 Y1
N60 G0 X0 Y0 Z0

Siehe auch