Sprünge in Anweisungsliste AWL
In der Programmiersprache Anweisungsliste AWL stehen dem Programmierer die gleichen Sprungoperationen zur Verfügung wie in FUP oder KOP. Allerdings haben die Sprungoperationen in Anweisungsliste AWL andere Bezeichnungen.
Genauso wie in FUP oder KOP gibt die Sprungmarke das Ziel an zu dem absolut oder bedingt gesprungen werden soll. Die Sprungmarke ist der Operand einer Sprungoperation und besteht aus maximal vier Zeichen. Diese vier Zeichen können sich aus Buchstaben, Zahlen und dem Unterstrich zusammensetzen.
Hier gilt genauso wie in FUP oder KOP das das erste Zeichen einer Sprungmarke ein Buchstabe sein muss.
Die nachfolgende Tabelle zeigt eine Übersicht aller in Anweisungsliste AWL möglichen Sprungoperationen aufgeteilt nach ihrer Abhängigkeit und der Art des Sprunges mit seiner jeweiligen Bedeutung.
Sprungoperation in AWL | Erklärung der Sprungbedingung |
---|---|
SPA | Die Operation SPA verlangt einen absoluten unbedingten Sprung ohne irgendwelche Bedingungen. SPA ist nicht abhängig vom Signalwert eines Bits im Statuswort oder vom VKE der vorhergehenden Verknüpfung. Das Anwenderprogramm wird an der angegebenen Sprungmarke weiter abgearbeitet. Gesprungen werden kann vorwärts und rückwärts, das Sprungziel muss allerdings im gleichen Baustein liegen wie der Aufruf der Sprungoperation SPA und darf nur einmal vorhanden sein. |
SPL | Mit der Sprungoperation Sprungleiste SPL können Sprünge programmiert werden die auf Programmnummern beruhen. Das Anwenderprogramm besteht also aus mehreren Programmteilen die durchnummeriert sind, also z.B. Anwenderprogramm "Tank leeren" mit den Programmteil 0, Programmteil 1, Programmteil 2 usw. Die maximale Anzahl der Einträge in der Zielsprungleiste beträgt 255. Die Zielsprungleiste steht im Anwenderprogramm unmittelbar hinter der Sprungoperation SPL. Die Werte der Bits 0 bis 7 in AKKU1 bestimmen die Anzahl der Sprungziele (Bit 0 bis Bit 7 - max. 255 Sprungziele). Die Zielsprungleiste enthält nur Sprungoperationen SPA. Andere Sprungoperationen innerhalb der Sprungleiste sind nicht möglich. Steht in den Bits 0 bis 7 von AKKU1 ein Wert, der kleiner ist als die Anzahl der Sprungziele, die zwischen der Operation SPL und der bei SPL angegebenen Sprungmarke ist, springt das Programm auf den jeweiligen Sprung mit der zugehörigen Nummer (Bei einem Wert von "0" in AKKU1 wird auf die erste Operation SPA in der Sprungleiste gesprungen, bei einem Wert von "2", "00000010" in AKKU1 wird auf die dritte Operation SPA in der Sprungleiste gesprungen. Ist der Wert in AKKU1 größer als die Anzahl der Sprungziele in der Sprungleiste, dann wird die Sprungleiste übersprungen und die Programmabarbeitung an der Stelle fortgesetzt die in der Befehlszeile SPL steht (erste Anweisung nach dem letzten Sprungziel in der Sprungleiste). |
SPB | Die bedingte Sprungoperation SPB führt einen Sprung nur dann aus wenn das VKE den Wert "1" führt, springe wenn VKE = "1". Gesprungen wird an die hinter SPB angegebene Sprungmarke, das Ziel des Sprunges. Der Ablauf des Anwenderprogrammes wird mit der ersten Anweisung nach der Sprungmarke fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPB steht. Ein Wert des VKE von "0" hat keinen Einfluss auf die Ausführung der Sprungoperation SPB. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPBN | Die bedingte Sprungoperation SPBN führt einen Sprung nur dann aus wenn das VKE den Wert "0" führt, springe wenn VKE = "0". Gesprungen wird an die hinter SPBN angegebene Sprungmarke, das Ziel des Sprunges. Der Ablauf des Anwenderprogrammes wird mit der ersten Anweisung nach der Sprungmarke fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPBN steht. Ein Wert des VKE von "1" hat keinen Einfluss auf die Ausführung der Sprungoperation SPBN. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPBB | Die bedingte Sprungoperation SPBB führt einen Sprung nur dann aus wenn das VKE den Wert "1" führt, springe wenn VKE = "1" und kopiere das VKE ins BIE . Bei der Sprungoperation SPBB wird außerdem noch unabhängig vom Verknüpfungsergebnis das VKE in das BIE-Bit kopiert. Gesprungen wird an die hinter SPBB angegebene Sprungmarke, das Ziel des Sprunges. Der Ablauf des Anwenderprogrammes wird mit der ersten Anweisung nach der Sprungmarke fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPBB steht. Ein Wert des VKE von "0" hat keinen Einfluss auf die Ausführung der Sprungoperation SPBB. Das VKE wird auf "1" gesetzt und das Anwenderprogramm wird mit der nächst folgenden Anweisung fortgesetzt. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPBNB | Die bedingte Sprungoperation SPBNB führt einen Sprung nur dann aus wenn das VKE den Wert "0" führt, springe wenn VKE = "0" und kopiere das VKE ins BIE . Bei der Sprungoperation SPBNB wird außerdem noch unabhängig vom Verknüpfungsergebnis das VKE in das BIE-Bit kopiert. Gesprungen wird an die hinter SPBNB angegebene Sprungmarke, das Ziel des Sprunges. Der Ablauf des Anwenderprogrammes wird mit der ersten Anweisung nach der Sprungmarke fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPBNB steht. Ein Wert des VKE von "1" hat keinen Einfluss auf die Ausführung der Sprungoperation SPBNB. Das VKE wird auf "1" gesetzt und das Anwenderprogramm wird mit der nächst folgenden Anweisung fortgesetzt. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPBI | Hat das Statusbit BIE des Statuswortes den Signalzustand "1", dann unterbricht die Sprungoperation SPBI das ablaufende Anwenderprogramm an der programmierten Stelle und springt zur programmierten Sprungmarke, springe wenn BIE = "1". Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPBI steht. Hat das Statusbit den Signalzustand "0", dann bleibt die Sprungoperation unbeachtet. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPBIN | Hat das Statusbit BIE des Statuswortes den Signalzustand "0", dann unterbricht die Sprungoperation SPBIN das ablaufende Anwenderprogramm an der programmierten Stelle und springt zur programmierten Sprungmarke, springe wenn BIE = "0". Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPBIN steht. Hat das Statusbit den Signalzustand "1", dann bleibt die Sprungoperation unbeachtet. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPO | Hat das Statusbit OV den Signalzustand "1", dann unterbricht die Sprungoperation SPO das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Überlauf OV = "1". Dieser Fall tritt ein wenn bei einer arithmetischen Operation der zulässige Bereich überschritten wird, z.B. Addition zweier Integerzahlen mit dem Ergebnis Doppelinteger. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPO steht. Wurde eine kombinierte arithmetische Operation programmiert und soll ein Überlauf der kompletten arithmetischen Operation ausgewertet werden, so muss die Sprungoperation SPS verwendet werden. Bei der Verwendung der Sprungoperation SPO muss sichergestellt sein, das das Ergebnis der arithmetischen Operationen im zulässigen Bereich liegt. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPS | Hat das Statusbit OS den Signalzustand "1", dann unterbricht die Sprungoperation SPS das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei speicherndem Überlauf OS = "1". Bei zusammengesetzten arithmetischen Operationen wie z.B. INT1 • INT2 • INT3 - INT4 wertet die Sprungoperation SPS, wenn sie am Ende der Rechenoperation steht, die komplette Rechenoperation über das Statusbit OS aus. Die Sprungoperation wird ausgeführt, wenn eine der vorhergehenden Rechenoperationen einen Überlauf erzeugt. Die Sprungoperation SPO hingegen würde nur die Rechenoperation auswerten und bei Überlauf springen, hinter der sie im Anwenderprogramm geschrieben steht. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPS steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPZ | Haben die Statusbits A0 und A1 (Anzeigebits) des Statuswortes den Signalzustand "0", dann unterbricht die Sprungoperation SPZ das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis = "0", A0 = "0" und A1 = "0". Der Zustand Ergebnis = "0", A0 = "0" und A1 = "0" tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPZ ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPZ steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPP | Hat das Statusbit A0 den Signalzustand "0" und das Statusbit A1 den Signalzustand "1", dann unterbricht die Sprungoperation SPP das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis > "0", A0 = "0" und A1 = "1". Der Zustand Ergebnis > "0", A0 = "0" und A1 = "1", der Inhalt des Akku1 ist größer als Null, tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPP ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPP steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPM | Hat das Statusbit A0 den Signalzustand "1" und das Statusbit A1 den Signalzustand "0", dann unterbricht die Sprungoperation SPM das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis < "0", A0 = "1" und A1 = "0". Der Zustand Ergebnis < "0", A0 = "1" und A1 = "0", der Inhalt des Akku1 ist kleiner als Null, tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPM ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPM steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPN | Wird ein Ergebnis von den Anzeigebits A0 und A1 angezeigt, das ungleich "0" ist, dann unterbricht die Sprungoperation SPM das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis <> "0". Ein Ergebnis <> "0" wird dann angezeigt, wenn die Anzeigebits entweder den Zustand A0 = "0" / A1 = "1" oder A0 = "1" / A1 = "0" führen. Haben die beiden Anzeigebits den Signalzustand von A0 = "1" / A1 = "1", dann handelt es sich um eine unzulässige Operation die mit der Sprungoperation SPU ausgewertet wird. Der Zustand Ergebnis <> "0", der Inhalt des Akku1 ist ungleich Null / nicht Null, tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPN ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPN steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPMZ | Wird ein Ergebnis von den Anzeigebits A0 und A1 angezeigt, das kleiner oder gleich "0" ist, dann unterbricht die Sprungoperation SPMZ das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis <= "0". Ein Ergebnis <= "0" wird dann angezeigt, wenn die Anzeigebits entweder den Zustand A0 = "0" / A1 = "0" oder A0 = "1" / A1 = "0" führen. Der Zustand Ergebnis <= "0", der Inhalt des Akku1 ist kleiner als Null / gleich Null, tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPMZ ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPMZ steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPPZ | Wird ein Ergebnis von den Anzeigebits A0 und A1 angezeigt, das größer oder gleich "0" ist, dann unterbricht die Sprungoperation SPPZ das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei Ergebnis >= "0". Ein Ergebnis >= "0" wird dann angezeigt, wenn die Anzeigebits entweder den Zustand A0 = "0" / A1 = "0" oder A0 = "0" / A1 = "1" führen. Der Zustand Ergebnis >= "0", der Inhalt des Akku1 ist größer als Null / gleich Null, tritt bei arithmetischen Operationen auf und kann mit der Sprungoperation SPPZ ausgewertet werden. Das Anwenderprogramm wird dann mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPPZ steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
SPU | Hat das Statusbit A0 den Signalzustand "1" und das Statusbit A1 den Signalzustand "1", dann unterbricht die Sprungoperation SPU das ablaufende Anwenderprogramm und springt zur programmierten Sprungmarke, springe bei unzulässiger Operation bzw. ungültigem Ergebnis.. Die Statusbits A0 und A1 werden auf den Signalzustand "1" gesetzt bei einer Division durch Null, bei er Verwendung von unzulässigen Operationen und bei einem ungültigen Ergebnis beim Vergleichen von Gleitpunktzahlen unter Verwendung eines ungültigen Formates. Das Anwenderprogramm wird nach dem Sprung mit der nächsten folgenden Anweisung fortgesetzt. Gesprungen werden kann sowohl vorwärts als auch rückwärts, allerdings nur innerhalb des Bausteins in dem der Sprungbefehl SPU steht. Jedes Sprungziel darf nur einmal innerhalb des Bausteins, in dem die Sprungoperation programmiert ist, vorhanden sein. |
LOOP | Die Programmierung von Programmschleifen wird durch die Verwendung der Sprungoperation LOOP vereinfacht. Es wird vor dem Beginn der Schleife eine vorzeichenlose 16 Bit Ganzzahl in den AKKU1 geladen. Die Sprungoperation LOOP wertet von dieser geladenen Ganzzahl die Bits 0 bis 15 aus. Der Wert dieser 16 Bits ergibt die Anzahl der Programmdurchläufe in der Schleife (im Bereich zwischen 0 und 65 535). Bei jeder Bearbeitung der Sprungoperation LOOP wird der Wert der Ganzzahl in AKKU1 um den Wert 1 verringert (dekrementiert). Die Programmschleife wird solange wiederholt, wie der Wert in AKKU1 verschieden von "0" ist. Beim Erreichen des Wertes "0" wird das Anwenderprogramm mit der nächsten folgenden Anweisung nach der Sprungoperation LOOP weiter abgearbeitet. |