Sie sind auf Seite 1von 21

Einführung

2.1 Struktur von Anwenderprogrammen

Codebausteine Ein Anwenderprogramm besteht aus Codebausteinen und Datenbausteinen.


und Zu den Codebausteinen gehören alle Bausteine mit einem Anweisungsungs-
Datenbausteine teil, also Organisationsbausteine, Funktionsbausteine und Funktionen.

Organisations- Organisationsbausteine (OBs) stellen die Schnittstelle zwischen Betriebs-


bausteine system und Anwenderprogramm dar. Verschiedene Organisationsbausteine
übernehmen dabei ganz bestimmte Aufgaben. Das AWL-Anwenderpogramm
für Ihre S7-CPU stellen Sie aus den Organisationsbausteinen (OBs)
zusammen, die Sie für Ihre Automatisierungslösung benötigen. Im einfach-
sten Fall gehören dazu Organisationsbausteine für
S Anlauf (OB 100, OB 101)
S zyklisches Hauptprogramm (OB1) und
S Fehlerbearbeitung (OB 80 ... OB 87, OB 121, OB 122), falls Ihre CPU
im Fehlerfall nicht in STOP gehen soll.
Darüberhinaus gibt es noch weitere Organisationsbausteine, mit deren Hilfe
Sie Alarme der CPU oder des Prozesses bearbeiten können.
Welche Aufgaben jedem Organisationsbaustein zugeordnet sind und welche
Startinformation das CPU-Betriebssystem mitliefert, entnehmen Sie bitte
dem Referenzhandbuch /235/.

Funktionen/ Jeden Organisationsbaustein können Sie als strukturiertes Progamm


Funktions- programmieren, indem Sie Funktionen (FC) und Funktionsbausteine (FB)
bausteine erstellen und diese im Anweisungsteil aufrufen. Beim Bausteinaufruf müssen
Sie die deklarierten Parameter entsprechend mit Daten versorgen.
S Ein Funktionsbaustein (FB) ist ein Codebaustein ”mit Gedächtnis”. Als
Gedächtnis dient dabei ein dem FB zugeordneter Instanz-Datenbaustein,
in dem die Aktualparameter und statischen Daten des Funktionsbausteins
gespeichert werden.
S Eine Funktion (FC) ist ein Codebaustein ”ohne Gedächtnis”. Die Aus-
gangsparameter enthalten nach der Bearbeitung der FC die berechneten
Funktionswerte. Die weitere Verwendung und Speicherung der Aktual-
parameter nach dem Aufruf einer FC liegt in der Hand des Anwenders.

Daten Das Betriebssystem stellt Ihnen folgende Daten bereit:


S Peripherieein- und ausgänge
S Prozeßabbild der Ein- und Ausgänge
S Merker
S Zeiten
S Zähler

AWL für S7-300/400


2-2 C79000-G7000-C505-02
Einführung

Zusätzlich können Sie sich eigene Daten definieren:


S Globaldaten, die für das gesamte Anwenderprogramm Gültigkeit haben,
definieren Sie in Datenbausteinen.
S Statische Variablen sind jeweils in dem FB gültig, in dem Sie definiert
sind. Bei jedem FB-Aufruf wird ein Instanz-DB angegeben, der neben
allen Parametern die statischen Daten enthält. Sind Multiinstanzen
definiert, sind deren Instanzdaten inklusive deren statischer Daten in dem
Instanz-DB eingebettet.
S Temporäre Daten definieren Sie bei der Erstellung von Codebausteinen.
Sie belegen nur während der Bearbeitung des Codebausteins Speicher-
platz im Stack.

Datenbausteine Datenbausteine speichern die Daten des Anwenderprogramms. Bei den


Datenbausteinen wird zwischen Global-Datenbausteinen und Instanz-Daten-
bausteinen unterschieden.
S Auf Global-Datenbausteine können Sie von jeder Stelle des Anwender-
programms zugreifen.
S Instanz-Datenbausteine sind einem Funktionsbaustein zugeordnet und
enthalten neben den Daten des FBs auch die Daten eventuell definierter
Multiinstanzen. Deshalb sollten Sie auch nur im Zusammenhang mit die-
sem Funktionsbaustein auf den Instanz-Datenbaustein zugreifen.

Weitere Eine Einführung in die Methodik der Programmierung erhalten Sie im


Informationen Programmierhandbuch /234/.

AWL für S7-300/400


C79000-G7000-C505-02 2-3
Aufbau und Elemente von AWL

Tabelle 8-11 listet die maximalen Adreßbereiche der verschiedenen Speicher-


bereiche auf. Die Adreßbereiche für Ihre CPU entnehmen Sie bitte dem
entsprechenden technischen Daten der CPU. Die Funktion der Speicher-
bereiche ist in Tabelle 8-10 erklärt.

Tabelle 8-11 Speicherbereiche und ihre Adreßbereiche

