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*i
zu setzen. Der Wert derY
-Achse wird durch einenST
-Ausdruck definiert, der in geschweifte Klammern eingeschlossen ist. Dieser Ausdruck wird zu0
ausgewertet, 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.]