# Logic

Logikfunktionen bieten boolesche Algebra- und konditionale Test-Fähigkeiten für die In-Sight-Tabelle. Alle bitweise Funktionen führen die entsprechende logische Operation an jeder Bitposition der binären Repräsentation des Arguments durch und geben die resultierende binäre Zahl in dezimaler Form zurück. Als Beispiel, Bit 0 von Wert0 wird mit dem Bit 0 von Wert1, Bit 1 von Wert0 mit dem Bit 1 von Wert1 verglichen, usw.

Tipp: Bitweise Funktionen eignet sich besonders bei der MultiStatus-Funktion, wenn die Ergebnisse mehrerer True/False-Bedingungen in einer GUI-Anzeige oder einem diskreten Ausgang kombiniert werden sollen.

Operator | Symbol
--- | ---
NOT | !
AND | &&
OR | ||
Gleichwertig mit | ==
Ungleich | <> (oder !=)

Für alle Logikfunktionen:

- FALSE = 0
- TRUE = alle Ergebnisse ungleich 0

Hinweis: Boolesche Funktionen behandeln alle Argument, die sich auf leere Zelle oder eine Zelle mit einer leeren Zeichenfolge beziehen, als FALSE. Argumente, die sich auf eine nicht leere Zeichenfolge beziehen (auch Zeichenfolge „0“), werden als TRUE behandelt.