Bereichszugriff über
Bereichsname Maximaler Adreßbereich
Einheiten der folgenden Größen: Abk.
Prozeßabbild der Eingang E 0.0 bis 65 535.7
Eingänge Eingangsbyte EB 0 bis 65 535
Eingangswort EW 0 bis 65 534
Eingangsdoppelwort ED 0 bis 65 532
Prozeßabbild der Ausgang A 0.0 bis 65 535.7
Ausgänge Ausgangsbyte AB 0 bis 65 535
Ausgangswort AW 0 bis 65 534
Ausgangsdoppelwort AD 0 bis 65 532
Merker Merker M 0.0 bis 65535.7
Merkerbyte MB 0 bis 65535
Merkerwort MW 0 bis 65534
Merkerdoppelwort MD 0 bis 65532
Peripheriebereich Peripherieeingangsbyte PEB 0 bis 65 535
Eingänge: Peripherieeingangswort PEW 0 bis 65 534
Externe Eingänge Peripherieeingangs-Doppelwort PED 0 bis 65 532
Peripheriebereich Peripherieausgangsbyte PAB 0 bis 65 535
Ausgänge: Peripherieausgangswort PAW 0 bis 65 534
Externe Ausgänge Peripherieausgangs-Doppelwort PAD 0 bis 65 532
Zeit Zeit T 0 bis 65 535
Zähler Zähler Z 0 bis 65 535
Datenbaustein Datenbaustein, geöffnet mit der Anweisung
”AUF DB”:
Datenbit im Datenbaustein DBX 0.0 bis 65 535.7
Datenbyte DBB 0 bis 65 535
Datenwort DBW 0 bis 65 534
Datendoppelwort DBD 0 bis 65 532
Datenbaustein, geöffnet mit der Anweisung
”AUF DI”:
Datenbit im Instanz-DB DIX 0.0 bis 65 535.7
Datenbyte DIB 0 bis 65 535
Datenwort DIW 0 bis 65 534
Datendoppelwort DID 0 bis 65 532
Lokaldaten Lokaldatenbit L 0.0 bis 65 535.7
Lokaldatenbyte LB 0 bis 65 535
Lokaldatenwort LW 0 bis 65 534
Lokaldaten-Doppelwort LD 0 bis 65 532

AWL für S7-300/400


C79000-G7000-C505-02 8-9
Bitverknüpfungsoperationen

Öffner Bild 11-2 zeigt die Darstellung eines Öffner-Relais-Schaltkreises mit einem
Kontakt zwischen einer Stromschiene und einer Spule. Im Normalzustand ist
der Kontakt geschlossen. Wird der Kontakt nicht aktiviert, dann bleibt er
geschlossen. Der Signalzustand des geschlossenen Kontakts ist ”0” (nicht
aktiviert). Bleibt der Kontakt geschlossen, dann kann der Strom von der
Stromschiene durch den Kontakt fließen, und die Spule am Ende des Schalt-
kreises führt Strom. Beim Aktivieren des Kontakts (der Signalzustand des
Kontakts ist ”1”) wird der Kontakt geöffnet und der Signalfluß zur Spule
unterbrochen.

Stromschiene

Öffner
E 1.1

Spule A 4.0

Bild 11-2 Relais-Schaltkreis mit Öffner

Mit der Operation UN (UND NICHT) oder ON (ODER NICHT) können Sie
den Signalzustand eines Öffners abfragen. Ist der Öffner geschlossen (E 1.1
= 0), ist das Abfrageergebnis ”1”, ist er geöffnet, ist das Abfrageergebnis ”0”.

Signalfluß in einer Bild 11-3 zeigt ein Beispiel mit einer Anweisungsliste, in der mit der Opera-
Reihenschaltung tion U (UND) zwei Schließer in Reihe geschaltet werden. Der Ausgang A 4.0
ist nur dann ”1” und damit die Spule stromführend, wenn beide Schließer den
Zustand ”1” (geschlossen) haben.

AWL-Programm Relais-Schaltplan

U E 1.0 E 1.0

U E 1.1 E 1.1

= A 4.0 A 4.0

Bild 11-3 Reihenschaltung von Kontakten mit der Operation UND

AWL für S7-300/400


C79000-G7000-C505-02 11-7
Bitverknüpfungsoperationen

11.7 Operationen Setze und Rücksetze: S und R

Beschreibung Mit der Operation S (Setze) können Sie den Signalzustand eines
angesprochenen Bits auf ”1” setzen. (Informationen darüber, wie Sie mit der
Operation S einen angesprochenen Zähler auf einen bestimmten Wert setzen:
siehe Kapitel 13.2).
Mit der Operation R (Rücksetze) können Sie den Signalzustand eines
angesprochenen Bits auf ”0” rücksetzen. Die Operation R kann außerdem die
angesprochene Zeit oder einen angesprochenen Zähler auf ”0” rücksetzen
(siehe Kapitel 12.3 und 13.2). Die Operationen S und R schließen eine
Verknüpfungskette (siehe Kapitel 11.6).

Setzen eines Bits Die Operation S setzt das angesprochene Bit auf ”1”, wenn das
Verknüpfungsergebnis der vorherigen Anweisung ”1” beträgt und das Master
Control Relay (MCR) stromführend wird (d. h. sein Signalzustand ist ”1”).
Wenn das MCR nicht aktiviert wird (sein Signalzustand ist ”0”), wird das
angesprochene Bit nicht verändert. Die Operation S schließt eine
Verknüpfungskette ab.
Bild 11-9 zeigt, wie die Operation S den Signalzustand der von ihr
angesprochenen Spule A 4.0 auf ”1” hält, bis die Operation R den Signal-
zustand auf ”0” rücksetzt. Die Tatsache, daß der Signalzustand der
angesprochenen Spule auf ”1” bleibt, bis ihn eine Operation R auf ”0”
rücksetzt, verdeutlicht den statischen Charakter der Operation S.
Wenn im Relais-Schaltplan der Schließer an Eingang E 1.0 aktiviert wurde
(der Signalzustand wird ”1”), schließt sich der Kontakt. Der Strom fließt über
den Kontakt an E 1.0 und über den Öffner darunter und aktiviert dabei den
Ausgang A 4.0 (der Signalzustand von A 4.0 wird ”1”).
Wenn die Spule aktiviert wird, wird der Schließer an Ausgang A 4.0 gegen-
über von E 1.0 geschlossen. Danach bleibt die Spule an Ausgang A 4.0
aktiviert (Signalzustand ”1”), gleichgültig, ob der Kontakt an Eingang E 1.0
geöffnet oder geschlossen ist. Die Spule hält sich selbst unter Spannung.

