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>
Typ | Bedeutung |
---|---|
L | Logische Verknüpfung |
R | Mathematische Verknüpfung |
S | Ganzzahliger Wert |
Y | Fließ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.
Option | Bedeutung | Erläuterungen |
---|---|---|
cd:xx | Anzugsverzögerung xx Sekunden | Gibt 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:xx | Abfallverzögerung xx Sekunden | Gibt die Verzögerung für die Wertänderung von 1 auf 0 an. |
rcov | Neuberechnung bei jeder Wertänderung | |
dft:x | Default Wert | Wird 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
Flag | Bedeutung |
---|---|
actual | Aktualwert, Default wenn nicht explizit angegeben |
nominal | Nominalwert |
gst | Geberstörung |
bta | BTA-Störung |
local | Wert wird vor Ort bedient |
locked | Sollwert verriegelt |
history | Historischer Wert aus letzter Verbindung |
warnhigh | Warngrenze überschritten |
warnlow | Warngrenze unterschritten |
alarmhigh | Alarmgrenze überschritten |
alarmlow | Alarmgrenze unterschritten |
sethigh | Stellgrenze überschritten |
setlow | Stellgrenze unterschritten |
auto | Datenpunkt 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))