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
    • SET/SCHREIBEN
      • ARG.xxx
        xxx = ALIAS des Argumentes der Funktion
  • 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
         
    • SET/SCHREIBEN
      ARG.xxx
      • xxx = ALIAS des Argumentes der Funktion

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);