Anweisungsliste (AWL)

Eine Anweisungsliste (AWL) besteht aus einer Folge von Anweisungen. Jede Anweisung beginnt in einer neuen Zeile, und beinhaltet einen Operator und, je nach Art der Operation, einen oder mehrere durch Kommata abgetrennte Operanden.
Vor einer Anweisung kann sich ein Identifikator Marke befinden, gefolgt von einem Doppelpunkt (:).
Ein Kommentar muss das letzte Element in einer Zeile sein. Leere Zeilen können zwischen Anweisungen eingefügt werden.

Beispiel:

LD     17
ST     lint     (* Kommentar *)
GE     5
JMPC   next
LD     idword
EQ     istruct.sdword
STN    test
next:

Modifikatoren und Operatoren in AWL

In der Sprache AWL können folgende Operatoren und Modifikatoren verwendet werden.
Modifikatoren:

Im Folgenden finden Sie eine Tabelle aller Operatoren in AWL mit deren möglichen Modifikatoren und der jeweiligen Bedeutung:

Operator

Modifikatoren

Bedeutung

LD

N

Setze aktuelles Ergebnis gleich dem Operanden

ST

N

Speichere aktuelles Ergebnis an die Operandenstelle

S

 

Setze den Bool-Operand genau dann auf TRUE, wenn das aktuelle Ergebnis TRUE ist

R

 

Setze den Bool-Operand genau dann auf FALSE, wenn das aktuelle Ergebnis TRUE ist

AND

N, (

Bitweise AND

OR

N, (

Bitweise OR

XOR

(

Bitweise exklusives OR

ADD

(

Addition

SUB

(

Subtraktion

MUL

(

Multiplikation

DIV

(

Division

GT

(

>

GE

(

>=

EQ

(

=

NE

(

<>

LE

(

<=

LT

(

<

JMP

CN

Springe zur Marke

CAL

CN

Rufe Funktionsblock auf

RET

CN

Verlasse den Baustein und kehre ggf. zurück zum Aufrufer

)

 

Werte zurückgestellte Operation aus

Eine Auflistung sämtlicher IEC-Operatoren finden Sie im Anhang.

Beispiel für ein AWL-Programm unter Verwendung einiger Modifikatoren:

LD     TRUE      (*Lade TRUE in den Akkumulator*)
ANDN   BOOL1     (*führe AND mit dem negierten Wert der Variable BOOL1 aus*)
JMPC   marke     (*wenn das Ergebnis TRUE war, springe zur Marke "marke"*)
LDN    BOOL2     (*Speichere den negierten Wert von *)
ST     ERG       (*BOOL2 in ERG*)
marke:

LD     BOOL2     (*Speichere den Wert von *)
ST     ERG       (*BOOL2 in ERG*)

Es ist in AWL auch möglich, Klammern nach einer Operation zu setzen. Als Operand wird dann der Wert der Klammer betrachtet.
Zum Beispiel:

LD 2
MUL 2
ADD 3
ST Erg

Hier ist der Wert von Erg 7. Mit Klammern:

LD 2
MUL( 2
ADD 3

ST Erg

Hier ergibt sich als Wert für Erg 10, denn die Operation MUL wird erst ausgewertet, wenn man auf ")" trifft; als Operand für MUL errechnet sich dann 5.