Modifizierer und Operatoren in AWL
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.
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.
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
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 oOption 2: LD 2 |
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 |
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( |
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 |
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 |