Kombination von G-Code und ST
Ein GST-Programm
<g-code>
<g-code>
! <st-code>
<g-code>
<g-code>
{
<st-code>
<st-code>
! <g-code>
<st-code>
<st-code>
}
<g-code>
<g-code>
Eine GST-Datei besteht aus Sequenzen von G-Code und Sequenzen von ST-Code, die wie oben gezeigt verschachtelt werden können. Jedes Programm startet im Modus G-code. Der Modus kann mit einem Ausrufezeichen ('!') für eine Zeile auf ST umgeschaltet werden. Der ST-Modus endet automatisch am Ende der Zeile.
Alternativ kann ein Satz von ST-Code mit geschweiften Klammern ('{'...'}') definiert werden. Diese Notation ist praktischer, um eine lange Sequenz von ST-Code in einem GST-Programm zu definieren. Innerhalb des ST-Satzes kann der G-Codemodus für eine Zeile mit dem Ausrufezeichen aktiviert werden. Dabei endet der G-Codemodus automatisch am Ende der Zeile.
G-Code Satz
<address><value> <address>=<G-Expression> <address>{<ST-Expression>}
Eine Zeile von G-Code wird als Satz bezeichnet. Sie besteht aus einer Folge von Wörtern. Ein Wort ist eine Kombination aus einer Adresse (z.B. G oder X) und einem Wert. Ein Wert kann durch ein Literal (z. B. 2.54), durch einen G-Ausdruck (z. B. 2*foo+1) oder durch einen ST-Ausdruck (z. B. sin(foo**2)-1) definiert werden.
G-Code Ausdruck
<address>=a+b-c*d/e
Das Ergebnis des Ausdrucks wird als Wert des Wortes verwendet. Die vier Grundrechenarten ('+', '-', '*', '/') können in einem G-Ausdruck verwendet werden. Sie werden wie erwartet ausgewertet, d.h. alle Operationen sind links-assoziativ und '*', '/' haben einen höheren Vorrang als '+', '-'. Variablen, die in ST deklariert wurden, können auch in einem G-Ausdruck (in Bezug auf ihren Geltungsbereich) verwendet werden.
Alle Berechnungen werden mit dem Typ LReal (64-Bit-Fließkomma gemäß IEEE 754) durchgeführt. Der Wert einer ST-Variablen wird gemäß den Konvertierungsregeln von ST implizit in den Typ LReal konvertiert. Wenn ein Typ (z.B. STRING) nicht konvertiert werden kann, wird ein Fehler ausgegeben.
![]() | EINSCHRÄNKUNG:
|
![]() | EINSCHRÄNKUNG: Array-Variablen, Struktur-Variablen und Objekte können nicht in einem |
![]() | EINSCHRÄNKUNG: Klammern sind in einem |
Eingebetteter ST-Ausdruck
<address>{<ST-Expression>}
Das Ergebnis des ST-Ausdrucks wird als Wert des Wortes verwendet. Es muss in LReal umgewandelt werden können. Im Grunde ist ein ST-Ausdruck ST-Code, der auf der rechten Seite einer Zuweisung platziert werden kann. Ein anderer ST-Code (z.B. eine ST-Anweisung) ist nicht zulässig. Umfangreiche Berechnungen können jedoch in einer ST-Funktion gekapselt werden, die dann in dem ST-Ausdruck aufgerufen wird.
![]() | Ein |
Beispiel:
- Das folgende GST-Programm beginnt mit einer Zeile des
G-Codes, der das Werkzeug im Eilgang zum Ursprung bewegt. - Auf diese Zeile folgt eine Zeile mit
ST-Code, in der die Variable 'i' deklariert wird. DerST-Modus wird durch das vorangestellte Ausrufezeichen ('!') aktiviert. Nach dieser Zeile wird derG-Code-Modus wieder aufgenommen. - Der
G-Code in Zeile 3 bewegt das Werkzeug nach unten. - Die Zeilen 4 bis 8 definieren einen Satz von
ST-Code, der eineFOR-Schleife enthält. Der Code in diesem Satz wird alsST-Code interpretiert, mit Ausnahme derG-Codezeile in Zeile 6. Diese Zeile desG-Codes verwendet einenG-Ausdruck, um dieX-Achse auf10*izu setzen. Der Wert derY-Achse wird durch einenST-Ausdruck definiert, der in geschweifte Klammern eingeschlossen ist. Dieser Ausdruck wird zu0ausgewertet, wenn 'i' gerade ist, und ansonsten zu10. - Die programmierte Bahn des Programms ist in Abbildung "Beispiel Ausdrücke" dargestellt.
G00 X0 Y0 Z0
! VAR i : INT; END_VAR
G01 Z-1 F6000
{
FOR i := 1 TO 5 DO
!G01 X=i*10 Y{ (i MOD 2) *10 }
END_FOR;
}
Abbildung "Beispiel Ausdrücke".
Unterdrückung von G-Code-Sätzen
/<n> <G-Code block>
Die Ausführung eines G-Code Satzes kann bedingt unterdrückt werden. Wenn '/<n>' vorangestellt ist und das n-te Bit in einer internen Disable-Maske gesetzt ist, wird der Satz unterdrückt (nicht ausgeführt). Die Disable-Maske kann von der SPS und über die ST-Funktion disableMaskSet eingestellt werden. Wenn n nicht angegeben wird, hat es standardmäßig den Wert 0. [Siehe Abschnitt Unterdrückung von G-Code-Sätzen.]
