Arithmetische Ausdrücke <expr>
Bei der Behandlung von arithmetischen Ausdrücken gelten die üblichen Rechenregeln:
- Punkt-vor-Strich - Rechnung
- die Klammer - Regel, wobei eckige Klammern "[ ]" zu verwenden sind
In arithmetischen Ausdrücken werden oft Parameter verwendet; die Schreibweise von Parametern ist :
- P gefolgt von einer ganzen Zahl, z.B. P12 .
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. |
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. |
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] |