Ausdrücke

Alle  informel Programme verwenden als Script Sprache die Angabe von Ausdrücken gemäß der hier beschriebenen Syntax.

Die Syntax der Ausdrücke erfolgt weitestgehend gemäß IEC 61131-3 Strukturierter Text (ST). Im Gegensatz zu diesem wird hier ein Interpreter verwendet um die Ausdrücke zu bearbeiten. Wir sprechen deshalb hier von ST-Script.

 

Ausdrücke in Meldetexten

Eine Besonderheit ist, dass die Ausdrücke auch in Meldetexte einzufügen werden können. Um sie vom eigentlichen Text unterscheiden zu können ist es notwendig, dass sie in doppelte geschweifte Klammern ‘{{’ und ‘}}’ eingeschlossen werden. Texte können somit zur Laufzeit berechnete dynamische Werte enthalten.

 

Sprachelemente

Es stehen folgende Sprachelemente zur Verfügung

Operatoren
Konstanten
DDE-Werte
OPC-Werte
Digitale Ein-/Ausgänge
Systemvariablen
Umgebungsvariablen
Funktionen

 

Operatoren

Die Ausdrücke können folgende Operatoren beinhalten:

Arithmetische Operatoren: +, -, *, /, MOD, ** (Potenzierung)
Boolesche Operatoren: AND, OR, XOR, NOT
Vergleichsoperatoren: =, >, <, >=, <=, <>

Außer diesen Operatoren kann eine Klammerung von Teilausdrücken erfolgen.

Rangfolge der Operatoren
Bei der Auswertung der Ausdrücke werden die Operatoren in folgender Rangfolge bearbeitet:

Rangstufe Operator Operation
1 ( ) Klammerung
2 ** Potenzierung
3 - Negation
4 NOT Komplement
5 * Multiplikation
6 / Division
7 MOD Modulo
8 + Addition
9 - Subtraktion
10 <, >, >=, <= Vergleich
11 = Gleichheit
12 <> Ungleichheit
13 AND, & boolesches UND (bitweise Verknüpfung)
14 XOR exklusives ODER (bitweise Verknüpfung)
15 OR boolesches ODER (bitweise Verknüpfung)

 

Konstanten

numerische Konstanten
Die Ausdrücke können numerische Konstanten (Literale) in unterschiedlicher Kodierung enthalten:

Typ Beispiel
Ganzzahlige Konstanten: 5
10
Gleitkomma-Konstanten (mit oder ohne Exponent): 7.33
10.5E-2
Binäre Konstanten: 2#1010 2#11111111 (Basis 2, Binär)
8#12 8#377 (Basis 7, Oktal)
16#a 16#FF (Basis 16, Hexadezimal)

Außerdem können die booleschen Werte TRUE (=1) und FALSE (=0) direkt angegeben werden.

 

Textuelle Konstanten
Textkonstanten bestehen aus beliebigen in einfachen Anführungsstrichen eingeschlossen Zeichen.

Beispiele 'kommend'
'gehend'
'Dies ist eine Textkonstante'

 Die Zeichenketten können folgende Steuerzeichen enthalten

IEC 61131
Steuerzeichen
Beschreibung
$L oder $l Zeilenvorschub (Line Feed)
$P oder $p Seitenvorschub (Form Feed)
$R oder $r Wagenrücklauf (Carrige Return)
$N oder $n Neue Zeile (New Line, Wagenrücklauf und Zeilenvorschub)
$' Einfaches Anführungszeichen

DDE Werte

In den Ausdrücken können auch Werte von einem DDE-Server verwendet werden. Auf diese Weise können aktuelle Werte in Meldungstexten angegeben werden.

Die Angabe der Werte erfolgt wie ein Funktionsaufruf mit den Parametern Server, Topic, Item.
Werte an externe Server können durch einfache Zuweisung übergeben werden.

DDE(Server, Topic, Item)

Server Name der DDE Anwendung
Topic Bezeichnung des DDE Themas
Item Bezeichnung des DDE Wertes

Es wird weiterhin der bis September 2001 gültige alte Syntax unterstützt.

Beispiel
Angabe eines Temperaturwertes in einem Meldetext.

Meldetext:
    Die Kesseltemperatur beträgt {{FORMAT(DDE('DdeServer','Werte','Temperatur'), '###.#')}}

Beispiel
Überwachung einer Excel Zelle (Zeile 1, Spalte 1).

Ausdruck:
    DDE('Excel','Mappe1','Z1S1') > 50

Beispiel
Übergabe eines Wertes an Excel.

Ausdruck:
    DDE('Excel','Mappe1','Z1S1') := 1050;

 

OPC Werte

In den Ausdrücken können auch Werte von einem OPC-Server verwendet werden. Auf diese Weise können aktuelle Werte in Meldungstexten angegeben werden.

Die Angabe der Werte erfolgt in wie ein Funktionsaufruf mit den Parametern Server und Item.

OPC(Server, ItemPath)

Server Name des OPC Servers
ItemPath Voller Pfad des Wertes

Es wird weiterhin der bis September 2001 gültige alte Syntax unterstützt.

Beispiel
Angabe eines Temperaturwertes in einem Meldetext.

Meldetext:
    Die Kesseltemperatur beträgt {{OPC('Advantech.ADAM','Device1.Group1.Temp1')}}

Beispiel
Überwachung eines Wertes aus einer SIMATIC S7.