Anweisungsliste Relais-Schaltplan
U E 1.0
S A 4.0 Stromschiene
U E 1.1
A 4.0 E 1.1
R A 4.0 E 1.0
Schließer

Signalzustandsdiagramm
1 Öffner
E 1.0 0
1
E 1.1 A 4.0
0 Spule
1
A 4.0 0

Bild 11-9 Statisches Setzen und Rücksetzen eines Bits

AWL für S7-300/400


C79000-G7000-C505-02 11-21
Zeitoperationen

12.2 Speicherbereiche und Komponenten einer Zeit

Speicherbereich Zeiten haben einen eigenen reservierten Speicherbereich in Ihrer CPU.


Dieser Speicherbereich reserviert ein 16-Bit-Wort für jeden Zeitoperanden.
Das Programmieren mit AWL unterstützt 256 Zeiten. Wieviele Zeitworte in
Ihren CPUs zur Verfügung stehen, entnehmen Sie bitte deren technischen
Daten.
Folgende Funktionen greifen auf den Speicherbereich der Zeiten zu:
S Zeitoperationen
S Aktualisieren der Timerwörter über Zeitimpulsgeber. Diese Funktion
Ihrer CPU im RUN-Zustand vermindert einen bestimmten Wert um je-
weils eine Einheit in einem Intervall, das von der Zeitbasis festgelegt
wurde, bis der Zeitwert gleich ”0” ist.

Zeitwert Die Bits 0 bis 9 des Timerworts enthalten den Zeitwert binär-codiert. Der
Zeitwert gibt eine Anzahl von Einheiten an. Das Aktualisieren der Zeit
vermindert den Zeitwert um jeweils eine Einheit in einem Intervall, das von
der Zeitbasis festgelegt wurde. Der Zeitwert wird solange vermindert, bis er
gleich ”0” ist. Sie können einen Zeitwert im dualen, hexadezimalen oder
binär-codierten Dezimalformat (BCD) in das niederwertige Wort von
AKKU 1 laden. Der Zeitbereich umfaßt 0 bis 9 990 Sekunden.
Mit der folgenden Syntax können Sie einen vordefinierten Zeitwert laden.
S L W#16#wxyz
– mit: w = Zeitbasis (d. h. Zeitintervall oder Auflösung)
– xyz = Zeitwert im BCD-Format
S L S5T#aH_bbM_ccS_dddMS
– mit: a = Stunden, bb = Minuten, cc = Sekunden und
ddd = Millisekunden.
– Die Zeitbasis wird automatisch gewählt und der Wert zur nächst-
niederen Zahl mit dieser Zeitbasis gerundet.
Sie können einen Zeitwert von max. 9 990 Sekunden bzw. 2H_46M_30S
eingeben.

AWL für S7-300/400


C79000-G7000-C505-02 12-3
Zeitoperationen

Zeitbasis Die Bits 12 und 13 des Timerworts enthalten die Zeitbasis binär-codiert. Die
Zeitbasis definiert das Intervall, in dem der Zeitwert um eine Einheit
vermindert wird. Die kleinste Zeitbasis beträgt 10 ms; die größte 10 s.

Tabelle 12-1 Zeitbasis und Binärcode

Zeitbasis Binärcode für Zeitbasis


10 ms 00
100 ms 01
1s 10
10 s 11

Da Zeitwerte nur in einem Zeitintervall gespeichert werden, werden Werte,


die keine genauen Vielfache des Zeitintervalls sind, abgeschnitten. Werte,
deren Auflösung für den gewünschten Bereich zu groß ist, werden
abgerundet, so daß der gewünschte Bereich erzielt wird, nicht jedoch die
gewünschte Auflösung. Tabelle 12-2 zeigt die möglichen Auflösungen und
die zugehörigen Bereiche.

Tabelle 12-2 Auflösung und Bereiche der Zeitbasis

Auflösung Zeitbasis
0,01 Sekunde 10MS bis 9S_990MS
0,1 Sekunde 100MS bis 1M_39S_900MS
1 Sekunde 1S bis 16M_39S
10 Sekunden 10S bis 2HR_46M_30S

Bit-Konfiguration Wird eine Zeit gestartet, so wird der Inhalt des AKKU 1 als Zeitwert
in AKKU 1 verwendet. Die Bits 0 bis 11 des AKKU1-L enthalten den Zeitwert im
binär-codierten Dezimalformat (BCD-Format: jede Gruppe von vier Bits
enthält den Binärcode für einen Dezimalwert). Die Bits 12 und 13 enthalten
die Zeitbasis im Binärcode (siehe Tabelle 12-1). Bild 12-2 zeigt den Inhalt
des AKKU1-L, nachdem Sie den Zeitwert 127 mit der Zeitbasis 1 Sekunde
geladen haben (siehe auch Kapitel 14.5).

15... ...8 7... ...0


x x 1 0 0 0 0 1 0 0 1 0 0 1 1 1

1 2 7

Zeitbasis Zeitwert im BCD-Format (0 bis 999)


1 Sekunde
Irrelevant: Diese Bits werden nicht beachtet, wenn die Zeit gestartet wird

Bild 12-2 Inhalt des AKKU1-L für den Zeitwert 127 mit der Zeitbasis eine Sekunde

AWL für S7-300/400


12-4 C79000-G7000-C505-02
Zeitoperationen

12.3 Laden, Starten, Rücksetzen und Freigeben einer Zeit

