Ein Formelausdruck ist eine Liste von Operanden und Operatoren. Er funktioniert wie eine Formel, ist aber Teil eines anderen Objekts (zum Beispiel eines Triggers oder einer Sequenz-Zeile) und liefert diesem einen Wert. Ob das Ergebnis als Wahrheitswert oder als Zahl gelesen wird, hängt vom Objekt ab.
Aufbau und Auswertung
- Operanden liefern einen Wert. Operatoren wirken auf Werte.
- Operatoren sind einstellig (nur rechter Operand y) oder zweistellig (linker Operand x und rechter Operand y). + und - können beides sein.
- x ist der bisher berechnete Wert, y der Wert, der dem Element folgt. Ein Element mit x kann nicht an erster Stelle stehen, ein Element mit y nicht an letzter.
- Die Auswertung läuft strikt von oben nach unten, ohne Vorrang von Operatoren.
2 + 3 * 4ergibt demnach 20. Mit Klammern oder einem Teilausdruck steuern Sie die Reihenfolge. - Der Ausdruck-Editor hat dieselbe Werkzeugleiste wie die Formel (Channel, Wert, Klammern, Auswahlliste, Mülleimer, Test-Button).
Operanden
| Operand | Ergebnis | Beschreibung |
|---|---|---|
| Channel | variabel | Wert eines Channels. Mit der Option Auslöser für Berechnung bestimmen Sie, ob er die Berechnung auslöst |
| Wert | variabel | Benutzerdefinierte Konstante |
| π | Zahl | 3,141592653589793 |
| ⅇ | Zahl | Eulersche Zahl 2,718281828459045 |
| Random(0...1) | Zahl | Zufallszahl von 0 bis unter 1 |
| Break | Bricht die Berechnung ab. Der Wert wird nicht geschrieben. Nützlich mit dem Auswahloperator | |
| Ausdruck | variabel | Eigenständiger Teilausdruck |
Wert-Alter (ValueAge()) |
Zahl | Alter des Channel-Werts in Sekunden. Löst keine Berechnung aus |
Wert-Zeitstempel (ValueTimestamp()) |
Zahl | Zeitpunkt der Werterzeugung in UTC-Millisekunden |
| System UTC Zeitstempel | Zahl | Aktuelle Systemzeit in UTC-Millisekunden. Genauer als der Systemdatenpunkt, löst aber keine Berechnung aus |
| Eingang | variabel | Nur in einem Formel-Baustein im Flow-Editor: Wert eines Eingangs des Bausteins, nummeriert ab 1 |
Klammern ( und ) ändern die Reihenfolge.
Operatoren
Arithmetik
| Operator | Beschreibung |
|---|---|
+ |
Addition x + y, oder y, wenn x fehlt |
- |
Subtraktion x - y, oder -y, wenn x fehlt |
* |
Multiplikation |
/ |
Division |
x^y |
Potenz |
|y| |
Absolutwert |
% |
Modulo x % y |
Remainder |
Rest der Division x / y mit dem Vorzeichen von x |
√ |
Quadratwurzel von y |
∛ |
Kubikwurzel von y |
int(y) |
Rundet auf die nächste ganze Zahl (1,5 ergibt 2) |
floor(y) |
Rundet ab |
ceil(y) |
Rundet auf |
sgn(y) |
Vorzeichen: -1, 0 oder 1 |
sin(y), cos(y) |
Sinus, Kosinus (y in Radiant) |
logⅇ(y), log10(y) |
Natürlicher Logarithmus, Logarithmus zur Basis 10 |
max, max#, min, min# |
Maximum und Minimum von x und y |
Vergleich
| Operator | Ergebnis |
|---|---|
>, >=, <, <= |
Boolean |
==, != |
Boolean |
Logik und Bits
| Operator | Ergebnis | Beschreibung |
|---|---|---|
&&, || |
Boolean | Logisches Und, Oder |
! |
Boolean | Logisches Nicht |
boolean(y) |
Boolean | Wandelt y in einen Wahrheitswert |
&, |, ^, ~ |
Zahl | Bitweise Operationen (64 Bit): Und, Oder, Xor, Nicht |
&? |
Boolean | (x & y) != 0 (64 Bit) |
Sonstige
| Operator | Beschreibung |
|---|---|
IfInvalid |
x IfInvalid y: ist x ungültig oder leer, gilt y, sonst x |
Trigger |
Macht einen Channel zum Auslöser, ohne seinen Wert zu verwenden. Der Operator gibt x unverändert weiter und steht daher nach einem Wert |
? (a : b) |
Auswahloperator. Ist x wahr, wird Ausdruck A ausgewertet, sonst B. Es wird immer nur einer der beiden ausgewertet |
Spezialwerte invalid und no_value
invalidentsteht, wenn eine Operation undefiniert ist oder ein Interface einen Wert ausdrücklich als ungültig meldet.no_valuebedeutet, dass kein Wert vorhanden ist. Das ist der Standard eines Channels, der noch nie befüllt wurde.- Rechnen mit diesen Werten ergibt
invalidoderno_value, je nach Operator. Beispiele aus der Hilfe:no_value * 5ergibtinvalid, Division durch 0 ergibtno_value. - Eine Operation ohne definierte Bedeutung ergibt
invalid, zum Beispiel"Text" + 1.0.
Unterschied zwischen max/max# und min/min#
Rein als Zahlen ist es gleich, ob bei gleichen Werten x oder y herauskommt. Der Datentyp kann sich aber unterscheiden (Zahl, Boolean). Das ändert die Darstellung, nicht die Logik.
max(1, true)ergibttrue,max(2, true)ergibt 2.max(1, 1.0)ergibt1.0. Mit Auto-Formatierung wird dann eine Kommastelle angezeigt.
Welcher der beiden Operatoren bei Gleichheit x und welcher y liefert, beschreiben Hilfe und Code gegensätzlich.
Hinweise und Grenzen
- Die Hilfe gibt für
<=als Ergebnis eine Zahl an. Im Code liefert der Operator einen Wahrheitswert. In der Tabelle steht der Wert aus dem Code. - Die Hilfe beschreibt
%undRemaindernur knapp. Bei ganzen Zahlen hat%im Code das Vorzeichen des Divisors. - Formeln rechnen mit Rohwerten ohne Einheitenumrechnung.

