Ausdrücke
Funktion:
Ab der Version 4.4.0.0 ist es möglich, mathematische, boolesche und Zeichenketten-Ausdrücke zu verwenden. Dazu müssen die Funktionsbausteine SMC_ReadNCFile2
und SMC_NCInterpreter
verwendet werden (anstelle von SMC_ReadNCFile
und SMC_NCDecoder
).
Tipp
Ausdrücke funktionieren nur im Online-Decoder (nicht im CNC-Editor).
Ausdrücke können im G-Code prinzipiell an zwei Stellen verwendet werden:
Als Werte von G-Wörtern (ein G-Wort besteht aus Adresse und Wert, z.B. „G1“)
Als Übergabeparameter bei Unterprogrammaufrufen
Syntax - Allgemeines
Ein Ausdruck kann aus folgenden Elementen bestehen:
Zahl- und Stringliterale
globale und lokale Variablen
Infix-Operatoren und Funktionen
Kommata und Klammern
Zur Strukturierung von Ausdrücken können in gleichberechtigter Weise runde (falls nicht zur Kennzeichnung von Kommentaren verwendet) und geschweifte Klammern verwendet werden. Das heißt, der Ausdruck (1 + 2} * 3
ist zulässig.
Tipp
Der Funktionsbaustein SMC_ReadNCFile2
besitzt einen neuen Modus (Eingang bParenthesesAsComments
), bei dem runde Klammern keine Kommentare sind. Statt dessen werden mehrzeilige Kommentare dann mit (* eingeleitet und mit *) geschlossen. In diesem neuen Modus können sowohl geschweifte als auch runde Klammern für Ausdrücke verwendet werden.
Ein Leerzeichen nach der G-Adresse ist nur dann erforderlich, wenn diese von SMC_ReadNCFile2
nicht als eigenständiges Token erkannt würde, Beispiel: X abs{-2}
statt Xabs{-2}.
Anders als in ST müssen einstellige Funktionen nicht zwingend mit Klammern aufgerufen werden, Beispiel: sin 3
.
Jeder Teilausdruck wird während des Parsens einem der drei Typen BOOL, LREAL oder STRING zugeordnet. Entsprechend erwartet jeder Infix-Operator und jede Funktion eine bestimmte Folge von Argumenttypen, bei deren Nichteinhalten (falscher Typ, zu wenige oder zu viele Argumente) ein Fehler zurückgegeben wird.
Einschränkungen:
Satznummern müssen Zahlliterale sein.
Sprungmarken (
x
inL!x
) dürfen aus rein technischen Gründen keine lokalen Variablen enthalten.
Für weitere Informationen siehe: Sprung, Verwendung von Variablen
Beispiele
N01 G36 O$var$ D concat{'prefix_', concat{$var$, '_suffix'}} N02 G1 X$var$ + sin{pi + 3 * #locvar} N03 G20 L0 K NOT {myfun{$var$, expt{2, #locvar}} XOR myfun{0, 0}}
Unterstützte Operatoren und Funktionen
Zeichen | Typ | Argumente | Präzedenz |
---|---|---|---|
|
|
| 14 |
|
|
| 13 |
|
|
| 13 |
|
|
| 12 |
|
|
| 12 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 10 |
|
|
| 6 |
|
|
| 5 |
|
|
| 4 |
Zeichen | Typ | Argumente |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
Definition eigener Funktionen
Es ist möglich, eigene Funktionen hinzuzufügen oder eine vorhandene Implementierung zu überschreiben (beim Parsen des G-Codes werden Funktionen zuerst in den Anwenderfunktionen gesucht).
Die Schnittstelle SMC_NC_IFunction muss implementiert sein, und eine globale Instanz der entsprechenden POU muss über die Struktur SMC_NC_GFunctionTable
an SMC_ReadNCFile2
oder SMC_ReadNCFromStream
übergeben werden.
Für den Rückgabetyp und die Typen der Argumente wird die Enumeration SMC_GVar_Type
verwendet. Der dort enthaltene Eintrag T_OTHER
kann als Platzhalter für einen Typ verwendet werden: Beim Parsen wird überprüft, dass alle Argumente, die in der Signatur einem T_OTHER
entsprechen, den gleichen Typ haben. Der Typ ist beliebig.
Für weitere Informationen siehe: Anwenderspezifische G-Code-Funktionen
Fehlerbehandlung
Bei Syntaxfehlern werden nach Möglichkeit die genaue Position des fehlerhaften Tokens und seine Länge ausgegeben. Die Fehlerposition steht in SMC_ReadNCFile2.errorPos.