Beschreibung In Ihrem AWL-Programm können Sie mit drei Anweisungen die folgenden
Operationen auslösen:
S Abfragen eines Signalzustands auf ”0” oder ”1” (z. B. U E 2.1).
S Laden eines Zeitwerts und einer zugehörigen Zeitbasis (z. B. L EW0).
S Starten einer Zeit als:
– Impuls (SI, z. B. SI T 1)
– verlängerten Impuls (SV)
– Einschaltverzögerung (SE)
– speichernde Einschaltverzögerung (SS)
– Ausschaltverzögerung (SA)
In Ihrem AWL-Programm startet ein Wechsel im Verknüpfungsergebnis
(VKE) vor einer Startoperation die Zeit. Ein Wechsel im VKE von ”1” auf
”0” startet eine Zeit als Ausschaltverzögerung (SA); ein Wechsel von ”0” auf
”1” startet eine der anderen Möglichkeiten. Die programmierte Zeit und die
Operationen zum Start der Zeit müssen direkt auf die Verknüpfung folgen,
die die Bedingung für das Starten der Zeit liefert. Kapitel 12.4 gibt Beispiele
für die fünf möglichen Startoperationen für Zeiten.

Laden Das Laden eines Zeitwerts als Ganzzahl oder als BCD-Zahl ist in Kap. 14.4
und 14.5 beschrieben.

Startzeit Da die Zeit von einer eingestellten Zeit aus rückwärts gegen Null läuft,
müssen Sie die Zeit mit einer Startzeit versehen. Wenn Sie eine Zeit in Ihrem
Programm starten, übernimmt die CPU die Startzeit aus dem AKKU 1. Der
Zeitbereich reicht von 0 bis 9 990 Sekunden.

Beispiel für das Bild 12-3 zeigt ein Beispiel für das Starten einer Zeit als Impuls. Wechselt
Starten einer Zeit der Signalzustand an Eingang E 2.1 von ”0” auf ”1”, so wird die Zeit
gestartet. Bild 12-3 bezieht sich auf das folgende AWL-Programm:

AWL Erläuterung
U E 2.1 Frage Signalzustand an Eingang E 2.1 ab.
L S5T#00H02M23S00MS Lade Startzeit in AKKU 1.
SI T1 Starte Zeit T1 als Impuls.

Signalzustandsdiagramm:
1
E 2.1 0
Frage E 2.1 nach Wechsel 1
von ”0” auf ”1” ab. 0

Zeit wird mit der Startzeit gestartet, die in AKKU 1 angegeben ist.

Bild 12-3 Starten einer Zeit als Impuls

AWL für S7-300/400


C79000-G7000-C505-02 12-5
Zeitoperationen

Rücksetzen einer Eine Zeit setzen Sie mit der Operation R (Rücksetze) zurück. Die CPU setzt
Zeit eine Zeit zurück, wenn das Verknüpfungsergebnis unmittelbar vor der
Operation R in Ihrem Programm ”1” ist. Solange das VKE vor einer
Operation R ”1” beträgt, bildet eine Operation U, O oder X, die den
Signalzustand einer Zeit abfragt, das Ergebnis ”0” und eine Operation UN,
ON oder XN das Ergebnis ”1”.
Das Rücksetzen einer Zeit stoppt die aktuelle Zeitfunktion und setzt den Zeit-
wert auf ”0” zurück.

Freigabe einer Zeit Ein Wechsel im Verknüpfungsergebnis von ”0” auf ”1” vor einer
zum Wiederanlauf Freigabeoperation (FR) gibt eine Zeit frei. Dieser Wechsel im Signalzustand
ist immer nötig, um eine Zeit freizugeben. Die CPU führt die Operation FR
nur auf einer steigenden Signalflanke aus.
Zum Starten oder für die normale Funktion einer Zeit wird die Freigabe nicht
benötigt. Die Freigabe wird lediglich dazu verwendet, eine laufende Zeit
nachzutriggern, d. h. sie wieder anlaufen zu lassen. Dieser Wiederanlauf ist
nur dann möglich, wenn die Startoperation weiterhin mit dem VKE ”1”
bearbeitet wird.

AWL für S7-300/400


12-6 C79000-G7000-C505-02
Zeitoperationen

12.4 Beispiele für Zeiten

Einführung Das Programmieren mit der Anweisungsliste bietet Ihnen fünf verschiedene
Zeiten. Im folgenden AWL-Programm sind Beispiele für alle Zeiten
enthalten.

Zeit als Impuls: SI Die Bilder 12-4 und 12-5 geben Beispiele für eine Zeit als Impuls. Die
umrahmten Zahlen in den Bildern weisen auf die Erläuterungen hin, die sich
an Bild 12-4 anschließen. Die Bilder beziehen sich auf das folgende
AWL-Programm:

AWL Erläuterung
U E 2.0
FR T1 Freigabe der Zeit T1.
U E 2.1
L S5T#00H02M23S00MS
SI T1 Starte Zeit T1 als Impuls.
U E 2.2
R T1 Setze Zeit T1 zurück.
U T1
= A 4.0 Signalzustandsabfrage der Zeit T1.
L T1
T MW10
LC T1 Lade Zeit T1.
T MW12

VKE am Freigabeeingang E 2.0


 
VKE am Starteingang E 2.1
   
VKE am Rücksetzeingang E 2.2

Timerreaktion
t
Signalzustandsabfrage
am Timerausgang A 4.0 

Lade Zeit: L, LC

t = programmierte Startzeit

Bild 12-4 Beispiel für eine Zeit als Impuls, Teil 1

AWL für S7-300/400


C79000-G7000-C505-02 12-7
Zeitoperationen

Die folgende Liste beschreibt die Elemente der Bilder 12-4 und 12-5:
 Wechselt das VKE von ”0” auf ”1” am Starteingang, so startet dies
die Zeit. Die programmierte Zeit t beginnt dann abzulaufen.
 Liegt am Starteingang ein VKE von ”0” an, dann wird die Zeit
zurückgesetzt.
 Die Signalzustandsabfrage am Ausgang A 4.0 ergibt einen
Signalzustand von ”1” für die gesamte Dauer der Zeitoperation.
 Liegt am Rücksetzeingang ein VKE von ”1” an, dann wird die Zeit
