Skip to main content

Ändern von Variablenwerten

G-Code: G36, G37

Funktion: Die Befehle ändern den Wert einer Variablen. G36 schreibt den angegebenen Wert in eine Variable. G37 inkrementiert die Variable um den angegebenen Wert. O$var$ definiert die Variable, die bearbeitet wird. D definiert den Wert, der bei G36 geschrieben wird oder bei G37 addiert wird. Der Befehl wird zum Beispiel bei einem Schleifenzähler, der für bedingte Sprünge benötigt wird, angewendet.

Syntax

G36 O D
G37 O D

G-Code Wort bei G36

Beschreibung

O

Variable, auf die geschrieben wird. Wenn O nicht angegeben ist, wird eine interne Decodervariable verwendet. Der Standardwert dieser internen Variable ist -1.

Die interne Variable kann in dem Befehl Sprung verwendet werden.

D

Neuer Variablenwert

G-Code Wort bei G37

O

Variable, die inkrementiert wird. Wenn O nicht angegeben ist, wird eine interne Decodervariable verwendet.

D

Inkrement

Beispiel 45. Beispiel

Zähler programmieren (wenn die Bahn online verarbeitet wird)

  1. Die globale Variable g_i wird auf 5 gesetzt.

N1000 G36 O$g_i$ D5

Die Zeilen 1010 und 1020 werden fünf Mal verfahren.

N1000 G36 O$g_i$ D5
N1010 G1 X100 F100 E100 E-100
N1020 G1 X0
N1030 G37 O$g_i$ D-1
N1040 G20 L1010 K$g_i$


Tipp

Der Mechanismus funktioniert nur, wenn die Bahn online verarbeitet wird, da nur dann Variablen verwendet werden können! Im CNC-Editor funktioniert dieser Mechanismus nicht.

Zähler für Offlinebetrieb programmieren

Wenn Sie offline im Editor arbeiten wollen, spezifizieren Sie mit O keine Variable. Dann wird eine implizite Decodervariable Typ INT verwendet. Aber es steht nur eine Variable zur Verfügung. Sie können keine verschachtelten Sprünge und Schleifen programmieren.

Stringvariablen verwenden

Sie können im G-Code eine Stringvariable im O-Wort verwenden. Außerdem darf dieser Variablen über den Befehl G36 und G37 ein Stringwert zugewiesen oder angehängt werden.

Beispiel 46. Beispiel
N10 G36 O$strTest$ D'Name'

Die Variable strTest erhält den Wert Name.

N20 G37 O$strTest$ D'=Test'

Der Variablen strTest wird =Test angehängt.



Tipp

Wenn im CNC-Programm Stringvariablen verwendet werden und das CNC-Programm (im IEC- Programm) mit Hilfe des Funktionsbausteins SMC_ReadNCFile eingelesen wird, dann müssen für die Strings Puffer im IEC-Programm reserviert sein. Andernfalls tritt der Fehler SMV_RNCF_NO_STRINGBUFFER auf. Dafür steht der Funktionsbaustein SMC_StringBuffer zur Verfügung.

Jeder String des CNC-Programms benötigt einen eigenen Platz in der Funktionsbaustein-Instanz von SMC_StringBuffer, auch wenn der gleiche String mehrfach vorkommt.

Folgende Deklaration kann beispielsweise 32 Strings puffern:

sb: SMC_StringBuffer(uiBufferSize := 32);

Dann wird die Funktionsbaustein-Instanz sb als Pointer an den Eingang pStringBuffer der Instanz von SMC_ReadNCFile übergeben.