Formeln
Wichtig: Bei Verwendung von ; in den Formeln muss die Formel mit „ “ eigefasst werden. Zudem muss das letzte Zeichen innerhalb der " ein ; sein.
Zugriff auf Items:
- X.0
Zugriff auf die Itemvariablen. 0= ID des Items
Zugriff auf System-Variablen:
- $.SYS
Aktuell: $.SYS.TIME Systemzeit in Sekunden
Zugriff auf Temporäre Variablen:
- Wird der Name der Funktion nicht gefunden wird dies als TEMP Variable verwendet. Variablen gelten nur innerhalb des Devices(Slave)
Zugriff auf Kommunikationsmethoden:
- NNN.xxx
- NNN= ALIAS der Methode.
- xxx= Abhängig vom Protokoll
Generelle Variablen:
- F=Forcen/Changed (GET/SET)
- L=Datenlänge
- Q=Qualität
- EC=Errorcounter (GET/SET)
- EN=Error-Nummer
- T=Timesstamp (GET/SET)
- P=Pausieren für x Zyklen (GET/SET)
Modbus:
- xxx.FORMAT
- xxx=Start-Register
- FORMAT: Konvertierung WORD/UINT/DWORD/DUINT/LWORD/LUINT/INT/DINT/LINT/FLOAT
Sercom(Ascii)
- GET/LESEN
- xxx.yyy.FORMAT
xxx=Start-Byte, yyy=Länge,FORMAT=Format
FORMAT: INT,FLOAT,BYTESUM(Summe aller Bytes) - xxx.zzz
xxx=Byte
zzz=String-Enumliste zb. NNN.8.NO,YES,MAYBEE
Ist der String ab dem 8.Byte gleich mit „NO“ , dann ist Wert 0
YES=1, MAYBEE=2, Anders =0
- xxx.yyy.FORMAT
- SET/SCHREIBEN
- ARG.xxx
xxx = ALIAS des Argumentes der Funktion
- ARG.xxx
Rest(JSON)
- GET/LESEN
xxx - xxx = VALUE
Wert des Objektes
VAL.NNN.NNN.NNN
NNN= Name des Objektes - xxx = ARRAY
Zugriff auf eine Arrary mit den Folgefunktionen
ARRAY.MEDIA.NNN.NNN.NNN = Mittelwert
ARRAY.MAX.NNN.NNN.NNN = Maxwert
ARRAY.MIN.NNN.NNN.NNN = Minwert
ARRAY.LEN.NNN.NNN.NNN = Länge des Arrays
NNN= Name des Objektes - xxx = FIND
Vergleichen des Wertes mit dem folgenden String
FIND.STRING.NNN.NNN.NNN
Sucht den STRING im Objektwert
NNN= Name des Objektes
- xxx = VALUE
- SET/SCHREIBEN
ARG.xxx - xxx = ALIAS des Argumentes der Funktion
- GET/LESEN
Aufbau der Formel:
Die Formeln müssen in " eingeschlossen sein, da sie ; als Befehlszeichen verwenden. Auch newLine ist anwendbar.
Aufbau:
- Beinhaltet alle Möglichkeiten der aktuellen Formelberechungen. Für die richtige Ausführung ist die konsequente Anwendung von Klammern () wichtig.
Operationen:*
MUL
/
DIV
+
ADD
-
SUB
^
POT
>
GR
>=
GGL
<
KL
<=
KGL
!=
UGL
==
GL
>>
SHR
<<
SHL
&&
AND
||
OR
&
BAND
|
BOR
:=
RESULT
Strukturfunktionen: IF THEN ELSE ENDIF;IF THEN Anweisungen dürfen nicht verschachtelt werden. Jedoch können mehrere IF THEN ELSE IF THEN ELSE IF THEN ELSE ENDIF; angelegt werden.
Beispiel:
"IF X.0 > 100 THEN X.1 := X.1 + 1; ELSE IF X.0 > 10 THEN X.1:=X.1+10; TESTVAR:=(X.1+X.2)*(10-9); DEBUG(TESTVAR,X.2,X.0); ELSE X.1:=X.1+1000; ENDIF; IF X.1 > 1000 THEN X.2:=10; ELSE IF X.1 >200 THEN X.2:=100; ELSE X.2:=1000; ENDIF; X.2:=X.2+10;"
Variablenzugriff:
- Siehe oben.
Funktionsaufrufe in Formeln:
In Formeln ist es möglich Funktionen zu verwenden. Die Funktionen können mehre Parameter haben. Diese müssen Variablennamen sein und nicht direkt numerische Werte. Die gesamte Funktion darf kein Leerzeichen enthalten und auch keine Operationszeichen wie +-/….
Zb. DEBUG( TEST, TEST); geht nicht, DEBUG(TEST,TEST); ist OK
Aufbau: NNN(XXX,XXX,XXX,XXXX)
- NNN= Name der Funktion
- XXX= Parameter der Funktion. Diese müssen Variablennamen sein und nicht direkt numerische Werte. In dem Fall müssen die Werte zuerst in eine Variable geschrieben werden und dann dieses al Parameter übergeben.
- Wichtig: Die Funktion darf kein Leerzeichen enthalten und auch keine Operationszeichen wie +-/….
- Beispiel:
X.1:=DATE_DAY($.SYS.TIME);
Schreibt in X.1 den Monatstag der aktuellen Uhrzeit rein.
UHRZEIT:=$:SYS.TIME-86000; X.1:=DATE_DAY(UHRZEIT);
Schreibt in X.1 den Monatstag des Vortages.
Aktuelle Funktionen:
- Bei den Funktionen müssen die Paramter als Variablen übergeben werden. Direkt Werte gehen nicht. (Grund: bei einer Zahl mit punkt kommt das Aufsplitten durcheinander.)
Beispiel: PARAM_TIME:=10000; X.1:= DATE_MONTH(PARAM_TIME);
- Datumsfunktionen:
PARAM_TIME= VARIABLE mit TIME WERT (Zeit in Sekunden) - DATE_MONTH(PARAM_TIME),
- DATE_YEAR(PARAM_TIME),
- DATE_YDAY(PARAM_TIME),
- DATE_HOUR(PARAM_TIME),
- DATE_MIN(PARAM_TIME),
- DATE_SEC(PARAM_TIME)
- Zeitfunktionen:
- TIME_FROM_YDAY(PARAM_YEAR, PARAM_YEARDAY)
- TIME_FROM_DATE (YEAR,MON, DAY)
- TIME_FROM_DATE (YEAR,MON, DAY,HOUR,MIN,SEC);
- Math-Funktionen:
- LOG(VALUE,BASE)
- Help-Funktionen:
- DEBUG(VAR1,VAR2,VAR2,..);
Die Funktion DEBUG gibt im Log des Device die Namen der Variablen mit dem aktuellen Wert aus.
Zb. IF .. THEN DEBUG(VAR1,VAR2,X.10); …
Erscheint im Log: 10:12:30:VAR1=6,VAR2=3,X.10=10.2);
- DEBUG(VAR1,VAR2,VAR2,..);