zurückgesetzt. Solange ein Signalzustand von ”1” am Starteingang
anliegt, hat ein Wechsel im VKE von ”1” auf ”0” am
Rücksetzeingang keinerlei Einfluß auf die Zeit.
 Ein Wechsel im VKE von ”0” auf ”1” am Starteingang bei
gleichzeitigem Rücksetzsignal veranlaßt die Zeit, kurzzeitig zu
starten. Dann jedoch setzt sie sofort zurück aufgrund der Operation
Rücksetze, die im Programm direkt folgt (im Impulsdiagramm in
Bild 12-4 als Impulslinie dargestellt). Für diesen Impuls gibt es kein
Abfrageergebnis, vorausgesetzt, daß die Reihenfolge der
Operationen, wie sie oben abgebildet sind, eingehalten wird.
 Wechselt das VKE von ”0” auf ”1” am Freigabeeingang, während
die Zeit läuft, so läßt dies die Zeit wieder neu anlaufen. Die
programmierte Zeit wird als aktuelle Zeit für den Wiederanlauf
verwendet. Ein Wechsel des VKE von ”1” auf ”0” am
Freigabeeingang hat keinen Einfluß.

Wechselt das VKE von ”0” auf ”1” am Freigabeeingang, während
die Zeit nicht läuft und gleichzeitig noch immer ein VKE von ”1”
am Starteingang anliegt, wird die Zeit ebenfalls als Impuls mit der
programmierten Zeit gestartet.
Wechselt das VKE von ”0” auf ”1” am Freigabeeingang bei
gleichzeitigem VKE von ”0” am Starteingang, so hat dies keinen
Einfluß auf die Zeit.



VKE am Freigabeeingang E 2.0

VKE am Starteingang E 2.1

VKE am Rücksetzeingang E 2.2

Timerreaktion
t t
Signalzustandsabfrage
am Timerausgang A 4.0

Lade Zeit: L, LC

t = programmierte Startzeit

Bild 12-5 Beispiel für eine Zeit als Impuls, Teil 2

AWL für S7-300/400


12-8 C79000-G7000-C505-02
Zeitoperationen

Zeit als verlän- Die Bilder 12-6 und 12-7 geben Beispiele für eine Zeit als verlängerten
gerter Impuls: SV Impuls. Die umrahmten Zahlen in den Bildern weisen auf die Erläuterungen
hin, die sich an Bild 12-6 anschließen. Die Bilder beziehen sich auf das
folgende AWL-Programm:

AWL Erläuterung
U E 2.0
FR T1 Freigabe der Zeit T1.
U E 2.1
L S5T#00H02M23S00MS
SV T1 Starte Zeit T1 als verlängerten Impuls.
U E 2.2
R T1 Setze Zeit T1 zurück.
U T1
= A 4.0 Signalzustandsabfrage der Zeit T1.
L T1 Lade Zeit T1 binär codiert
T MW10
LC T1 Lade Zeit T1 BCD-codiert.
T MW12

VKE am Frei- E 2.0


gabeeingang      
VKE am E 2.1
Starteingang  
VKE am
E 2.2
Rücksetz-
eingang
Timerreaktion
Signalzu- t
standsabfrage 
A 4.0
am Timer-
ausgang
Lade Zeit: L, LC

t = programmierte Startzeit

Bild 12-6 Beispiel für eine Zeit als verlängerten Impuls, Teil 1

AWL für S7-300/400


C79000-G7000-C505-02 12-9
Zeitoperationen

12.6 Auswahl der richtigen Zeit

Bild 12-14 bietet einen Überblick über die fünf verschiedenen Zeiten, die in
Kapitel 12.4 beschrieben wurden. Diese Übersicht soll Ihnen helfen, die für
Ihre Zwecke adäquate Zeit auszuwählen.

Eingangssignal E 2.1

Ausgangssignal A 4.0 SI:


(Zeit als Impuls) t
Die maximale Zeit, in der das Ausgangssignal auf ”1” bleibt,
ist gleich dem programmierten Zeitwert t. Das
Ausgangssignal bleibt für eine kürzere Zeit auf ”1”, wenn das
Eingangssignal auf ”0” wechselt.

Ausgangssignal A 4.0 SV:


(Zeit als verlän- t
gerter Impuls)
Das Ausgangssignal bleibt für die programmierte Zeit auf ”1”,
unabhängig davon, wie lange das Eingangssignal auf ”1”
bleibt.

Ausgangssignal A 4.0 SE:


(Zeit als Ein- t
schaltverzögerung)
Das Ausgangssignal wechselt nur von ”0” auf ”1”, wenn die
programmierte Zeit abgelaufen ist, und das Eingangssignal
noch immer ”1” beträgt.

Ausgangssignal A 4.0 SS:


(Zeit als speich. t
Einschaltverzögerung)
Das Ausgangssignal wechselt von ”0” auf ”1”, wenn die
programmierte Zeit abgelaufen ist, unabhängig davon, wie
lange das Eingangssignal auf ”1” bleibt.

Ausgangssignal A 4.0 SA:


(Zeit als Aus- t
schaltverzögerung)
Das Ausgangssignal wechselt nur von ”0” auf ”1”, wenn das
Eingangssignal von ”0” auf ”1” wechselt. Das Ausgangssignal
bleibt auf ”1”. Die Zeit wird gestartet, wenn das Eingangssignal
von ”0” auf ”1” wechselt.

Bild 12-14 Auswahl der richtigen Zeit

AWL für S7-300/400


12-18 C79000-G7000-C505-02
Festpunktarithmetik

15.1 Grundrechenoperationen

Beschreibung Tabelle 15-1 listet die AWL-Operationen auf, mit denen Sie Ganzzahlen
(16 Bit und 32 Bit) addieren, subtrahieren, multiplizieren oder dividieren
können.