Funktion | Beschreibung
And(Wert1, Wert2, ...) | Gibt 1 zurück, wenn alle Werte ungleich Null sind. (Logisches UND die Ergebnisse sind TRUE, wenn beide Werte TRUE sind.) Beispiele: And(45, -77) gibt 1 zurück. And(65534, 0) gibt 0 zurück. And(-3, -2, -1, 1, 2, 3) gibt 1 zurück. And(-1, 0, 1) gibt 0 zurück.
BitAnd(Wert1,Wert2,...) | Gibt das bitweise UND von Werten zurück. Hinweis: Verarbeitet 32-Bit-Ganzzahlwerte mit Vorzeichen und gibt diese zurück. Beispiele: BitAnd(45, 77) gibt 13 zurück. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 binär, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 binär. Wenn man jedes gemeinsame Bit in diesen zwei 16-Bit binären Zahl mithilfe der And-Operation vergleicht, kommt man auf 0000 0000 0000 0000 0000 0000 0000 1101, was wiederum = 13 in dezimaler Schreibweise ist.
BitNot(Wert) | Gibt den bitweise invertierten Wert von Wert zurück. Hinweis: Verarbeitet 32-Bit-Ganzzahlwerte mit Vorzeichen und gibt diese zurück. Beispiele: BitNot(45) gibt -46 zurück. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 binär. Wenn jede 0 in 1 und jede 1 in 0 invertiert wird, ergibt dies 1111 1111 1111 1111 1111 1111 1101 0010 binär, also -46 in dezimaler Schreibweise.
BitOr(Wert1,Wert2,...) | Gibt das bitweise ODER von Werten zurück. Hinweis: Verarbeitet 32-Bit-Ganzzahlwerte mit Vorzeichen und gibt diese zurück. Beispiele: BitOr(45, 77) gibt 109 zurück. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 binär, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 binär. Wenn man jedes gemeinsame Bit in diesen zwei binären 16-Bit-Zahlen mithilfe der Or-Operation vergleicht, ergibt sich 0000 0000 0000 0000 0000 0000 0110 1101, was 109 in dezimaler Schreibweise ist.
BitXOr(Wert1,Wert2,...) | Gibt das bitweise XOR (exklusives ODER) von Werten zurück. (Logisches XOR das Ergebnis ist TRUE, wenn eines – und wirklich nur eines – der Bits TRUE ist. Das Ergebnis ist FALSE, wenn 2 oder mehr Bits gleich sind.) Hinweis: Verarbeitet 32-Bit-Ganzzahlwerte mit Vorzeichen und gibt diese zurück. Beispiele: BitXor(45, 77) gibt 96 zurück. 45 = 0000 0000 0000 0000 0000 0000 0010 1101 binär, 77 = 0000 0000 0000 0000 0000 0000 0100 1101 binär. Wie unten ersichtlich, sind 0110 0000 die einzigen nicht gemeinsamen Bits von 45 und 77.
45 | 77 | XOR per Bit | XOR Bit
0 | 0 | zwei 0en ≥ XOR FALSE | 0 (FALSE)
0 | 1 | nur eine 1 ≥ XOR TRUE | 1 (TRUE)
1 | 0 | nur eine 1 ≥ XOR TRUE | 1 (TRUE)
0 | 0 | zwei 0en ≥ XOR FALSE | 0 (FALSE)
1 | 1 | zwei 1en ≥ XOR FALSE | 0 (FALSE)
1 | 1 | zwei 1en ≥ XOR FALSE | 0 (FALSE)
0 | 0 | zwei 0en ≥ XOR FALSE | 0 (FALSE)
1 | 1 | zwei 0en≥ XOR FALSE | 0 (FALSE)
0110 0000 = 96 in dezimaler Schreibweise.
If(Bedingung, Wert1, Wert2) | Gibt Wert1 zurück, wenn Bedingung ungleich Null ist. Andernfalls wird Wert2 zurückgegeben. Hinweis: Wenn die Bedingung oder die Argumente auf leere Zellen verweisen, werden sie als Null (FALSE) interpretiert.
InRange(Wert,Min,Max) | Gibt TRUE zurück, wenn Min(Min,Max) ≤ Wert ≤ Max(Min,Max) ist.
InTolerance(Tatsächlicher Wert, Erwarteter Wert, Toleranz %, Rand) | Bestimmt, ob Tatsächlicher Wert innerhalb der relativen Toleranz % von Erwarteter Wert liegt, wenn die Differenz zwischen Tatsächlicher Wert und Erwarteter Wert über dem Wert von Rand liegt. Wenn der Wert der berechneten prozentualen Differenz größer ist als der Wert von Toleranz % oder den Argumenten von Rand, dann gibt die Funktion 0 zurück. Andernfalls wird 1 zurückgegeben. Die berechneten Werte verwenden die bereitgestellten Werte von Erwarteter Wert und Tatsächlicher Wert.
Not(Wert) | Gibt 0 zurück, wenn Wert nicht gleich Null ist, oder 1, wenn Wert gleich 0 ist. (Logische Invertierung) Beispiele: Not(-12345) gibt 0 zurück. Not(3.14) gibt 0 zurück. Not(2-1) gibt 0 zurück. Not(1-1) gibt 1 zurück.
OneShot(Wert) | Gibt TRUE (1) zurück, wenn der letzte Eingabewert TRUE (ungleich Null) ist und der vorherige Eingabewert FALSE (0) war. In allen anderen Fällen gibt die Funktion FALSE (0) zurück. Beispiele: OneShot(A1) bezieht sich auf die Zelle A1 mit einer booleschen Funktion. Bei der ersten Ausführung gibt die Zelle A1 den Wert 0 zurück. OneShot(A1) gibt 0 zurück. Bei der zweiten Ausführung gibt die Zelle A1 den Wert 1 zurück. OneShot(A1) gibt 1 zurück. OneShot(B2) bezieht sich auf Zelle B2 mit einer Funktion, die einen größeren Bereich von Werten zurückgibt. Bei der ersten Ausführung gibt Zelle B2 den Wert 12 zurück. OneShot(B2) gibt 1 zurück. Bei der zweiten Ausführung gibt Zelle B2 den Wert 0 zurück. OneShot(B2) gibt 0 zurück. Hinweis: Je nach Triggergeschwindigkeit können die Ergebnisse der OneShot-Funktion sehr schnell pulsieren. Dies kann dazu führen, dass der Ausgabewert in der Anzeige nicht sichtbar aktualisiert wird.
Or(Wert1,Wert2,...) | Gibt 0 zurück, wenn alle Werte ungleich Null sind. Andernfalls, wird 1 zurückgegeben. (Logisches ODER das Ergebnis ist TRUE, wenn mindestens einer der Werte TRUE ist.) Beispiele: Or(45, -77) gibt 1 zurück. Or(-1, 0, 1) gibt 1 zurück. Or(0, 1-1) gibt 0 zurück.