EcoStruxure Machine Expert Version 1.1 unterstützt nicht die Controller M258, LMC058 und LMC078.

Modifizierer und Operatoren in AWL

Modifizierer

In der AWL-Sprache können die folgenden Modifizierer verwendet werden.

C

mit JMP, CAL, RET:

Die Anweisung wird nur ausgeführt, wenn das Ergebnis des vorhergehenden Ausdrucks TRUE ist.

N

mit JMPC, CALC, RETC:

Die Anweisung wird nur ausgeführt, wenn das Ergebnis des vorhergehenden Ausdrucks FALSE ist.

N

mit Operatoren gemäß der nachstehenden Operatoren-Tabelle (N in der Spalte Modifizierer)

Negation des Operanden (nicht des Akkumulators).

(

mit Operatoren gemäß der nachstehenden Operatoren-Tabelle ( (öffnende Klammer) in der Spalte Modifizierer)

Zur Verwendung mit komplexen Operanden. Detaillierte Informationen finden Sie in der Liste der Anwendungsfälle für komplexe Operanden.

HINWEIS: Es wird allgemein als schlechtes Vorgehen betrachtet, die CALC (/RETC/JMPC) direkt nach einem STN-, S- oder R-Operator zu verwenden, da diese Anweisungen den Wert des Akkumulators willkürlich ändern, was zu schwer zu findenden Programmierungsfehlern führen kann.

Operatoren

Die Tabelle zeigt, welche Operatoren in Kombination mit den angegebenen Modifizierern verwendet werden können.

Der Akkumulator speichert den aktuellen Wert, der aus der vorhergehenden Operation resultiert.

Operator

Modifizierer

Bedeutung

Beispiel

LD

N

Lädt den (negierten) Wert des Operanden in den Akkumulator.

LD iVar

ST

N

Speichert den (negierten) Inhalt des Akkumulators in der Operandenvariablen.

ST iErg

S

Legt den Operanden (Typ BOOL) auf TRUE fest, wenn der Inhalt des Akkumulators TRUE ist.

S bVar1

R

Legt den Operanden (Typ BOOL) auf FALSE fest, wenn der Inhalt des Akkumulators TRUE ist.

R bVar1

AND

N,(

Bitweises AND des Akkumulators und des (negierten) Operanden.

AND bVar2

OR

N,(

Bitweises OR des Akkumulators und des (negierten) Operanden.

OR xVar

XOR

N,(

Bitweises exklusives OR des Akkumulators und des (negierten) Operanden.

XOR N, (bVar1,bVar2)

NOT

Bitweise Negation des Akkumulatorinhalts.

ADD

(

Addition von Akkumulator und Operand; das Ergebnis wird in den Akkumulator kopiert.

ADD iVar1

SUB

(

Subtraktion von Akkumulator und Operand; das Ergebnis wird in den Akkumulator kopiert.

SUB iVar2

MUL

(

Multiplikation von Akkumulator und Operand; das Ergebnis wird in den Akkumulator kopiert.

MUL iVar2

DIV

(

Division von Akkumulator und Operand; das Ergebnis wird in den Akkumulator kopiert.

DIV 44

GT

(

Überprüft, ob der Akkumulator größer als der Operand ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. >

GT 23

GE

(

Überprüft, ob der Akkumulator größer oder gleich dem Operanden ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. >=

GE iVar2

EQ

(

Überprüft, ob der Akkumulator gleich dem Operanden ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. =

EQ iVar2

NE

(

Überprüft, ob der Akkumulator ungleich dem Operanden ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. <>

NE iVar1

LE

(

Überprüft, ob der Akkumulator kleiner oder gleich dem Operanden ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. <=

LE 5

LT

(

Überprüft, ob der Akkumulator kleiner als der Operand ist. Das Ergebnis (BOOL) wird in den Akkumulator kopiert. <

LT cVar1

JMP

C, CN

Unbedingter (bedingter) Sprung zur Marke

oJMP = Unbedingter Sprung

oJMPC = Bedingter Sprung, wenn Akkumulator gleich TRUE

oJMPCN = Bedingter Sprung, wenn Akkumulator gleich FALSE

JMP next

CAL

C, CN

Unbedingter (bedingter) Sprung eines PROGRAM oder FUNCTION_BLOCK

oCAL = Unbedingter Aufruf

oCALC = Bedingter Aufruf, wenn Akkumulator gleich TRUE

oCALCN = Bedingter Aufruf, wenn Akkumulator gleich FALSE

CAL prog1

RET

C, CN

Unbedingte (bedingte) Rückkehr der POU und Rücksprung zur aufrufenden POU

oRET = Unbedingte Rückkehr

oRETC = Bedingte Rückkehr, wenn Akkumulator gleich TRUE

oRETCN = Bedingte Rückkehr, wenn Akkumulator gleich FALSE

RET

)

Verzögerte Operation auswerten

In den Themen IEC-Operatoren und Arbeiten im AWL-Editor finden Sie Informationen zur Verwendung und Verarbeitung mehrerer Operanden, komplexer Operanden, von Funktions-, Methoden-, Funktionsbaustein-, Programm- und Aktionsaufrufen sowie von Sprüngen.

Beispiel

AWL-Beispielprogramm mit Modifizierern:

LD      TRUE        load TRUE to accumulator
ANDN    bVar1       execute AND with negative value of bVar1
JMPC    m1         if accum. is TRUE, jump to label "m1"
LDN     bVar2      store negated value of bVar2...
ST      bRes       ... in bRes
___________________________________________________________

m1:
LD      bVar2      store value of bVar2...
ST      bRes      ... in bRes

Verwenden von Operanden

In der folgenden Tabelle werden Anwendungsfälle für Operanden aufgeführt:

Anwendungsfall

Beschreibung

Beispiele

Mehrere Operanden für einen Operator

Optionen

oGeben Sie die Operanden in direkt aufeinander folgenden Zeilen ein, jeweils getrennt durch Kommas in der 2. Spalte.

oWiederholen Sie den Operator auf jeder Zeile.

oOption 1:

LD     2
ADD    3,
       4,
       6
ST     iVAR

oOption 2:

LD     2
ADD    3
ADD    4
ADD    6
ST     iVAR

Komplexe Operanden

Geben Sie für einen komplexen Operanden die öffnende Klammer ( in die erste Spalte ein.

Geben Sie die schließende Klammer in der ersten Spalte in einer separaten Zeile ein, gefolgt durch die Operandeneinträge in den nachfolgenden Zeilen.

Eine Zeichenfolge wird in jedem Zyklus um ein Zeichen gedreht:

LD      stRotate
RIGHT(  stRotate
LEN
SUB
     1
)
CONCAT(
 stRotate,
LEFT    1
)
ST
      stRotate

Funktionsbaustein-, Programmaufruf

Zeile 1:

oSpalte 1:

Operator CAL oder CALC

oSpalte 2:

Name der Funktionsbausteininstanz oder des Programms und öffnende Klammer (. Wenn keine Parameter folgen, wird hier die schließende Klammer ) eingegeben.

Nachfolgende Zeilen:

oSpalte 1:

Parametername, gefolgt von:

o:= für Eingangsparameter

o=> für Ausgangsparameter

oSpalte 2:

Parameterwert, gefolgt von einem Komma ,, wenn weitere Parameter folgen.

Geben Sie die schließende Klammer ) nach dem letzten Parameter ein.

Gemäß der IEC-Norm sind komplexe Ausdrücke hier nicht zulässig. Weisen Sie derartige Konstrukte dem Funktionsbaustein bzw. dem Programm vor dessen Aufruf zu.

CAL            POUToCall(
     iCounter:=1,
   iDecrement:=1000,
       wError:=wResult)

LD             POUToCall.bError,
ST             bErr

Funktionsaufruf

Zeile 1:

oSpalte 1:

LD

oSpalte 2:

Eingangsvariable

Zeile 2:

oSpalte 1:

Funktionsname

oSpalte 2:

Weitere Eingangsparameter, jeweils getrennt durch ein Komma.

Der Rückgabewert wird in den Akkumulator geschrieben.

Zeile 3:

oSpalte 1:

ST

oSpalte 2:

Variable, in die der Rückgabewert geschrieben wird.

LD          X7
GeomAverage 25
ST          Ave

Aktionsaufruf

Entspricht einem Funktionsbaustein- oder Programmaufruf.

Der Name der Aktion wird an den Namen der Funktionsbausteininstanz bzw. des Programms angehängt.

CAL          POU1.ResetAction

Sprung

oSpalte 1:

Operator JMP oder JMPC

oSpalte 2:

Name der Sprungmarke im Zielnetzwerk.

o Unbedingter Sprung:

Die vorangehende Anweisungsfolge muss mit einem der folgenden Befehle enden:

oST

oSTN

oS

oR

oCAL

oRET

oJMP

oBedingter Sprung:

Die Ausüfhrung des Sprungs ist vom geladenen Wert abhängig.

LD            BVar1
JMPC          Label1