Logische und mathematische Operationen
im Universalgateway


Der Funktionstreiber für logische und mathematische Operationen stellt eine Bibliothek für das Verknüpfen von Datenpunkten bereit. Dieser Treiber muss im Gateway installiert werden, wenn Datenpunkte mit logischen oder mathematischen Operationen verknüpft werden sollen.


Aufbau der Geräteadresse

<typ> <Adresse>

<Typ>

TypBedeutung
LLogische Verknüpfung
RMathematische Verknüpfung
SGanzzahliger Wert
YFließkomma-Wert

<Adresse>

Die Adresse kann ein beliebiger Wert (Zahl oder Text) sein, normalerweise werden jedoch fortlaufende Zahlen verwendet.

Anwendung

Logische und mathematische Operationen werden mit Hilfe des nomval Parameters festgelegt. Er legt fest, wie die Berechnung bzw. Auswertung zu erfolgen hat. Die Zeilenlänge eines nomval Eintrages ist auf maximal 128 Zeichen beschränkt!

Beispiel:

[L 1]

nomval = $(80 mod status 1) || $(80 mod status 2)

Hier wird eine logische ODER-Verknüpfung aus zwei Modbus-Parametern erzeugt, die den Wert 'true' annimmt, wenn einer der Parameter 'true' wird.

Optionen

Für die einzelnen Operationen können mittels des format Parameters noch Optionen festgelegt werden.

OptionBedeutungErläuterungen
cd:xxAnzugsverzögerung xx SekundenGibt bei logischen Verknüpfungen an, wie lange eine Wertänderung von 0 auf 1 verzögert wird, bis die Weiterleitung zum Dispatch-Mechanismus erfolgt.
gd:xxAbfallverzögerung xx SekundenGibt die Verzögerung für die Wertänderung von 1 auf 0 an.
rcovNeuberechnung bei jeder Wertänderung
dft:xDefault WertWird verwendet, wenn bei einer Operation ein Parameter noch keinen gültigen Wert hat, die Berechnung also nicht möglich ist.

Hinweis:
cd: und gd: werden bei mathematischen Operationen identisch behandelt.

Aufbau von Operationen

Datenpunkte die in einer Operation verwendet werden sollen, müssen in der Form

Operator / Funktion Beschreibung Beispiel / Hinweis
Einstellige Operatoren
+ Vorzeichen bleibt +X (-1 → -1)
- Vorzeichenwechsel -X (-1 → +1)
~ Invertieren ~X
! Not !X (!1 → 0)
Zweistellige Operatoren
^Bit Xor
|Bit Or
&Bit And
||Or
&&And
==Vergleich auf Gleichheit
!=Vergleich auf Ungleichheit
>größer
>=größer oder gleich
<kleiner
<=kleiner oder gleich
+ Addieren X+5 (9+5 → 14)
- Subtrahieren X-5 (9-5 → 4)
* Multiplizieren X*5 (9*5 → 45)
/ Dividieren X/5 (9/2 → 4)
% Modulo X%5 (9%2 → 1)
Nullstellige Funktionen
systimeGetSysTime
timeGetTime
dateGetDate
hourGetHour
minuteGetMinute
secondGetSecond
yearGetYear
monthGetMonth
dayGetDayOfMonth
ydayGetDayOfYear
mdayGetDayOfMonth
wdayGetDayOfWeek
curtimeGetSysTime
Einstellige Funktionen
sin Sinus sin(X) – Winkel X in Bogenmaß
cos Cosinus cos(X) – Winkel X in Bogenmaß
tan Tangens tan(X) – Winkel X in Bogenmaß
asinArcus Sinusasin(X)
acosArc Cosinusacos(X)
atanArcus Tangensatan(X)
expExpexp(X) (eX)
fabsFabsfabs(X) (Betrag von X)
floor Floor floor(X) (Runden auf nächstkleinere natürliche Zahl)
ceil Ceil ceil(X) (Runden auf nächstgrößere natürliche Zahl)
log Log log(X) (ln(X), nat. Logarithmus)
log10 Log10 log10(X) (Logarithmus zur Basis 10)
sqrt Wurzel sqrt(9) → 3
Zweistellige Funktionen
atan2ArcusTangens
fmod modulo Rest der ganzzahligen Division (fmod(10,3) → 1)
pow Potenz pow(3; 2) → 9
max Maximum max(1; 2) → 2
min Minimum min(1; 2) → 1
round Runden round(3.774; 2) → 3.77
Dreistellige Funktionen
if if(a;b;c) entspricht if a then b else c if($(1 ugwc freemem)<1000; 1; 0)
max3 Maximum max3(5;6;7) → 7
min3 Minimum min3(5;6;7) → 5

Datenpunktflags

Zusätzlich zu Funktionen können auch noch die Flags von Datenpunkten abgefragt werden. Hierzu wird das benötigte Flag mit einem Punkt getrennt hinter die Adresse gesetzt:

$(xxx).valid

FlagBedeutung
actualAktualwert, Default wenn nicht explizit angegeben
nominalNominalwert
gstGeberstörung
btaBTS-Störung
localWert wird vor Ort bedient
lockedSollwert verriegelt
historyHistorischer Wert aus letzter Verbindung
warnhighWarngrenze überschritten
warnlowWarngrenze unterschritten
alarmhighAlarmgrenze überritten
alarmlowAlarmgrenze unterschritten
sethighStellgrenze überschritten
setlowStellgrenze unterschritten
autoDatenpunkt im 'Automatik'-Betrieb

Weiteres

Bei Funktionen mit mehreren Parametern werden die einzelnen Parameter mittels eines Semikolon abgetrennt.

Beispiel für die Funktion if:

nomval = if($(80 mod 1 status 1); $(80 mod 1 input 1); $(80 mod 1 input 2))

$(xxx)

angegeben werden. 'xxx' steht für die Schreibweise, die auch in der dispatch.txt verwendet wird.

Beispiele:
$(940 bac 2000.BI 0) oder
$(70 eib 1/1),
allerdings ohne die in der dispatch.txt verwendeten eckigen Klammern.

Funktionen und Operatoren