Tabelle 15-1 Grundrechenoperationen für Ganzzahlen (16 Bit und 32 Bit)

Operation Größe in Funktion


Bit
+I 16 Addiert den Inhalt des niederwertigen Worts der AKKUs 1
und 2 und speichert das Ergebnis im niederwertigen Wort
von AKKU 1.
-I 16 Subtrahiert den Inhalt des niederwertigen Worts von
AKKU 1 vom Inhalt des niederwertigen Worts von AKKU
2 und speichert das Ergebnis im niederwertigen Wort von
AKKU 1.
I 16 Multipliziert den Inhalt der niederwertigen Wörter der
AKKUs 1 und 2 und speichert das Ergebnis (32 Bit) in
AKKU 1.
/I 16 Dividiert den Inhalt des niederwertigen Worts von AKKU 2
durch den Inhalt des niederwertigen Worts von AKKU 1.
Das Ergebnis wird im niederwertigen Wort von AKKU 1
gespeichert. Der Divisionsrest wird im höherwertigen Wort
von AKKU 1 gespeichert.
+D 32 Addiert den Inhalt der AKKUs 1 und 2 und speichert das
Ergebnis in AKKU 1.
-D 32 Subtrahiert den Inhalt von AKKU 1 vom Inhalt von
AKKU 2 und speichert das Ergebnis in AKKU 1.
D 32 Multipliziert AKKU 1 mit dem Inhalt von AKKU 2 und
speichert das Ergebnis in AKKU 1.
/D 32 Dividiert den Inhalt von AKKU 2 durch den Inhalt von
AKKU 1 und speichert den Quotienten in AKKU 1.
MOD 32 Dividiert den Inhalt von AKKU 2 durch den Inhalt von
AKKU 1 und speichert den Divisionsrest als Ergebnis in
AKKU 1.

Beziehung Die Funktionsbeschreibungen in Tabelle 15-1 zeigen, daß die arithmetischen


zwischen Operationen den Inhalt der AKKUs 1 und 2 miteinander verknüpfen. Das
arithmetischen Ergebnis wird in AKKU 1 abgelegt. Der alte Inhalt von AKKU 1 wird in
Operationen und AKKU 2 geschoben.
Akkumulatoren
Bei CPUs mit 4 AKKUs werden anschließend die Inhalte von AKKU 3 in
AKKU 2 und von AKKU 4 in AKKU 3 kopiert. Der alte Inhalt von AKKU 4
bleibt unverändert.

AWL für S7-300/400


15-2 C79000-G7000-C505-02
Festpunktarithmetik

Verknüpfen zweier Die Operation Addiere AKKU 1 und 2 als Ganzzahl (16 Bit) (+I) weist die
Ganzzahlen CPU an, den Inhalt des niederwertigen Worts von AKKU 1 und des
(16 Bit) bei CPUs niederwertigen Worts von AKKU 2 zu addieren und das Ergebnis im
mit 2 AKKUs niederwertigen Wort von AKKU 1 zu speichern. Diese Operation
überschreibt den alten Inhalt des niederwertigen Worts von AKKU 1. Der
alte Inhalt von AKKU 2 und das höherwertige Wort von AKKU 1 bleiben
unverändert (siehe Bild 15-1). Ein Programmbeispiel schließt sich an Bild
15-2 an.

Akkumulator-Inhalt vor Akkumulator-Inhalt nach


arithmetischer Operation arithmetischer Operation
AKKU 2 AKKU 2
31 16 15 0
IV III IV III

AKKU 1 +I AKKU 1
31 16 15 0
II I II III + I

Bild 15-1 Addieren zweier Ganzzahlen

Verknüpfen zweier Die Operation Addiere AKKU 1 und 2 als Ganzzahl (16 Bit) (+I) weist die
Ganzzahlen CPU an, den Inhalt des niederwertigen Worts von AKKU 1 und des nieder-
(16 Bit) bei CPUs wertigen Worts von AKKU 2 zu addieren und das Ergebnis im nieder-
mit 4 AKKUs wertigen Wort von AKKU 1 zu speichern. Diese Operation überschreibt den
alten Inhalt des niederwertigen Worts von AKKU 1. Anschließend werden
die Inhalte von AKKU 3 in AKKU 2 und von AKKU 4 in AKKU 3 kopiert.
AKKU 4 und das höherwertige Wort von AKKU 1 bleiben unverändert (siehe
Bild 15-2).

Akkumulator-Inhalt vor Akkumulator-Inhalt nach


arithmetischer Operation arithmetischer Operation

AKKU 4 AKKU 4
31 16 15 0
VIII VII VIII VII

AKKU 3 AKKU 3
31 16 15 0
VI V VIII VII

AKKU 2 AKKU 2
31 16 15 0
IV III VI V

AKKU 1 +I AKKU 1
31 16 15 0
II I II III + I

Bild 15-2 Addieren zweier Ganzzahlen bei CPUs mit 4 AKKUs

AWL für S7-300/400


C79000-G7000-C505-02 15-3
Festpunktarithmetik

AWL Erläuterung
L MW10 Lade den Wert aus Merkerwort MW10 in AKKU 1.
L DBW12 Lade den Wert aus Datenwort DBW12 in AKKU 1.
Der alte Inhalt von AKKU 1 wird in AKKU 2 geschoben.
+I Die CPU wertet den Inhalt der niederwertigen Wörter der AKKUs 1
und 2 als Ganzzahlen (16 Bit) aus, addiert sie und speichert
das Ergebnis im niederwertigen Wort von
AKKU 1.
T DBW14 Transferiere den Inhalt des niederwertigen Worts von
AKKU 1 (das Ergebnis) in das Datenwort DBW14.

