Mathematik: Ein paar Beispiele
From bab-tec.de wiki
Diese Beispiele zeigen wie die Funktionen, Variablen und Operationen in den mathematischen Ausdruck eingebaut werden können:
- „eo(1) + 100“ => Liefert den Wert des KNX-Objektes mit der Nummer 1 (im folgenden EO_1) plus 100 zurück. Wichtig ist natürlich immer die Beachtung des möglichen Wertebereiches des KNX-Ausgangs- objektes!
- „eo(3)*eo(4)“ => Multipliziert EO_3 und EO_4. Wenn in einem Ausdruck KNX-Objekte verwendet werden, die im Editor nicht mit GA versehen sind, so wird ein Fehler gemeldet.
- „100 / eo(1)“ => Dividiert 100 durch EO_1. Achtung: Wenn auf den Eingang 1 eine Null gesendet wird, so liefert die Berechnung dieses Ausdrucks einen Laufzeitfehler! („Division durch Null“).
- „sqrt(eo(0)^2+eo(1)^2)“ => Berechnet die Länge der Hypotenuse in einem rechtwinkligen Dreieck, wenn auf EO_0 und EO_1 die Längen der Katheten gesendet werden. („Satz von Pythagoras“)
- „eoi()“ => Liefert eine 2, wenn auf dem KNX-Objekt mit der Nummer Zwei etwas empfangen wurde.
- „eo(eoi())“ => Liefert den empfangenen Wert zurück.
- „eo(eoi())^2“ => Berechnet das Quadrat für jeden empfangenen Telegramwert.
- „rand()“ => Gibt einen zufälligen Wert zurück.
- „rand() & 0xff“ => Begrenzt diesen Wert auf einen Wertebereich von 0 bis zu maximal 255. Damit wäre das Ergebnis in EIS_14 darstellbar.
- „srand(time())“ => Liefert nichts (bzw. Null) zurück, initialisiert aber den Zufallsgenerator mit einem pseudo-zufälligen Startwert.
- „eo(0)+eo(2)+eo(3)+eo(1)+eo(5)+eo(6)+eo(4)“ => Berechnet die Summe von mehreren KNX-Objekten.
- „eo_sum(0,1,2,3,4,5,6)“ => Wie oben, aber sehr viel „Laufzeit-freundlicher“ und einsichtiger.
- „"foo" + "bar"“ => Liefert als Ergebnis „foobar“. Dieses kann dann aber nur als EIS 15 auf dem Ausgang ausgegeben werden.
- „eo(0)>23?1:0“ => Liefert eine 1 wenn der Wert des Eingangsobjekts über 23 (Grad EIS 5) liegt und eine 0 wenn der Wert kleiner oder gleich 23 ist.
- „eo_ga(0,1)“ => Liefert die 2. Gruppenadresse im ersten Eingangsobjekt (eo(0)) als unformatierte Zahl.
- „ga_str(0,2)“ => Liefert die Gruppenadresse des Eingangs 1 als String (EIS 15 Text) in 2-stelliger Schreibweise auf den Ausgang. "...(0,3)" liefert die Adresse 3-stellig.
- „str_ga("17/1/2")“ => Liefert die Zahl „35074“ auf den Ausgang.
- „override_addr=(eo(0)>10?61482:61480); eo(0)>10?1:0“ => Sendet eine 1 auf die Adresse 30/0/42 wenn der Eingangswert eo(0) über 10 liegt, und eine 0 auf die Adresse 30/0/40 wenn der Eingangswert unter 10 liegt.
- „override_addr=(eo(0)>10?61482:61480); override_eis=(eo(0)>10?1:9); eo(0)>10?1:2400“ => Sendet eine 1 als EIS 1 (1bit) auf die Adresse 30/0/42 wenn der Eingangswert eo(0) über 10 liegt, und sendet eine 2400 als EIS 9 (4byte) auf die Adresse 30/0/40 wenn der Eingangswert unter 10 liegt.
- „override_skip_send=(eo(0)>10?1:0)“ => Liegt der Eingangswert von eo(0) unter 10 wird eine 0 auf den Ausgang gesendet, wenn der Wert über 10 liegt sendet der Job keinen Ausgangswert.
- „x=(eo(0)>10?1:0); override_keep_data=x“ => Liefert einen Ausgangswert von 0 bis 10 oder den Wert des auslösenden Eingangstelegrams.
- „version()“ => Liefert bei einem beliebigen Eingangstelegram die aktuelle Versionsnummer des Mathejobs als Zahl zurück.