Arithmetische Ausdrücke <expr>

Bei der Behandlung von arithmetischen Ausdrücken gelten die üblichen Rechenregeln:

In arithmetischen Ausdrücken werden oft Parameter verwendet; die Schreibweise von Parametern ist :

Beispiel für einen arithmetischen Ausdruck:

P5 = [[sin[R1*30.00] + P2] / P5]

Symbolische Zeichenketten (Strings) können arithmetischen Ausdrücken und Teilen davon zugewiesen werden.

Eine solche Zeichenkette führt zu dem ersetzenden String, der anstelle der Zeichenkette analysiert wird. Dabei ist auch eine rekursive Behandlung möglich.

Zu ersetzende Zeichenketten müssen in Anführungszeichen eingeschlossen sein. Bei deren Decodierung wird zwischen Groß- und Kleinschreibung unterschieden.

Die Schachtelung von Strings wird durch ein vorangestelltes ´\´-Zeichen vor den begrenzenden Anführungszeichen angezeigt. Es ist darauf zu achten, daß immer komplette Schachtelungsebenen in einem String zusammengefaßt sind, d.h. das Einfügen von ´[´ am Anfang und ´]´ am Ende des Ersatztextes darf sich nicht auf das Ergebnis des mathematischen Ausdrucks auswirken.

Programmierbeispiel

N10 "STRING1" = "COS[\"STRING2\"]"
N20 "STRING2" = "5 * 12"
N30 "STRING3" = "SIN[89.5 + \"STRING1\"]"
N40 X[-2 * "STRING1" + "STRING2" + "STRING3"] (Fahren nach X60)
M30

Die im NC-Programm definierten Zeichenketten sind programmübergreifend gültig.

Die Programmierung symbolischer Zeichenketten außerhalb mathematischer Ausdrücke wird im Kapitel "Symbolische Zeichenketten" beschrieben.

Falsch: Nur komplette Schachtelungsebenen dürfen im String zusammengefaßt werden

N10 "STRING1" = "COS[" 
N20 "STRING2" = "90]"
N30 "STRING3" = "\"STRING1\" \"STRING2\" "

Die im NC-Programm definierten Zeichenketten sind programmübergreifend gültig.

Die Programmierung symbolischer Zeichenketten außerhalb mathematischer Ausdrücke wird im Kapitel "Symbolische Zeichenketten" beschrieben.

Übersicht über alle verfügbaren Rechenoperationen:

Grundrechenarten:

Addition

+

P1 = P2 + P3 + 0.357

Subtraktion

-

P1 = P2 - 0.031

Multiplikation

*

P1 = P2 * [P3 + 0.5]

Division

/

P1 = P2 * P3 / [P5 + P6]

Exponentenrechnung

**

P1 = 2**P3 (zwei hoch P3)

Modulorechnung

MOD

P1 = 11 MOD 3 (-> 2)

Zahlenfunktionen:

Absolutwertbildung

ABS [..]

P1 = ABS [P2 - P4]

Quadrieren

SQR [..]

P1 = SQR [P2] + SQR [P3]

Quadratwurzel

SQRT [..]

P1 = SQRT [SQR[P2]+SQR[P3]]

e - Funktion

EXP [..]

P1 = EXP [P2 * P4]

Natürlicher Logarithmus

LN [..]

P1 = LN [P2] + LN [P3]

Zehner - Exponent

DEXP [..]

P1 = DEXP [P2]

Zehner - Logarithmus

LOG [..]

P1 = LOG [P2]

Hinweis

Bei LN, LOG und SQRT muß das Argument immer grösser 0 sein !

Bitoperanden:

UND-Verknüpfung

&

P1 = P2 & P3

ODER-Verknüpfung

|

P1 = P2 | P3

exlusives ODER

^

P1 = P2 ^ P3

Komplement

INV[..]

P1 = INV[P2]

Hinweis

Die Operanden können beliebige positive mathematische Ausdrücke oder Zahlen sein. Negative Ausdrücke oder Zahlen sind nicht erlaubt. Gleitkommazahlen werden in ganze Zahlen konvertiert.

Logische Operanden:

UND-Verknüpfung

&& / AND

$IF P1 >= P2 && P3 != P4
bzw.
$IF P1 >= P2 AND P3 !=P4

ODER-Verknüpfung

|| / OR

$IF P1 >= P2 || P3 != P4
bzw.
$IF P1 >= P2 OR P3 !=P4

Vergleichsoperanden:

Bei Schleifenkonstruktionen (Kapitel 10) sind Vergleichsoperationen erforderlich. Es kann wie folgt geprüft werden auf:

Gleichheit

==

$IF P1 == 10

Ungleichheit

!=

$IF P1 != 10

größer gleich

>=

$IF P1 >= 10

kleiner gleich

<=

$IF P1 <= 10

kleiner

<

$IF P1 <  10

größer

>

$IF P1 >  10

Mögliche Wahrheitswerte sind:

TRUE

wahr

$IF V.A.MERF.X == TRUE

FALSE

nicht wahr

$WHILE V.G.WZ[2].OK == FALSE

Hinweis

Behandlung der Wahrheitswerte

Für TRUE wird steuerungsintern der Wert 1 verwendet.
Für FALSE wird steuerungsintern der Wert 0 verwendet.

Winkelfunktionen (Angabe von Winkeln in Grad):

Sinus

SIN [..]

P1 = SIN [P2 * 30 +10]

Kosinus

COS [..]

P1 = COS [P2 * 30 +10]

Tangens

TAN [..]

P1 = TAN [P2 * 30 +10]

Arcus Sinus

ASIN [..]

P1 = ASIN [P2 * 10]

Arcus Kosinus

ACOS [..]

P1 = ACOS [P2 * 10]

Arcus Tangens

ATAN [..]

P1 = ATAN [P2 * 10]

Arcus Tangens mit 2 Argumenten

ATAN2 [y,x]

P1 = ATAN2[100,100]
(-> Ergebnis ist 45°)

Hinweis

Bei den Zahlenfunktionen ASIN und ACOS muß das Argument immer zwischen -1 und +1 sein.
Bei der Zahlenfunktion TAN darf das Argument nicht die Werte ... -90, 90, 270 ... Grad annehmen.
Die Zahlenfunktion ATAN2 liefert für x != 0 den Winkel einer Position zur X-Achse im korrekten Quadranten.
Sonderfall: Für ATAN2[0,0] (x = y = 0) ist das Ergebnis immer 0.

Umwandlungsfunktionen:

Integer

INT [..]

schneidet Nachkommastellen ab

Float

FRACT [..]

entfernt ganzzahligen Anteil

Runden

ROUND [..]

rundet auf ganze Zahl

Spezielle Funktionen:

Test der Existenz von Variablen/ Parametern/ M/H-Funktionen

EXIST [ <variable/parameter/

M function/ H function>]

$IF EXIST[V.P.MY_VAR] == TRUE
$IF EXIST[P1] != TRUE
$IF EXIST[M55] == TRUE
$IF EXIST[H20] == TRUE

Bestimmung der Größe einer Array-Dimension

SIZEOF [<array_name>, <dimension>]

oder

SIZEOF [<array_name>] (für 1. Dim.)

$IF SIZEOF
 [V.P.MY_ARRAY,2] == 3
P1 = SIZEOF[P10,2]