Auswerten der Bits Die arithmetischen Operationen beeinflussen die folgenden Bits des Status-
im Statuswort worts:
S A1 und A0
S OV
S OS

Ergebnis gültig Ein Strich (-) bei einem der in der Tabelle aufgeführten Bits bedeutet, daß
dieses Bit nicht vom Ergebnis der arithmetischen Operation beeinflußt wird.
Mit den Operationen aus Tabelle 15-5 können Sie diese Bits des Statusworts
auswerten.

Tabelle 15-2 Signalzustand der Bits im Statuswort: Rechenergebnis innerhalb des


gültigen Bereichs

Gültiger
g Bereich für das Ergebnis
g bei Bits des Statusworts
Ganzzahlen (16 und 32 Bit) A1 A0 OV OS
0 (Null) 0 0 0 -
16 Bit: -32 768 v Ergebnis t 0 (negative Zahl)
32 Bit: -2 147 483 648 v Ergebnis t 0 (negative 0 1 0 -
Zahl)
16 Bit: 32 767 w Ergebnis u0 (positive Zahl)
32 Bit: 2 147 483 647 w Ergebnis u0 (positive 1 0 0 -
Zahl)

Tabelle 15-3 Signalzustand der Bits im Statuswort: Rechenergebnis außerhalb des


gültigen Bereichs
Ergebnis Ungültiger
g g Bereich für das Ergebnis
g bei Bits des Statusworts
ungültig Ganzzahlen (16 und 32 Bit) A1 A0 OV OS
16 Bit: Ergebnis u 32 767 (positive Zahl)
1 0 1 1
32 Bit: Ergebnis u 2 147 483 647 (positive Zahl)
16 Bit: Ergebnis t -32 768 (negative Zahl)
0 1 1 1
32 Bit: Ergebnis t -2 147 483 648 (negative Zahl)

AWL für S7-300/400


15-4 C79000-G7000-C505-02
Festpunktarithmetik

Tabelle 15-4 Signalzustand der Bits im Statuswort: arithmetische Operationen mit


Ganzzahlen (32 Bit) +D, /D und MOD
Bits des Statusworts
Operation
A1 A0 OV OS
+D: Ergebnis = -4 294 967 296 0 0 1 1
/D oder MOD: Division durch 0 1 1 1 1

Tabelle 15-5 Operationen, die die Bits A1, A0, OV und OS auswerten

Operation Verweis auf Bit im Bits im Statuswort, Kapitel in


Statuswort oder die ausgewertet wer- diesem
Sprungmarke den (mit X markiert) Handbuch
U,O,X,UN,ON,XN >0, <0, <>0, >=0, <=0, A1, A0, OV, OS 11.3
==0, UO, OV, OS
SPO <Sprungmarke> OV 22.4
SPS <Sprungmarke> OS 22.4
SPU <Sprungmarke> A1 und A0 22.5
SPZ <Sprungmarke> A1 und A0 22.5
SPN <Sprungmarke> A1 und A0 22.5
SPP <Sprungmarke> A1 und A0 22.5
SPM <Sprungmarke> A1 und A0 22.5
SPMZ <Sprungmarke> A1 und A0 22.5
SPPZ <Sprungmarke> A1 und A0 22.5

AWL für S7-300/400


C79000-G7000-C505-02 15-5
Festpunktarithmetik

15.2 Addieren einer Ganzzahl zu AKKU 1

Addieren von Mit der Operation Addiere Ganzzahl-Konstante können Sie eine
Ganzzahl- Ganzzahl-Konstante zum Inhalt des niederwertigen Worts von AKKU 1
Konstanten (8 Bit, addieren. Tabelle 15-6 listet die Möglichkeiten auf. Diese Operationen
16 Bit und 32 Bit) beeinflussen die Bits im Statuswort nicht.

Tabelle 15-6 Addieren einer Ganzzahl zu AKKU 1

Operation Operand Funktion


+ + Ganzzahl (16 Bit) Addiert eine 16-Bit-Ganzzahl-Konstante zum Inhalt des
niederwertigen Worts von AKKU 1. Das Ergebnis wird in
AKKU 1 gespeichert. Der alte Inhalt des niederwertigen Worts
von AKKU 1 wird überschrieben. AKKU 2 und das
höherwertige Wort von AKKU 1 bleiben unverändert.
+ + L# Ganzzahl (32 Bit) Addiert eine 32-Bit-Ganzzahl-Konstante zum Inhalt von
AKKU 1. Das Ergebnis wird in AKKU 1 gespeichert. Der alte
Inhalt dieses Akkumulators wird überschrieben. AKKU 2
bleibt unverändert.

Beispiele Nachfolgend sind zwei Programme abgebildet, die die Operation Addiere
Ganzzahl-Konstante enthalten.

AWL Erläuterung
L MW10 Lade den Wert aus MW10 in AKKU 1.
L MW20 Lade den Wert aus MW20 in AKKU 1.
+I Addiere die 16-Bit-Werte in AKKU 1 und 2.
+ -5 Addiere minus 5 zum Ergebnis der Operation +I.
T MW14 Transferiere das neue Ergebnis in MW14.

AWL Erläuterung
L MD10 Lade den Wert aus MD10 in AKKU 1.
L MD16 Lade den Wert aus MD16 in AKKU 1.
+D Addiere die 32-Bit-Werte in AKKU 1 und 2.
+ L#-1 Addiere minus 1 zum Ergebnis der Operation +D.
T MD24 Transferiere das neue Ergebnis in MD24.

AWL für S7-300/400


15-6 C79000-G7000-C505-02
Vergleichsoperationen

17.1 Übersicht

Mit den Vergleichsoperationen können Sie folgende Paare von Zahlenwerten