Ausdruck:
    OPC('OPC.SimaticNET','S7:[CPU|DB|CP_L2_1:]E1') <> 0

 

Digitale Ein-/Ausgänge

Zur Steuerung externer Geräte oder Übernahme externer Signale können direkt digitale Ein- und Ausgänge angegeben werden.

%INummer Digitaler Eingang Nummer (1..n)
%QNummer Digitaler Ausgang Nummer (1..n)

Beispiele

(* PageControl Zyklusprogramm *)
%Q1 := $JOBCOUNT > 0; (* Ausgangssignal wenn Rufe anstehen *)
%Q1 := $DEVICESTATE / 2 MOD 2 (* Ausgangssignal bei Modemfehler *)

Hinweis
siehe auch Funktion QIMPULSE zur Ausgabe von Ausgangsimpulsen

 

Systemvariablen

Um zusätzliche Informationen bereitstellen zu können, sind Systemvariablen verfügbar, die in den Ausdrücken verwendet werden können. Alle Systemvariablen sind schreibgeschützt.

Es sind folgende Systemvariablen definiert:

Name Beschreibung Beispiel Verfügbar in
$TIME Aktuelle Uhrzeit 09:15 allen Programmen
$DATE Aktuelles Datum mit vierstelliger Jahreszahl 11.06.1997 allen Programmen
$HOUR Aktuelle Stunde im 24 Stunden Format (00 .. 23) 09 allen Programmen
$MINUTE Aktuelle Minute (00 .. 59) 15 allen Programmen
$SECOND Aktuelle Sekunde (00 .. 59) 09 allen Programmen
$WEEKDAY Aktueller Wochentag (0-Montag .. 6-Sonntag) 2 allen Programmen
$WEEK Kalenderwoche (1 .. 53) 02 allen Programmen
$DAY Aktueller Tag (01 .. 31) 11 allen Programmen
$MONTH Aktueller Monat (01 .. 12) 06 allen Programmen
$YEAR Aktuelles Jahr (vierstellig) 1997 allen Programmen
$ERROR Beschreibung (englisch) des letzten aufgetretenen Laufzeitfehlers. allen Programmen (ab April 2004)
$INPORT Meldungsquelle Seriell1 MessageControl
$MSGSRC Meldungsquelle MsgJuli RemoteControl
$MESSAGE Originaltext einer Meldung Alarm Anlage 1 PageControl, MessageControl
$SIGNCODE Quittungscode der aktuellen Meldung 123 PageControl
$TRIGGER Auslöser der Meldung ("DDE" oder Signalname) DDE PageControl
$GROUP Bezeichnung der Meldungsgruppe Service PageControl (6.40.017)
$RECEIVER Bezeichnung des Meldungsempfängers Schmidt PageControl
$PRIORITY Priorität der Meldung 5 PageControl
$ESCALATIONLEVEL Eskalationsstufe der Meldung 2 PageControl (7.30.001)
$DEVICESTATE Aktueller Status der Schnittstelle und des Modems (Bitcodiert) 2 PageControl
$BARRINGACTIVE Aktueller Status der extern gesteuerten Rufsperre 1 PageControl
$JOBSTATE Aktueller Sendestatus 10 PageControl
$JOBCOUNT Anzahl der Rufe in der Sendeliste 2 PageControl
$LOGCOUNT Anzahl der Einträge im Logbuch 50 PageControl
$CALLID Eindeutige ID eines Rufs 3976DEC93BD631 PageControl
$STATIONNAME Bezeichnung der PageControl Station Pumpwerk 2 PageControl, RemoteControl
$STATIONNUMBER Nummer  der PageControl Station 0721 9414208 PageControl, RemoteControl
$MSGLIST Liste der aktiven Meldungen
(begrenzt auf 20 Meldungen)
Störung Pumpe 1
Übertemperatur Motor
PageControl
$CURRENTSHIFT Nummer der momentan eingestellten Schicht 2 PageControl
$PARAMETER Parameter eines Fernwirkbefehls SetVal=55 PageControl (6.40.027)
$EXTAPPINSTALLED Installierte externe Anwendungen (Bitcodiert) 3 PageControl (7.10.001)
$EXTAPPSTATE Status der externen Anwendungen (Bitcodiert) 3 PageControl (7.10.001)
$LASTCHOICE Letzte Auswahl 55 PhoneControl
$RECORDEDFILE Dateiname der letzten Aufzeichnung C:\REC\AB_R10001.WAV PhoneControl
$CALLINGNUMBER Nummer des Anrufers, wenn bekannt (CLI) PhoneControl
$CALLEDNUMBER Nummer die angerufen wurde (DNIS) PhoneControl
$LINE Nummer der Leitung auf der der Anruf geführt wird PhoneControl
$PATH Verzeichnis des momentanen Ablaufplans PhoneControl
$TRANSFERRESULT Ergebnis einer Weitervermittlung PhoneControl
$EXECUTERESULT Ergebnis eines extern ausgeführten Programms PhoneControl
$ITEMNAME Name des aktuellen Elements (Meldung oder Wert) RemoteControl

 

Umgebungsvariablen

Wird bei der Auswertung einer Variable keine entsprechende Variable gefunden, so wird versucht eine entsprechende Umgebungsvariable zu finden, die den geforderten Wert liefern kann.

Beispiel

Meldung von Station {{COMPUTERNAME}}