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

$(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

Unäre Operatoren
#ERROR!Positiver Wert
-Negativer Wert
~Invertierter Wert
!Negierter Wert
Duale Operatoren/Vergleiche
^XOR (Bitoperator)
||OR (Bitoperator)
&AND (Bitoperator)
||OR
&&AND
#ERROR!Gleich
!=Ungleich
>Größer
>=Größer oder gleich
<Kleiner
<=Kleiner oder gleich
#ERROR!Addition
-Subtraktion
*Multiplikation
/Division
%Modulo
Funktionen ohne Parameter f()
systime(),curtime()Systemzeit ermitteln
time()Systemuhrzeit ermitteln
date()Systemdatum ermitteln
hour(),minute(),second()Stunde, Minute, Sekunde der aktuellen Uhrzeit
year(),month(),day()Jahr, Monat, Tag des aktuellen Datums
yday()Tagesnummer des laufenden Jahres
mday()Tagesnummer des laufenden Monats
wday()Tagesnummer der laufenden Woche
Funktionen mit einem Parameter f(x)
sin(x),cos(x),tan(x),asin(x),acos(x),atan(x)Winkelfunktionen
exp(x)e^x
fabs(x)Absolutwert
floor(x)Abrunden auf nächsten ganzzahligen Wert
ceil(x)Aufrunden auf nächsten ganzzahligen Wert
log(x)Logarithmus zur Basis e
log10(x)Logarithmus zur Basis 10
sqrt(x)Wurzel
Funktionen mit zwei Parametern f(x, y)
atan2(x,y)
fmod(x,y)Modulo für Fließkommawerte
pow(x,y)x^y
min(x,y)Minimum zweier Werte
max(x,y)Maximum zweier Werte
round(x,y)Kaufmännisches Runden, auf y-Nachkommastellen
Funktionen mit drei Parametern f(x, y, z)
if(x,y,z)Wenn x erfüllt ist, dann y, ansonsten z
min3(x,y,z),max3(x,y,z)Minimum bzw. Maximum dreier Werte

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
btaBTA-Störung
localWert wird vor Ort bedient
lockedSollwert verriegelt
historyHistorischer Wert aus letzter Verbindung
warnhighWarngrenze überschritten
warnlowWarngrenze unterschritten
alarmhighAlarmgrenze überschritten
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))