miteinander vergleichen:
S zwei Ganzzahlen (16 Bit)
S zwei Ganzzahlen (32 Bit)
S zwei Gleitpunktzahlen (Gleitpunktzahlen, 32 Bit, IEEE-FP)
Sie laden die Zahlenwerte in die AKKUs 1 und 2. Eine Vergleichsoperation
vergleicht den Wert in AKKU 2 mit dem Wert in AKKU 1 nach den in
Tabelle 17-1 aufgeführten Kriterien.
Das Ergebnis des Vergleichs ist eine Binärziffer, d. h. entweder ”1” oder ”0”.
Eine ”1” zeigt an, daß das Ergebnis des Vergleichs ”wahr” ist, eine ”0” zeigt
an, daß das Ergebnis ”falsch” ist (siehe Tabelle 17-2). Dieses Ergebnis ist im
Verknüpfungsergebnis-Bit gespeichert (VKE-Bit, siehe Kapitel 9.4). Sie
können das Ergebnis in Ihrem Programm zur weiteren Verarbeitung
verwenden.
Wenn die CPU eine Vergleichsoperation ausführt, setzt sie die Bits im Status-
wort. Andere AWL-Operationen können die Bits des Statusworts auswerten.
Die CPU führt Vergleichsoperationen unabhängig vom Verknüpfungsergebnis
aus.

Tabelle 17-1 Vergleichskriterien

Art des Zahlenwertes in Vergleichskriterium Operationssymbol(e) Art des Zahlenwerts in


AKKU 2 AKKU 1
ist gleich ==I
==D
==R
ist ungleich <>I
<>D
<>R
ist größer als >I
Ganzzahl (16 Bit) >D Ganzzahl (16 Bit)
>R
Ganzzahl (32 Bit) Ganzzahl (32 Bit)
ist kleiner als <I
Gleitpunktzahl (32 Bit) <D Gleitpunktzahl (32 Bit)
<R
ist größer als oder gleich >=I
>=D
>=R
ist kleiner als oder gleich <=I
<=D
<=R

AWL für S7-300/400


17-2 C79000-G7000-C505-02
Vergleichsoperationen

17.2 Vergleichen zweier Ganzzahlen

Beschreibung Die Operationen Vergleiche Ganzzahlen (16 Bit) vergleichen zwei


Ganzzahlen (16 Bit), die Operationen Vergleiche Ganzzahlen (32 Bit)
vergleichen zwei Ganzzahlen (32 Bit) gemäß den Kriterien in Tabelle 17-2.
Ein Programmbeispiel schließt sich an Tabelle 17-3 an.

Tabelle 17-2 Vergleichsoperationen (Ganzzahlen, 16 und 32 Bit)

Operation Erläuterung
==I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf Gleichheit.
==D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1.
<>I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf Ungleichheit.
<>D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1 auf Ungleichheit.
>I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf größer.
>D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1 auf größer.
<I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf kleiner.
<D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1 auf kleiner.
>=I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf größer und gleich.
>=D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1 auf größer und gleich.
<=I Vergleiche Ganzzahl (16 Bit) im niederwertigen Wort von AKKU 2 mit der Ganzzahl (16 Bit) im
niederwertigen Wort von AKKU 1 auf kleiner und gleich.
<=D Vergleiche Ganzzahl (32 Bit) in AKKU 2 mit der Ganzzahl (32 Bit) in AKKU 1 auf kleiner und gleich.

AWL für S7-300/400


C79000-G7000-C505-02 17-3
Vergleichsoperationen

Setzen der Bits A1 Die Vergleichsoperationen für Ganzzahlen (16 und 32 Bit) setzen
und A0 im Status- verschiedene Signalzustandskombinationen der Bits A1 und A0, um
wort anzuzeigen, welche Bedingung erfüllt wurde (siehe Tabelle 17-3).

Tabelle 17-3 Zustände der Bits A1 und A0 nach einer Vergleichsoperation

Mögliche Abfrage mit


Bedingung Signalzustand:
den Operationen
A1 A0 U, O, X, UN, ON, XN
Akku2>Akku1 1 0 >0
Akku2<Akku1 0 1 <0
Akku2=Akku1 0 0 ==0
0 1
Akku2<>Akku1 oder oder <>0
1 0
1 0
Akku2>=Akku1 oder oder >=0
0 0
0 1
Akku2<=Akku1 oder oder <=0
0 0

Beispiel Das folgende Programmbeispiel zeigt, wie die Vergleichsoperationen für


Ganzzahlen (16 Bit) arbeiten.

AWL Erläuterung
L MW10 Lade den Inhalt von Merkerwort MW10 in AKKU 1.
L EW0 Lade den Inhalt von Eingangswort EW0 in AKKU 1.
Der alte Inhalt von AKKU 1 wird in AKKU 2 geschoben.
==I Vergleiche den Wert im niederwertigen Wort von AKKU 2 mit dem
Wert im niederwertigen Wort von AKKU 1, um herauszufinden, ob
sie gleich sind.
= A 4.0 Ausgang A 4.0 wird stromführend, wenn MW10 und EW0 gleich sind.

>I Vergleiche den Wert im niederwertigen Wort von AKKU 2 mit dem
Wert im niederwertigen Wort von AKKU 1, um herauszufinden, ob
er größer ist als der Wert im niederwertigen Wort von AKKU 1.

= A 4.1 Ausgang A 4.1 wird stromführend, wenn MW10 größer als EW0 ist.

<I Vergleiche den Wert im niederwertigen Wort von AKKU 2 mit dem
Wert im niederwertigen Wort von AKKU 1, um herauszufinden, ob
er kleiner ist als der Wert im niederwertigen Wort von AKKU 1.

= A 4.2 Ausgang A 4.2 wird stromführend, wenn MW10 kleiner als EW0 ist.

AWL für S7-300/400


17-4 C79000-G7000-C505-02