You are on page 1of 204

Home

Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

Programmieren mit STEP7

Einfhrung
Dieses Skript wendet sich an STEP7-Einsteiger, die bereits Grundkenntnisse in Zusammenhang mit Speicherprogrammierbaren Steuerungen haben. Es soll die Einarbeitung in STEP7 erleichtern und einen berblick ermglichen. Zu diesem Zweck sind hier Informationen in komprimierter Form zusammengestellt, die sonst auf mehrere Handbcher verteilt sind. ber viele Jahre war Einsatz und Programmierung von Speicherprogrammierbaren Steuerungen ein Thema, das mit EDV oder Informationstechnik nichts zu tun hatte. Zunehmend verlangt aber der moderne Produktionsbetrieb eine Durchgngigkeit und Verzahnung aller Steuerungs- und Informationssysteme. Dies hat zu einer nachhaltigen Vernderung in der Automatisierungstechnik gefhrt. Moderne Steuerungen sind heute Teil von vernetzten Rechnerstrukturen. In der Automatisierungstechnik werden daher zunehmend Begriffe und Methoden der Informationstechnik verwendet. Mit der Verbreitung der Norm IEC 61131 wird sich die Entwicklung einer Informatik-Sicht auf die Steuerungsebene noch beschleunigen. Im Skript soll versucht werden, die teils historisch gewachsenen Begriffe von STEP7 auch vom Standpunkt des IEC-Programmierers aus zu beleuchten.

STEP7 ?
Mit der Programmierumgebung STEP7 werden Siemens Automatisierungssysteme SIMATIC S7 programmiert. Genauer gesagt, geht es um Gerte der Familien S7-300 und S7-400, das sind Steuerungen mit mittlerer und hoher Leistungsfhigkeit. Daneben ist STEP7 auch fr die Systeme SIMATIC M7 (Automatisierungsrechner) und SIMATIC C7 (Steuerungen mit Operator Panel) verwendbar. Wegen der Marktbedeutung des Herstellers ist STEP7 weltweit verbreitet. In der Basis-Version von STEP7 sind die Programmiersprachen FUP, KOP und AWL zur Programmierung von vernetzten Automatisierungs-Stationen vorhanden. Durch optionale Programmpakete sind weitere Sprachen verfgbar (siehe unten). Auerdem arbeitet STEP7 mit greren Softwarepaketen fr Visualisierung, SCADA und Prozeleittechnik zusammen.

Konform mit IEC 61131-3 ?


STEP7 ist an die Norm IEC 61131-3 angelehnt, enthlt aber viele SIMATIC-Typische
Erweiterungen. Dadurch soll neben einer gewissen Kontinuitt zu der frheren
Programmierumgebung STEP5 eine optimale Anpassung an das Siemens
Automatisierungskonzept erreicht werden. Aber sicher spielen auch Marketing
strategien eine Rolle fr den eigenen Weg von Siemens.
Anwender mit IEC-Sprachkenntnissen mssen sich bei der Umstellung auf STEP7
vor allem erst an das spezielle Bausteinkonzept und an die Freiheiten und Gefahren
bei der Adressierung von Operanden gewhnen. Danach drften sie mit STEP7-FUP
und -KOP wenig Umstellungsschwierigkeiten haben. Beim Einstieg in STEP7-AWL
zeigt sich ein gegenber der Norm wesentlich grerer Funktionsumfang.
Besonders interessant fr IEC-Programmierer sind die optionalen Spracher
weiterungen, die nach der Installation von der STEP7-Oberflche aus verfgbar sind:
S7-SCL (Structured Control Language)
entspricht der Sprache ST (Strukturierter Text) nach IEC 61131-3, eine textuelle
Hochsprache mit hnlichkeiten zu Pascal. Die Konformitt mit ST nach IEC 61131-3
ist nachgewiesen durch ein Base-Level Zertifikat der PLC-Open Organisation.
S7-GRAPH
hat groe Gemeinsamkeiten mit der Sprache AS (Ablaufsprache) nach IEC 61131-3,
mit deren Hilfe Ablaufsteuerungen programmiert werden knnen. In der aktuellen
Version besitzt GRAPH noch keinen Konformittsnachweis mit der IEC-Norm.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 1

Home
Dipl.Ing. Norbert Heinlein

nchste
FH Frankfurt, Labor fr Automatisierungstechnik

Inhalt
1 PROGRAMMIERUMGEBUNG ...................................................................................5

1.1 1.2 1.3 Programmiergert ........................................................................................................................................ 5


MPI-Bus......................................................................................................................................................... 5
STEP7 Projekt .............................................................................................................................................. 5

2 GRUNDWISSEN FR DAS PROGRAMMIEREN MIT STEP7...................................6

2.1 Programmstruktur ....................................................................................................................................... 6


2.2 Bausteine: OB, FC, DB, FB, SFC, SFB ...................................................................................................... 7
2.2.1 Organisationsbausteine (OBs) ................................................................................................................ 7
2.2.2 Funktion (Function, FC) .......................................................................................................................... 8
2.2.3 Datenbaustein (Data Block, DB) ............................................................................................................. 8
2.2.4 Funktionsbaustein (Function Block, FB)................................................................................................. 8
2.2.5 Systemfunktion (SFC) und Systemfunktionsbaustein (SFB)................................................................... 8
2.3 2.4 Bibliothek fr Standardfunktionen............................................................................................................. 8
Netzwerke ...................................................................................................................................................... 9

2.5 Datentypen .................................................................................................................................................... 9


Elementare Datentypen ............................................................................................................................................. 9
2.5.2 Anwenderdefinierte Datentypen (UDT, =User defined Type) ................................................................ 9
2.5.3 Datentyp ANY......................................................................................................................................... 9
2.6 Variable ....................................................................................................................................................... 10
2.6.1 Variablennamen..................................................................................................................................... 10
2.6.2 Symboltabelle ........................................................................................................................................ 10
2.6.3 Globale Variable.................................................................................................................................... 11
2.6.4 Lokale Variable und deren Deklaration................................................................................................. 11
2.6.5 Variable mit zusammengesetzten Datentypen ....................................................................................... 12
2.7 Anwenderspeicher in der CPU .................................................................................................................. 13
2.7.1 Remanenz .............................................................................................................................................. 13
2.8 Adressierung ............................................................................................................................................... 14
2.8.1 Direkte Adressierung............................................................................................................................. 14
2.8.2 Indirekte Adressierung .......................................................................................................................... 14
2.8.3 Adressierung mit Pointer ....................................................................................................................... 14
2.8.4 Adresszusammenhang Bit, Byte, Wort, Doppelwort........................................................................... 14
2.9 Schreibweise zum Eingeben von Werten .................................................................................................. 15

3 BEISPIELE IN FUP/KOP UND AWL ........................................................................16

3.1 3.2 3.3 3.4 3.5 3.6 Logische Verknpfung ............................................................................................................................... 16


Flip Flop und Flankenerkennung.............................................................................................................. 16
Timer............................................................................................................................................................ 16
Zhler........................................................................................................................................................... 17
Arithmetische Operation............................................................................................................................ 17
Bausteinaufruf............................................................................................................................................. 17

4 HANDHABUNG DER CPU .......................................................................................18

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 2

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

4.1 4.2 4.3 4.4

Betriebszustnde und bergnge.............................................................................................................. 18


Laden des Anwenderprogramms .............................................................................................................. 18
Urlschen der CPU ..................................................................................................................................... 18
Verhalten der CPU bei Netzausfall ........................................................................................................... 18

5 ERSTE BUNG AM STEP7-ARBEITSPLATZ.........................................................19

5.1 Ein STEP7 Programm erstellen ................................................................................................................ 19


5.1.1 STEP7 starten ........................................................................................................................................ 19
5.1.2 Ein neues Projekt erzeugen.................................................................................................................... 19
5.1.3 Umgang mit dem S7 Manager............................................................................................................... 19
5.1.4 Die Hardware konfigurieren .................................................................................................................. 20
5.1.5 Die Baugruppen parametrieren.............................................................................................................. 20
5.1.6 Erstellen einer Symboltabelle ................................................................................................................ 21
5.1.7 Bausteine Editieren................................................................................................................................ 21
5.2 Das Programm in das Zielsystem laden.................................................................................................... 23
5.2.1 Verbindung zum Automatisierungsgert ............................................................................................... 23
5.2.2 Urlschen der CPU................................................................................................................................ 23
5.2.3 Programm bertragen ............................................................................................................................ 23
5.2.4 Das Automatisierungsgert starten ........................................................................................................ 23
5.3 Das Programm testen ................................................................................................................................. 23
5.3.1 Onlinedarstellung im S7 Manager ......................................................................................................... 23
5.3.2 Bausteinorientierte Testhilfe.................................................................................................................. 23
5.3.3 Variablenorientierte Testhilfe:............................................................................................................... 24

6 FUNKTION (FC)........................................................................................................25

6.1 Die Operanden EN (Enable) und ENO (Enable Out)............................................................................. 25


6.2 Erstellen einer Funktion............................................................................................................................. 26
6.2.1 Deklarationsteil...................................................................................................................................... 26
6.2.2 Anweisungsteil in FUP und AWL ......................................................................................................... 26
6.3 6.4 Aufrufen der Funktion ............................................................................................................................... 27
Fehlerbehandlung und Statusmeldungen ................................................................................................. 27

7 DATENBAUSTEIN (DB) ...........................................................................................28

7.1 7.2 Erzeugen eines Datenbausteins.................................................................................................................. 28


Festlegen der Datenstruktur ...................................................................................................................... 28

7.3 Adressierung der Daten.............................................................................................................................. 29


7.3.1 Vollstndige Adressierung der Daten in einem Schritt.......................................................................... 29
7.3.2 Adressierung mit: DB ffnen bzw. DI ffnen ........................................................................... 30
7.4 Weitere Operationen mit Datenbausteinen .............................................................................................. 30

8 FUNKTIONSBAUSTEIN (FB) ...................................................................................31

8.1 Unterschied zur Funktion .......................................................................................................................... 31


8.2 Anwendungsbeispiel: Zeitliche Ableitung eines Mesignals................................................................... 31
8.2.1 FB Erstellen ........................................................................................................................................... 31
8.2.2 FB Aufrufen........................................................................................................................................... 32
8.2.3 Instanz-DB............................................................................................................................................. 32

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 3

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

9 EREIGNISGESTEUERTE PROGRAMMBEARBEITUNG........................................33

9.1 Zyklische Programmbearbeitung (OB1) .................................................................................................. 33


9.2 Anlaufbearbeitung und Initialisierung (OB100) ...................................................................................... 34
9.2.1 Lokale Variable des OB100................................................................................................................... 34
9.2.2 Anwendungsbeispiel.............................................................................................................................. 34
9.3 Weckalarm = Periodischer Zeitinterrupt (OB30..OB38) ........................................................................ 36
9.3.1 Einstellung des Aufrufintervalls ............................................................................................................ 36
9.3.2 Anwendungsbeispiel.............................................................................................................................. 36
9.4 Prozealarm = I/O-Interrupt (OB40) ....................................................................................................... 37
9.4.1 Alarm-Freischaltung in der CPU ........................................................................................................... 37
9.4.2 Alarmbearbeitung .................................................................................................................................. 37

Anhang:
Literaturverzeichnis

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 4

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

1 Programmierumgebung
1.1 Programmiergert
Als Programmiergerte (PG) werden meist PCs mit eingebauter MPI-Steckkarte oder spezielle Laptops verwendet. Betriebssystem ist Windows NT oder 95/98, der PC sollte mindestens Pentium-Performance mit 64 MB RAM haben.

1.2

MPI-Bus

Jede S7-Station besitzt eine MPI-Schnittstelle (Multi Point Interface). ber diese Schnittstelle werden die am Automatisierungsprojekt beteiligten S7-Stationen mit dem Programmiergert vernetzt.
Bei MPI handelt es sich um Schnittstellen mit RS485-Physik, ber die ein Siemens-internes Protokoll abgewickelt wird. Es knnen bis zu 32 Teilnehmer ber eine Zweidrahtleitung verbunden werden. Jeder Teilnehmer bekommt eine MPI-Adresse zugewiesen, ber die er ansprechbar ist. Baudrate am MPI-Bus ist 187,5 kBit/s.
Fr Programmiergerte sollen die Adressen MPI-0 oder MPI-1 verwendet werden, die erste S7-Station erhlt die Adresse MPI-2.
Normalerweise verluft ber den MPI Bus nur der Datenaustausch zwischen Programmiergert und den S7Stationen zur Programmierung und fr Online Testfunktionen. Fr wenige Teilnehmer mit geringen Datenmengen kann aber auch eine Kommunikation zwischen den S7Stationen ermglicht werden. Dies geschieht durch Projektierung von sogenannten Globaldaten, die inner halb bestimmter Kommunikationskreise von den beteiligten CPUs verschickt und empfangen werden. Mit den S7Stationen knnen ber MPI auch Operator Panels verbunden werden.

1.3

STEP7 Projekt

Ein STEP7-Projekt enthlt Datenobjekte fr eine oder mehrere zusammengehrige S7-Stationen. Im folgenden
Beispiel besteht das Projekt der Einfachheit halber nur aus einer Station der Reihe S7-300.

Das Projekt mit dem


Namen S7_Proj1 belegt ein eigenes Verzeichnis. Die Station selbst besteht aus Angaben zum Hardwareaufbau (sog.
Stationskonfiguration) und aus Systemeinstellungen fr die CPU, hier eine CPU314.
Im Behlter S7-Programm ist das Programm fr die CPU abgelegt. Hierzu gehren Voreinstellungen der
Programmierumgebung, die Definition von Symbolischen Variablen und im Behlter Bausteine die eigentlichen
Programmanweisungen in FUP/KOP und AWL. Diese sind in Programmbausteine gegliedert, die ohne weitere
Compilierung in die CPU geladen werden knnen.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 5

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Der Behlter Quellen ist fr Programm-Module im Quelltext bestimmt. Das sind beispielsweise Anweisungen in AWL, die mit einem Texteditor erstellt werden. Vor der bertragung zur S7-Station mssen die Quellen erst noch compiliert werden, dadurch entstehen ebenfalls Bausteine. Zu jeder Station werden also viele Informationen abgelegt: Allgemeine Dokumentation, Hardwareaufbau,
Voreinstellungen der Programmierumgebung, Symbolische Bezeichnungen von Variablen, Hilfen fr Test und
Inbetriebnahme usw. und -last not least- die eigentlichen Programmanweisungen unter FUP, KOP, AWL oder
weiteren Hochsprachen.
Vom Programmiergert aus betrachtet, gehren alle diese Informationen zum Programm fr die CPU. Vom
Automatisierungsgert aus betrachtet, besteht das CPU-Programm lediglich aus AWL-Anweisungen: das Programm
wird nmlich beim Laden in die CPU automatisch in AWL-Anweisungen umgesetzt.

2 Grundwissen fr das Programmieren mit STEP7


2.1 Programmstruktur
STEP7-Programme bestehen im allgemeinen aus mehreren oder vielen Programmbausteinen. In jedem Baustein wird dabei eine Teilaufgabe des Gesamtprogramms bearbeitet. Zur Vorbereitung der Programmierung wird zunchst die Funktion der zu steuernden Anlage untersucht. Aus der Aufspaltung in Teilfunktionen entsteht schlielich die Programmstruktur. Am Beispiel einer Abfllanlage soll dieser Entwurfsvorgang gezeigt werden: Die Anlage knnte beispielsweise grob unterteilt werden in Transporteinrich tungen, die Fllung der Behlter und irgendwelche Bedieneinrichtungen mit Schaltern und Anzeigen. Eine genauere Betrachtung der Fllung knnte beispielsweise ergeben, da nach mehreren Reinigungsvorgngen und dem Fllvorgang noch eine Etikettierung der Behlter erfolgen soll. Auf diese Weise erhlt man eine funktionale Gliederung der Anlage in beliebig feiner Struktur.

Die Programmbausteine entsprechen den so festgelegten Teilaufgaben. Die einzelnen Bausteine erhalten Namen, die fr die jeweilige Teilaufgabe kennzeichnend sind. Auerdem erscheint der Bausteintyp mit Nummer, z.B. FC20 Der Baustein Fllung beispielsweise veranlat spter die Bearbeitung der Bausteine fr die Reinigungen, Kontrolle, Fllung und Etikettierung.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 6

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

Die Strukturierung des Programms in Bausteine hat wichtige Vorteile:


Gegliederte Lsung Ein in funktionelle Einheiten unterteiltes Programm ist leichter zu entwickeln Transparenz Ein aus Bausteinen bestehendes Programm ist einfacher zu dokumentieren und ist besser verstehbar Vorteile bei Test und Inbetriebnahme Die Programmteile knnen einzeln getestet und korrigiert werden Krzeres Programm Bausteine im Speicher knnen mehrfach verwendet werden Fertige Lsungen verwenden Wiederverwendung von Teillsungen, Einsatz von Standardfunktionen und Programmbibliotheken

2.2

Bausteine: OB, FC, DB, FB, SFC, SFB

STEP7 unterscheidet sich im Bausteinkonzept stark von den Festlegungen der Norm IEC 1131-3. Gleichzeitig ist das Verstndnis der Bausteine aber zentral wichtig fr das Verstndnis von STEP7! Grundstzlich werden alle Bausteine vom Anwender erstellt oder in das aktuelle Projekt importiert. Hinsichtlich des Inhalts knnen Bausteine unterschieden werden in Codebausteine diese enthalten Programmanweisungen (Code). Alle Bausteine auer DBs sind Codebausteine. Datenbausteine (DBs) enthalten Speicherplatz fr Daten. Auf die Daten von DBs kann man durch Anweisungen in Codebausteinen zugreifen. DBs werden in ihrer Gre und Datenstruktur vom Anwender festgelegt. Sie werden verwendet beispielsweise fr die Speicherung von statischen Variablen, Messwerten, Rezepturen, Regelparametern. Die Codebausteine knnen hinsichtlich des Programmablaufs in zwei Gruppen unterschieden werden. Organisationsbausteine (OBs) werden bei bestimmten Ereignissen vom Betriebssystem gestartet. Alle anderen Codebausteine werden durch Anweisungen im Anwenderprogramm gestartet.

2.2.1 Organisationsbausteine (OBs)


OBs bilden die Schnittstelle zwischen dem Betriebssystem und dem Anwenderprogramm. Sie knnen nicht durch Programmanweisungen gestartet werden! Stattdessen wird der Start von OBs beim Eintreten von festgelegten Ereignissen durch das SPS-Betriebssystem veranlasst. Die nachfolgende Tabelle zeigt eine Auswahl der wichtigsten OBs mit den betreffenden Ereignissen und der zugehrigen Prioritt. Ein OB hherer Prioritt unterbricht die Bearbeitung des OB mit niedrigerer Prioritt. Am Ende des hherprioren OBs wird die Bearbeitung des unterbrochenen OBs fortgesetzt.

Prioritt
niedrigste

OB-Nr
OB1 OB10 OB35 OB40 OB80 OB100 OB122

Name
Zyklus Uhrzeitalarm Weckalarm Prozessalarm Zykluszeitfehler Anlauf Baugruppenfehler

Systemereignis
am Zyklusende und nach dem Anlauf (Ende von OB100) definierte Uhrzeit oder Datum periodisch jeweils nach einer definierten Zeit bei bestimmten Signalen der I/O-Peripherie OB1-Zyklus berschreitet eine definierte Zeit beim Anlauf der SPS, d.h. bei Stop=>Run wenn beim Baugruppenzugriff ein Fehler erkannt wird

"Zeit-Interrupt" "I/O-Interrupt"

hchste

Am hufigsten wird in Anwenderprogrammen der OB1 (Zyklus) eingesetzt. Viele STEP7-Programme verwenden den OB1 sogar als einzigen OB. Wegen der niedrigen Prioritt kann er durch alle Systemereignisse unterbrochen werden. Die hchste Prioritt hat der OB122, der bei der Erkennung von Baugruppenfehlern sofort bearbeitet wird. Die Anzahl der verfgbaren OBs hngt ab von den Leistungsdaten der verwendeten CPU. Beispielsweise kennt die kleinste CPU (CPU312 IFM) nur OB1, OB40 und OB100. Im vorigen Abschnitt wurde am Beispiel einer Abfllanlage gezeigt, wie die Bausteine entsprechend der Anlagenfunktion gegliedert werden knnen. Wenn die einzelnen Bausteine zyklisch bearbeitet werden sollen, sieht der Programmablauf etwa so aus wie im folgenden Bild.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 7

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Programmablauf am Beispiel der Abfllanlage

Wenn ein bestimmtes Systemereignis eintritt, der Anwender aber den betreffenden OB nicht erstellt hat, dann
passiert folgendes: das System verzweigt auf die OB-Adresse, dort steht aber nichts, also wird der unterbrochene
OB sofort weiterbearbeitet.
Eine beliebte Fehlerquelle besteht darin, da irgendein Baustein eigentlich zyklisch bearbeitet werden soll, aber im
OB1 die CALL-Programmanweisung fehlt. Dann passiert nichts und der Programmierer wundert sich.

2.2.2 Funktion (Function, FC)


Beim Aufruf knnen einer Funktion Parameter bergeben werden, am Ende kann die Funktion dem aufrufenden Baustein Parameter zurckliefern. Anzahl und Typen der Parameter werden bei der Erstellung der Funktion deklariert. Auerdem knnen temporre Variable deklariert werden (z.B. fr Zwischenergebnisse), deren Daten am Ende des FC allerdings verloren gehen. FCs haben keinen Speicher fr statische Variablen. Einzelheiten zu FCs siehe Abschnitt 6.

2.2.3 Datenbaustein (Data Block, DB)


Datenbausteine sind strukturierte Datenspeicher, auf die durch Programmanweisungen in Codebausteinen zugegriffen werden kann. Bei der Erstellung eines DB wird die Datenstruktur festgelegt. Einzelheiten zu DBs siehe Abschnitt 7.

2.2.4 Funktionsbaustein (Function Block, FB)


Besonderheit dieses Bausteintyps ist, da beim Aufruf ein Datenbaustein angegeben werden mu, der der aufgerufenen Instanz des FB als Speicher zur Verfgung steht. Daher knnen in FBs statische Variablen deklariert werden, d.h. Variable, deren Daten am Ende des FB erhalten bleiben. Ansonsten bestehen diesselben Mglichkeiten wie bei FCs. Einzelheiten zu FBs siehe Abschnitt 8.

2.2.5 Systemfunktion (SFC) und Systemfunktionsbaustein (SFB)


Das sind spezielle Bausteine, die als Teil des Betriebssystems in die S7-CPU integriert sind. Man kann diese Bausteine mit Programmanweisungen starten und wie ganz normale FCs oder FBs behandeln. Es hngt von der jeweiligen CPU ab, welche Systembausteine zur Verfgung stehen. Beispielsweise hat die kleinste CPU insgesamt 27 SFC/SFBs. Die Funktionen betreffen u.a. Uhrzeit, Betriebsstundenzhler, Blockbefehle zum Initialisieren oder Kopieren von Variablen, Alarmbearbeitung, Diagnosefunktionen.

2.3

Bibliothek fr Standardfunktionen

Bibliotheken unter STEP7 enthalten Bausteine, die zur Verwendung in das aktuelle Projekt kopiert werden knnen. Zur STEP7-Programmumgebung gehrt eine Standardbibliothek. Sie enthlt u.a. die Systemfunktionen (SFCs, SFBs), Standardfunktionen zum Umgang mit IEC-Datentypen und PID-Reglerfunktionen. Man kann aus vorhandenen Bausteinen eigene Bibliotheken aufbauen.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 8

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

2.4

Netzwerke

Die Codebausteine sind unterteilt in sogenannte Netzwerke (NW). Unter FUP/KOP sind NWs relativ kurz.
Automatisch wird nmlich mit der ersten Zuweisungoperation ein Netzwerkende veranlat. Der Begriff Netzwerk
kommt aus der Nachbildung eines elektrischen Stromkreises unter KOP.
Unter AWL knnen NWs ziemlich lang sein (ca. 2000 Zeilen), so dass umfangreiche Algorithmen kompakt in ein NW
passen. Innerhalb eines Netzwerks kann die Programmiersprache nicht umgeschaltet werden! Ansonsten kann in
einem Baustein mit unterschiedlichen Sprachen gearbeitet werden.

2.5

Datentypen

2.5.1 Elementare Datentypen


Jeder elementare Datentyp verfgt ber einen zugeordneten Speicherplatz mit fester Lnge. Der Datentyp BOOL zum Beispiel hat nur ein Bit, ein Byte (BYTE) besteht aus 8 Bits, ein Wort (WORD) sind 2 Bytes (bzw. 16 Bits), ein Doppelwort (DWORD) hat 4 Bytes (bzw. 32 Bits). Die folgende Tabelle zeigt alle vorhandenen elementaren Datentypen:

Typ
BOOL BYTE WORD DWORD CHAR INT DINT REAL TIME DATE TOD S5TIME

Anzahl Beschreibung Bit


1 8 16 32 8 16 32 32 32 16 32 16 Bit Byte Wort Doppelwort Zeichen Ganzzahl 16 Bit Ganzzahl 32 Bit IEEE Gleitpunktzahl IEC-Zeit in Intervallen von 1 ms IEC-Datum in Intervallen von 1 Tag Time Of Day. Uhrzeit in Intervallen v. 1ms Voreingestellte Zeitwerte:

Wertebereich
TRUE, FALSE 0 ... 255 0 ... 65535 (216-1) 0 ... 232-1 druckbare Zeichen (ASCII-Code) -32768 ... +32767 (-215... +215-1) (ca. -2,1Mia...2,1Mia) -231 ... + 231-1 -3,4E38 ... 3,4E38 (ca. -24..24 Tage) -231 + 231-1 ms 216-1 Tage ab 1990-1-1 Stunden(0..23) : Minuten(0..59) : Sekund.(0..59) : ms(0..999) 0H_0M_0S_0MS ... 2H_46M_30S_0MS

2.5.2 Anwenderdefinierte Datentypen (UDT, =User defined Type)


Es knnen auch eigene Datentypen, sogenannte User defined Types (UDTs), definiert werden. Sie bestehen aus
Zusammensetzungen von Elementaren Datentypen.
Der Aufwand eigener Datentypen lohnt sich aber nur, wenn in einem STEP7-Projekt viele Variablen gleichen Typs
bentigt werden. Ansonsten wird man auch komplexere Variablen direkt deklarieren mit den Schlsselwrtern:
ARRAY, STRUCT, STRING (s.a. Variablendeklaration im Abschnitt 2.6.5).
Ein Anwenderdefinierter Datentyp gilt fr das gesamte S7-Programm. UDTs werden erstellt im STEP7-Manager mit
dem Men: Einfgen S7-Baustein Datentyp. Dort ist eine entsprechende Typdeklaration fr den betreffenden
UDT nr (z.B. UDT10) zu erstellen.
Die Deklaration einer Variablen vom Typ UDT nr erfolgt dann im Deklarationsteil des betreffenden Bausteins.

2.5.3 Datentyp ANY


ANY ist wird als unbestimmter Datentyp bei der Erstellung von Bausteinen benutzt. ANY kennzeichnet dann, dass der Datentyp eines bergabeparameters noch unbestimmt ist und erst beim Bausteinaufruf definiert wird. ANY wird hufig bei der Verwendung von Systemfunktionen (SFCs) und Systembausteinen (SFBs) benutzt. Fr die bergabe des eigentlichen Datentyps wird ein Zeigeroperator p (=pointer) verwendet, s.a. Abschnitt 2.8.3.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 9

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

2.6

Variable

Der Umgang mit Variablen und Adressen bei STEP7 unterscheidet sich von den Festlegungen der IEC 61131-3. Whrend den IEC-Programmierer im Allgemeinen nicht interessiert, an welcher Adresse eine Variable im Speicher reprsentiert ist, hat sich der STEP7-Programmierer bereits vor der Variablendeklaration darber seine Gedanken gemacht und Entscheidungen getroffen. Erfahrene STEP7-Programmierer knnen einen Nutzen aus dem Wissen ber die Speicheraufteilung ziehen und manche Probleme elegant lsen. Allerdings haben es Einsteiger in STEP7 etwas schwerer. Was sind eigentlich Variable? Einige allgemein gltige berlegungen sollen den Blick auf die Belange von STEP7 schrfen: Variable oder ganz
allgemein Datenobjekte bezeichnen mit ihrem Namen eine bestimmte Menge von Speicherplatz. Unter dem
Variablennamen knnen die dort liegenden Daten benutzt werden. Im Gegensatz dazu stehen Konstante, die keinen
Speicherplatz haben und deren Wert im Programmcode festgelegt ist, weil er sich sowieso nie ndert.
Somit ist ein erstes wichtiges Kennzeichen fr Variable der zugehrige Datentyp, der ja bereits die erforderliche
Menge an Speicherplatz festlegt. Auerdem ist es wichtig zu wissen, wie lange Daten im Speicher verbleiben und
wann eine Aktualisierung der Daten erfolgt. Dies hat viel zu tun mit dem Ereignisgesteuerten Programmablauf der
CPU und wird im Abschnitt 9 behandelt.
Wichtig ist auch der Gltigkeitsbereich, innerhalb dessen der Variablenname dem Programm bekannt ist. Hierzu sind
Aussagen in den Abschnitten ber Globale und Lokale Variable gemacht.
Der Ort, an dem die Variable gespeichert ist, wird durch Speicheraufbau und Adressierung bestimmt. Dies ist Thema
der folgenden folgenden Abschnitte.

2.6.1 Variablennamen
Bei der Beschreibung irgendwelcher anderen Hochsprachen (und auch nach IEC61131-3) wrden zum Thema Namen wahrscheinlich nur Fragen der Schreibweise von Variablenbezeichnern behandelt werden. Eine Variable wre dann etwa so deklariert: Datentyp Name // Kommentar

Man wte nicht -und es wre auch nicht wichtig-, unter welcher Adresse die Variable im Speicher liegt. Beim
bersetzen des Programms wrde automatisch eine Adresse festgelegt, die zur Laufzeit des Programms
selbstverstndlich bekannt wre.
Bei STEP7 ist das etwas anders, da es eigentlich gar keine Variablennamen gibt zumindest nicht in der
adressunabhngigen Art, wie sie sonst in Hochsprachen verwendet werden. Mit dieser etwas provokativen
Behauptung soll darauf hingewiesen werden, dass bei STEP7 im Namen bereits die Adressinformation steckt und
zwar bereits im Quelltext (!) des Programms.
STEP7 Bausteine in FUP/KOP oder AWL brauchen nicht bersetzt werden! Dieses Prinzip der festen Zuordnung von Variablennamen und Adressen hat den Vorteil, dass die Bausteine ohne bersetzung in die CPU geladen werden knnen! Auch beim Fehlersuchen in Programmen kann viel Zeit gespart werden, weil Bausteine auch ohne Rckbersetzung aus der CPU ausgelesen und interpretiert werden knnen.

2.6.2 Symboltabelle
Damit man unter STEP7 trotzdem flssig programmieren kann, ist der Anwenderspeicher in bestimmte Bereiche aufgeteilt (E, A, M, Z, T, L, P, D siehe Abschnitt 3.7). Auerdem kann man mit einem Symboleditor eine symbolische Bezeichnung fr die feste Adresse festlegen und mit dieser programmieren. Beispiel: M3.5 M3.5 ist eine Variable vom Typ BOOL, die im Merkerbereich (wegen der Bezeichnung M) des Anwenderspeichers liegt und dort im Byte Nr.3 das Bit 5 belegt. In einer Symboltabelle erstellt man Zuordnungen der Art
Symbol Adresse Datentyp Kommentar

Name

M3.5

BOOL

Symbolname fr M3.5 (in Anfhrungszeichen ... !)

Auf die Variable kann man dann zugreifen mit Name oder nach wie vor mit M3.5

Solche Variablen wie M3.5 nennt man in STEP7 Absolute Operanden. Gemeint ist damit, dass die Adresse sich niemals ndert und man mit ihnen operieren kann. Dieses kleine Beispiel ist bereits ein kleiner Vorgriff auf die Adressierung unter STEP7, die im Abschnitt 2.8 ausfhrlich behandelt wird.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 10

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

2.6.3 Globale Variable


Globale Variable knnen berall im Programm benutzt werden, man kann in jedem Codebaustein lesend oder schreibend auf sie zugreifen. Es gibt 2 Arten von globalen Variablen Absolute Operanden, z.B.: E2.0 AW10 M1.2 MB4 Z1 T2 OB1 FC3 Diese brauchen nirgends deklariert werden, da sie im Anwenderspeicher der CPU feste Adressen haben. Die Namensbezeichnung verweist auf einen bestimmten Bereich des Anwenderspeichers (siehe Abschnitt 2.7). Variablen in Datenbausteinen (DBs) Die einzelnen Variablen eines DBs werden bei der Erstellung des DB deklariert. Eine Besonderheit bei DBs ist, da der Gltigkeitsbereich der Variablen programmgesteuert ist: solange der DB geffnet ist, d.h. die Nummer des DB steht im DB- oder DI-Register der CPU, kann von allen Codebausteinen auf seine Variablen zugegriffen werden. Vorteil der Organisation von Daten in DBs ist, dass die Datenmengen leicht ausgetauscht werden knnen, auch zur Laufzeit. Die Erstellung und Verwendung von DBs werden im Abschnitt 7 erklrt.

2.6.4 Lokale Variable und deren Deklaration


Lokale Variable gelten in dem Code-Baustein (OB,FC,FB), in dem sie deklariert sind. Nur innerhalb des Bausteins
sind Lese- und Schreibzugriffe auf die lokalen Variablen mglich.
Zu Beginn jedes Code-Bausteins (OBs, FCs, FBs) werden in der sogenannten Deklarationstabelle lokale Variable
deklariert, die der Baustein bei seiner Bearbeitung verwenden soll, zum Beispiel:

Man trgt Deklarationstyp, Variablenname, Datentyp und Kommentar ein. Die Adressen ermittelt STEP7
automatisch. Alle nicht temporren Variablen knnen mit einem Anfangswert initialisiert werden. Als Datentypen
kommen Elementare Datentypen, UDTs, ANY und zusammengesetzte Datentypen mit ARRAY, STRUCT und
STRING vor. Zusammengesetzte Datentypen siehe Abschnitt 2.6.5.
Es gibt folgende Deklarationstypen:
Typ
in out in_out temp

Beschreibung
Eingangsparameter Ausgangsparameter Ein- Ausgangsparameter temporre Variable, die im Lokaldaten-Stack gespeichert wird. Der Wert der Variablen ist ist nach der Bearbeitung des Bausteins (das bedeuted auch: im im nchsten Zyklus!) nicht mehr verfgbar. statische Variable, wird im Instanz-Datenbaustein gespeichert

Zugriff
lesen schreiben lesen, schreiben lesen, schreiben

zulssig in
FB, FC FB, FC FB, FC FB, FC, OB

stat

lesen, schreiben

FB

in, out, in_out (Formalparameter)


Formalparameter (sind fr die bergabe von Variablen oder Daten beim Bausteinaufruf gedacht. Diese werden beim
Aufruf durch Aktualparameter ersetzt. Eingangsparameter erscheinen in der Blockdarstellung links,
Ausgangsparameter rechts.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 11

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Beispiel fr Parameterbergabe:

sin (x) MW2 x y MW4

Es sei ein Baustein vorhanden mit der Funktion y=sin(x). Der Baustein hat als Eingang den Formaloperanden x, ausdem er mit einem Sinusalgorithmus y bestimmt. Auch y ist ein Formaloperand, allerdings vom Ausgangstyp. Beim Aufruf des Bausteins werden die Aktualoperanden (fr x: MW2, fr y: MW4) bergeben.

temp (temporre Variable) Temporre Variable sind nur in dem Baustein gltig, in dem sie deklariert sind, d.h. beim Verlassen des Bausteins wird der zugehrige Speicherplatz freigegeben fr andere Zwecke. Der Speicherbereich fr temporre Variable ist der sogenannte Lokaldaten-Stack; der Aufbau des Stacks ergibt sich jeweils aus den gerade aktuellen temporren Variablen. stat (statische Variable) Statische Variable knnen nur in Funktionsbausteinen deklariert werden. Der Wert wird im Instanz-Datenbaustein gespeichert und ist daher im nchsten Zyklus wieder verfgbar. Im Abschnitt 8 ist die Erstellung und Verwendung von FBs erklrt.

2.6.5 Variable mit zusammengesetzten Datentypen


Mit den Schlsselnamen ARRAY, STRUCT, STRING lassen sich Variable deklarieren, die aus elementaren Datentypen zusammengesetzt sind.

2.6.5.1 ARRAY
Ein ARRAY verknpft ein Feld gleicher Datentypen zu einer Einheit. Es sind auch mehrdimensionale Arrays mglich. DerZugriff auf die Variable erfolgt in der Schreibweise: #ArrayName [i,k] Syntax: ArrayName ARRAY [1..10, 1..2] Datentyp // Kommentarzeile, zweidimensionales Array

2.6.5.2 STRUCT
Eine Struktur (STRUCT) verknpft verschiedene Datentypen zu einer Einheit. Der Zugriff auf die Elemente erfolgt in der Schreibweise #Strukturname.Feldname (z.B. #Messwert.Temperatur). Syntax: StructName Data1 Data2 ... Data i STRUCT Datentyp1 Datentyp2 ... Datentyp i END_STRUCT // Kommentarzeile zur Struktur

Beispiel:

2.6.5.3 STRING
Eine Zeichenkette (STRING) ist ein eindimensionales Feld aus CHAR-Datentypen. Die Feldgrsse ist maximal 254 Zeichen.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 12

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

2.7

Anwenderspeicher in der CPU

Beim Laden in die CPU werden die Bausteine des S7-Programms in einen Ladespeicher transferiert. Das Betriebssystem generiert daraus ein ausfhrbares Programm im Arbeitsspeicher (RAM) der CPU. Daneben gibt es den Systemspeicher (RAM), der in bestimmte Bereiche unterteilt ist: Eingnge (E), Ausgnge (A), Merker (M), Timer (T), Zhler (Z), Daten (D), Lokaldaten (L), Eingangsperipherie (PE) und Ausgangsperipherie (PA). Auf alle Speicherbereiche kann durch Anweisungen im Anwenderprogramms lesend und schreibend zugegriffen werden. Die folgende Tabelle zeigt die Speicheraufteilung. Die Menge der verfgbaren Operanden (d.h. die Gre des Systemspeichers) ist abhngig von der jeweiligen CPU. Als Beispiel sind in der Tabelle die verfgbaren Operanden fr die kleinste CPU der Reihe S7-300 dargestellt.
Speicherbereich
PAE Prozeabbild der Eingnge

Zugriff ber Einheiten der folgenden Gre


Eingang (Bit) EingangsByte EingangsWort EingangsDoppelwort

S7Notation
E EB EW ED A AB AW AD M MB MW MD T Z

Beschreibung
PAE ist ein Speicherbereich, der vom Betriebssystem jeweils vor Beginn des OB1-Zyklus mit den Daten der Eingabebaugruppen beschrieben wird. PAA ist ein Speicherbereich, dessen Daten vom Betriebssystem jeweils nach Ende des OB1Zyklus an die Ausgabebaugruppen geschrieben werden. Anwender - Speicherbereich

Verfgbar bei CPU 312 IFM


E0.0...31.7, E124.0...127.7 EB0...31, EB124...127 EW0...30, ED0...28, EW124...126 ED124

*)

PAA Prozeabbild der Ausgnge Merker

Ausgang (Bit) AusgangsByte AusgangsW ort AusgangsDoppelwort Merker (Bit) MerkerByte MerkerWort MerkerDoppelwort Zeiten Zhler Datenbaustein, geffnet mit Operation "AUF DB"

A0.0...31.7, A124.0...127.7 AB0...31, AW0...30, AB124...127 AW124...126 *)

Zeiten Zhler Datenbausteine, adressiert mit DB-Register

Speicherbereich, in den vom Betriebssystem Zeitwerte geschrieben werden Speicherbereich fr Zhler Datenbausteine werden im Anwenderprogramm erstellt in Gre und Datenstruktur. Sie knnen entweder so definiert sein, da alle Codebausteine auf sie zugreifen knnen (Globale DB) oder sie sind einem bestimmten FB oder SFB zugeordnet (Instanz-DB). Durch zwei Register der CPU (DB-, DI-Register) knnen gleichzeitig zwei Datenbausteine adressiert werden.

AD0...28, AD124 M0.0...M127.7 MB0... MB127 MW0...MW126 MD0... MD124 Z0... Z31 T0 ... T63

DB DBX DBB DBW DBD DI DIX DIB DIW DID L LB LW LD PEB PEW PED PAB PAW PAD

DB 1... DB 63 DBX 0.0 ... DBX 6143.7 DBB 0 ... DBB 6143 DBW 0... DBW 6142 DBD 0 ... DBD 6140 DI 0 ... DI 63 DIX 0.0 ... DIX 6143.7 DIB 0 ... DIB 6143 DIW 0 ... DIW 6142 DID 0 ... DID 6140 L 0.0 ... L 255.7 LB 0 ... LB 255 LW 0 ... LW 254 LD 0 ... LD 252 PEB0..31, PEB124..127, PEB256..383 PEW0..30, PEW124..126, PEW256..382 PED0..28, PED124, PED256..380 PAB0..31, PAB124..127, PAB256..383 PAW 0..30, PW 124..126, PAW 256..382 PAD0..28, PAD124, PAD256..380

DatenBit DatenByte DatenWort DatenDoppelwort Datenbausteine, Datenbaustein, geffnet mit adressiert mit Operation "AUF DI" DI-Register DatenBit DatenByte DatenWort DatenDoppelwort Lokaldaten LokaldatenBit "Lokaldaten-Stack" LokaldatenByte oder "L-Stack" LokaldatenW ort LokaldatenDoppelwort Peripheriebereich PeripherieEingangsByte Eingnge PeripherieEingangsWort PeripherieEing.Doppelwort Peripheriebereich PeripherieAusgangsByte Ausgnge PeripherieAusgangsWort PeripherieAusgDoppelwort

Speicherbereich fr temporre Daten eines Codebausteins. Der Aufbau des jeweiligen Lokaldaten-Stacks ergibt sich aus der zugehrigen Deklarationstabelle Speicherbereich, der direkt mit den Daten der Ein-/Ausgabebaugruppen in Verbindung steht. Durch Zugriff auf Daten des Peripheriebereichs knnen die Ein/Ausgabebaugruppen unabhngig vom OB1-Zyklus erreicht werden.

*) die CPU312IFM besitzt Onboard-Peripherie, die EB124..127 und AB124..127 zugeordnet ist

2.7.1 Remanenz
Normalerweise gehen Daten im Speicherbereich Merker, Zeiten, Zhler bei Spannungsausfall der CPU verloren.
Auerdem werden beim Anlauf der CPU (bergang STOPRUN) diese Daten in einen definierten Zustand gesetzt.
Durch Parametrierung der CPU kann man aber einen kleinen Teil der Merker, Zeiten, Zhler als remanent
festlegen.
Remanente Daten bleiben erhalten bei Spannungsausfall und beim Anlauf der CPU (bergang STOP RUN).

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 13

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

2.8

Adressierung

2.8.1 Direkte Adressierung


Ist die berwiegend verwendete Adressierungsart. Man kann die Operanden entweder absolut adressieren durch Angabe der Bezeichnung (z.B. E2.3) oder symbolisch adressieren durch eine symbolische Bezeichnung der Adresse (z.B. Sensor1). Symbolische Bezeichnungen werden mit dem Symboleditor erstellt und gelten fr das gesamte S7-Programm. Beispiele fr Direkte Adressierung:
Absolute Adressierung Symbolische Adressierung Beschreibung

U E2.3 L EB1

U Sensor1 L Eingnge

UND-Operation mit dem Eingangsbit E2.3 Lade-Operation: Lade EingangsByte EB1 in Akku1

2.8.2 Indirekte Adressierung


Bei speziellen Problemstellungen kann eine Indirekte Adressierung verwendet werden; allerdings ist diese nur unter AWL verfgbar. Statt fester Adressen wird eine Speicherstelle bezeichnet, in der die eigentliche Adresse des Operanden steht (Verwendung von pointern). Beispiele fr Indirekte Adressierung: U A [MD 12] UND-Operation; die Adresse des Ausgangs steht im MerkerDoppelwort 12 SI T [LW8] Starte Timer; die Timer-Nummer steht im LokaldatenWort 8

2.8.3 Adressierung mit Pointer


Variablen vom Datentyp ANY werden bei Bausteinaufrufen mit einem Zeigeroperator (p=pointer) bergeben, der auf die Anfangsadresse der Variablen zeigt. Es kann auch ein Speicherbereich eingesetzt werden. Zusammen mit einer Angabe ber die Menge der nachfolgenden Daten ist der Speicherbereich definiert. Syntax fr Speicherbereich:
Beispiele: p# M 50.0 p# A 10.0 p# DB 10. DBX5.0

p# Bereichskennung Anfangs-Byte.Bit Datentyp


Byte 10 BOOl 4 S5TIME 3

Wiederholfaktor

// 10 Bytes im Speicherbereich Merker MB 50... MB 59 // 4 Bit im Speicherbereich Ausgnge A 10.0.... A 10.3 // 3 Daten vom Typ S5TIME, die in DB10 gespeichert sind // und zwar in DB10 Byte 5 ... 10

2.8.4 Adresszusammenhang Bit, Byte, Wort, Doppelwort


Es ist wichtig zu wissen, wie Datentypen im Speicher angeordnet sind. Es gibt nmlich keine getrennten Speicherbereiche fr z.B. Bits oder Bytes! Die folgende Tabelle zeigt, wie die verschiedenen Datentypen miteinander verzahnt sind:

Angenommen, es handelt sich um Operanden aus dem Merkerbereich. Dann lassen sich aus der Tabelle beispielsweise folgende Werte fr die Operanden ablesen:
BOOL: BYTE: WORD: DWORD: M10.0 =1; M 10.1 =1; ... MB 10 = 17 Hex; MW 10 = 1707 Hex MD 10 = 1707F041 Hex
M 10.7 =0; MB 11 = 07 Hex; MW 11 = 07F0 Hex ... usw ... MB 12 = F0 Hex; MW12 = F041 Hex
M13.0 =1; M13.1 =0; ... M13.7 =0
MB 13 = 41 Hex

Der Anwenderspeicherspeicher ist also Byteweise organisiert: Binre Operanden sind auf das jeweilige Byte bezogen, in dem sie vorkommen und die Nummer von Wrtern und Doppelwrtern bezieht sich auf das hchstwertige Byte!

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 14

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Vorsicht Programmierfehler! Die oben beschriebene Mehrfachnutzung von Speicherplatz fr unterschiedliche Datentypen fhrt bei STEP7-
Einsteigern hufig zu Programmierfehlern! Da beispielsweise die Merker M10.0...M10.7 Untermengen von MB10
sind, verndert man durch Schreibzugriff auf MB10 auch automatisch diese Merker. Ebenso verndert man durch
Schreiben auf MW10 auch automatisch den Inhalt von MB11 usw.
Der beschriebene Speicheraufbau ermglicht ein geschicktes Programmieren, z.B. kann man alle binren Eingnge
parallel mit einer Ladeoperation in das PAE einlesen - allerdings knnen bei Unachtsamkeit bse Programmierfehler
entstehen!

Tip: Zur Vermeidung solcher Fehler sollte man in einem STEP7-Projekt die Operanden getrennt nach Datentypen in festgelegten Speicherbereichen ansiedeln! Am besten macht man hierfr ein Konzept vor der eigentlichen Programmierarbeit und erspart sich so die Mhe des Fehlersuchens. Beispiel:
Typ Merker-Bits: Merker-Bytes: Merker-Worte: Merker-Doppelworte festgelegter Adreraum MB10 ... MB19 MB20 ... MB39 MB40 ... MB59 MB60 ... MB99 Reihenfolge der Vergabe M10.0 M10.1 M10.2 MB20 MB22 MB21 MW40 MW42 MW44 MD60 MD64 MD68 ... ... ... ... ... bis M19.7 MB39 MW58 MD96

2.9

Schreibweise zum Eingeben von Werten

STEP7 bietet Schreibweisen zum Eingeben oder Anzeigen von Daten in verschiedenen Formaten. Whrend die meisten Schreibweisen einem bestimmten Datentyp entsprechen, knnen einige fr mehrere Datentypen verwendet werden. Folgende Schreibweisen sind zulssig:
Schreibweise 2# True/False B#(...) B#16# W#16# DW#16# Ganzzahl L# Gleitpunktzahl C# T# D# TOD# S5T# Datentyp WORD DWORD BOOL WORD DWORD BYTE WORD DWORD INT DINT REAL WORD TIME DATE TOD S5TIME Beschreibung Beispiel (e) Binre Schreibweise 2#0001_0000_0000_1101 Binre Schreibweise 2#1000_1111_0101_1101_0010_0000_0000_1101 TRUE oder FALSE TRUE, FALSE Wert der einzelnen Bytes dezimal B#(10,255) Wert der einzelnen Bytes dezimal B#(100,114,2,10) Byte hexadezimal B#16#4F Wort hexadezimal W#16#FF1B Doppelwort hexadezimal DW#16#09A2_FF13 IEC-Ganzzahlformat mit Vorzeichen in Bit 15 -2270 32767 32Bit Ganzzahlformat, Vorzeichen in Bit 31 L#44520 L#-49245 IEC-Gleitpunktzahlenformat 3.14 1.234567e+13 16Bit Zhlerkonstante 0...999 C#500 T#TageD_StundH_MinutM_SekundS_MillisekMS T#0D_1H_10M_22S_100MS D#Jahr-Monat-Tag D#1997-3-15 TOD#Stunden:Minuten:Sekunden:Millisekunden TOD#13:24:33:555 S5T#TageD_StundH_MinutM_SekundS_MillisekMS S5T#12M_22S_100MS

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 15

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

3 Beispiele in FUP/KOP und AWL


3.1 Logische Verknpfung
Die folgenden kleinen Programm beispiele sind zum Vergleich jeweils in den 3 Sprachen dargestellt. FUP und KOP sind im Sprachumfang gleich. Insbesondere bei den etwas kom plexeren Funktionen sind sie sehr hnlich. Daher sollte man nicht mit FUP und KOP gleichermaen arbeiten, sondern sich fr eine der beiden entscheiden.

3.2

Flip Flop und Flankenerkennung

Gezeigt ist ein ein FlipFlop mit domi nandem Rcksetzeingang. Flankenerkennungen bentigen einen freien binren Operanden zum Speichern des frheren Signal zustands, hier M1.0. Gezeigt ist die Verwendung der Operation P zur Erkennung einer positiven, d.h. ansteigenden Flanke.

3.3

Timer

Der Zeitwert S5Time!

ist

vom

Datentyp

Neben dem verwendeten Impuls timer gibt es noch Timer fr Einschaltverzgerung, Ausschalt verzgerung und speichernde Einschaltverzgerung.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 16

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

3.4

Zhler

Mit positiver Flanke 01 an S wird der Zhler auf den Wert ZW eingestellt. ZW ist im Format C#<Wert> Wert = 0..999 Neben dem Rckwrtszhler Vorwrtsund wrtszhler. dargestellten gibt es auch Vorwrts/Rck

3.5

Arithmetische Operation

Addition zweier Integerzahlen.

3.6

Bausteinaufruf
Gezeigt ist der bedingte Baustein aufruf: FC2 wird nur dann bearbeitet, wenn die Variable E3 den Wert TRUE hat. Auerdem gibt es noch einen absoluten Bausteinaufruf (Bearbei tung immer, ohne Bedingung). Unter FUP darf der Eingang EN dann einfach unbeschaltet bleiben (s.a. Abschnitt 3.5)

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 17

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

4 Handhabung der CPU


4.1 Betriebszustnde und bergnge
Die Betriebszustnde der CPU knnen mit dem Schlssel-Schalter an der CPU (STOP - RUN - RUN-P) oder durch Einstellungen am Programmiergert (siehe unten) eingestellt werden. Der Schlsselschalter hat dabei hhere Prioritt. Das Verhalten der CPU ist durch den jeweiligen Betriebszustand gekennzeichnet: STOP: Das Anwenderprogramm wird nicht bearbeitet. Ausgnge sind auf 0 gesetzt. Die CPU prft, ob Hardware oder Systemfehler vorliegen. Das Urlschen ist mglich. ANLAUF: Bevor die CPU nach dem Einschalten mit der Bearbeitung des Anwenderprogramms beginnt, veranlat das Betriebssystem den Aufruf des OB100 (Neustart). Im OB1 knnen Sie Voreinstellungen fr den Start des zyklischen OB1-Programms vornehmen. RUN: Bearbeitung des zyklischen OB1-Anwenderprogramms RUN-P: RUN-Zustand, in dem zustzlich Bausteine vom Programmiergert geladen werden knnen. Vorsicht! Nach Ablauf des Ladens setzt die CPU mit den neuen Bausteinen die zyklische Bearbeitung fort! HALT: Dies ist eine selten verwendete Betriebsart zu Testzwecken. Dabei werden die Grundtakte der Zeitsteuerung angehalten und die Timer bleiben stehen.

4.2

Laden des Anwenderprogramms


Programm-Bausteine sind im Ladespeicher der CPU
abgelegt. Fr Testzwecke und im Labor gengt
normalerweise das Ablegen der Bausteine im RAM.
Dies geschieht vom SIMATIC-Manager aus mit:
Zielsystem Laden Objekt, z.B. S7-Programm
Das EPROM wird angesprochen mit
Zielsystem RAM nach ROM kopieren
EPROM-Memory Cards im Slot der CPU werden
angesprochen mit
Zielsystem Laden in Memory-Card Objekt

4.3

Urlschen der CPU

Beim sogenannten Urlschen wird der Arbeitsspeicher und RAM-Ladespeicher der CPU gelscht. Auerdem werden alle CPU- und Baugruppenparameter auf die Default-Einstellungen zurckgesetzt. Man sollte die CPU vor dem Laden eines neuen Anwenderprogramms urlschen. Die CPU mu dabei im Betriebszustand STOP sein. Zum Urlschen mit dem Programmiergert sind vom SIMATIC Manager aus die folgenden Schritte erforderlich: Erreichbare Teilnehmer CPU auswhlen Und dann: Zielsystem Zielsystem Betriebszustand CPU auf STOP Urlschen

4.4

Verhalten der CPU bei Netzausfall


Batteriepufferung Die meisten CPUs haben eine Batteriepufferung. Dadurch sind Codebausteine (OB,FC,FB) und Datenbausteine (DB) geschtzt. Ebenso die remanenten Merker, Zeiten und Zhler (siehe auch unter Remanenz). Nicht remanente Operanden erhalten nach Netzausfall automatisch den Wert 0.

Um die CPU vor Datenverlust zu schtzen, gibt es je nach CPU verschiedene Methoden:

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 18

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

EPROM, Memory-Card
Verschiedene CPUs haben einen Slot fr Memory-Card oder einen eingebauten E(E)PROM-Bereich. Sofern das
Programm in den EPROM-Bereich geladen wurde, sind Code- und Datenbausteine vor Datenverlust bei Netzausfall
geschtzt - auch ohne Batteriepufferung.
CPUs ohne Batterie-Fach Falls eine CPU keine Batterie hat (zB. CPU 312IFM), existiert ein E(E)PROM-Bereich zum Schutz der Daten bei
Stromausfall. Nach dem normalen Laden des S7-Programms in den RAM-Bereich der CPU sichert man die Daten
wie folgt:
SIMATIC Manager (Online) die betreffende CPU markieren rechte Maustaste
Zielsystem RAM nach ROM kopieren

5 Erste bung am STEP7-Arbeitsplatz


5.1 Ein STEP7 Programm erstellen
Fr Ihr erstes Step7-Projekt soll die Aufgabe bewut einfach sein, damit Sie sich auf die Programmierumgebung konzentrieren knnen. Es soll nur eine S7- Station existieren. Aufgabe: Ein selbst programmierter Zeittakt soll einen Zhler inkrementieren, solange der Eingang Zhlen =1 ist. Auerdem soll mglich sein, den aktuellen Zhlerstand am Ausgang dual anzuzeigen und den Zhler ber einen Eingang rckzusetzen.

5.1.1 STEP7 starten


Sie starten die Software aus Windows, indem Sie auf das Symbol fr den SIMATIC Manager doppelklicken. Der SIMATIC Manager ermglicht eine bersicht ber vorhandene Projekte und Bibliotheken auf dem Datentrger. Alle Objekte eines Projekts werden hierarchisch dargestellt. ber die Objekte erhalten Sie einfachen Zugang zu allen Funktionen. Sie knnen neue Projekte erstellen, kopieren, lschen, archivieren. Sie knnen Daten in angeschlossene Automatisierungsgerte laden.

5.1.2 Ein neues Projekt erzeugen


Legen Sie fest, in welchem Verzeichnis Ihr Projekt abgelegt werden soll:
SIMATIC Manager Extras Einstellungen SIMATIC Manager Ablageort fr Projekte u. Bibliotheken
Sie knnen die Voreinstellung ..\STEP7\S7proj aber auch so lassen. Zur Erstellung eines neuen Projekts nutzen
Sie die Hilfe des Projekt-Assistenten: SIMATIC-Manager Datei Assistent Neues Projekt
Geben Sie den CPU-Typ Ihrer S7-Station an. Als MPI-Adresse knnen Sie die Defaulteinstellung (MPI=2) lassen,
wenn nur eine Station angeschlossen ist. Klicken Sie die Vorschau an, um die entstehende Projektstruktur zu
kontrollieren.
Mit Weiter kommen Sie in das nchste Fenster. Hier knnen Sie die bentigten OBs auswhlen. Verschaffen Sie
sich einen ersten berblick ber die vorhandenen OBs und deren Funktion.
Whlen Sie als Baustein den OB1 und als Voreinstellung fr die Programmiersprache FUP .
Mit Weiter kommen Sie in das nchste Fenster. Tragen Sie einen aussagekrftigen Namen Ihres Projekts ein.
Sind Sie mit den Einstellungen zufrieden, schlieen Sie den Projekt-Assistenten mit Fertigstellen.
Betrachten Sie im SIMATIC Manager Ihr neues Projekt. Klicken Sie mit der rechten Maustaste einzelne Objekte an,
z.B. S7-Programm. Es klappt jeweils ein Men auf mit Mglichkeiten, was Sie mit dem Objekt machen knnen, z.B.
Kopieren, Lschen, Einfgen etc. Unter Objekteigenschaften knnen Sie beispielsweise eine Kurzbeschreibung des
Objekts anfordern.
Lschen Sie im S7-Programm den Behlter Quellen. Da wir jetzt nur unter AWL,FUP,KOP programmieren wollen,
brauchen wir ihn nicht.

5.1.3

Umgang mit dem S7 Manager

Nach dem Verlassen von STEP7 wrde bei Ihrer nchsten Arbeitssitzung automatisch das zuletzt bearbeitete Projekt
geladen werden. Ein beliebiges Projekt whlen Sie aus mit:
SIMATIC Manager Datei ffnen Projekt

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 19

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Statt ffnen knnen Sie hier entsprechend ein Projekt schlieen, lschen, archivieren etc. Nutzen Sie die Online-
Hilfe, wenn Sie ein Vorgang besonders interessiert. Wichtig ist Projekt archivieren, da ein Speichern des Projekts
auf Diskette wegen der Datenmenge praktisch nur mglich ist mit einer komprimierten Archivdatei.
Im Fenster "ffnen Projekt" knnen Sie sich mit Durchsuchen eine bersicht ber die vorhandenen Projekte
verschaffen. Wenn Sie genug probiert haben, stellen Sie Ihr Projekt wieder ein.

5.1.4 Die Hardware konfigurieren

Unter Hardware konfigurieren versteht man die Festlegung, aus welchen Baugruppen die Station besteht.
Prinzipiell ist es egal, ob Sie erst das Programm erstellen und danach die Stations-Hardware konfigurieren oder umgekehrt. Sptestens aber, ehe Sie Ihre Programmbausteine in das Automatisierungsgert laden, mu die vorhandene Hardware konfiguriert sein. ffnen Sie das Objekt Hardware: Klicken Sie mit der rechten Maustaste auf das Objekt Hardware im Behlter SIMATIC 300-Station und whlen Sie Objekt ffnen, (Auch ein Doppelklick mit der linken Maustaste auf das Objekt Hardware fhrt zum Ziel). Es erscheint das Fenster Hardware Konfigurieren mit einem BaugruppentrgerSymbol. Falls der Hardware-Katalog auf der rechten Bildschirmseite noch nicht sichtbar ist, veranlassen Sie dies mit: Einfgen Hardware-Komponenten Verschaffen Sie sich einen berblick ber die Komponenten des knnen Sie Unter-Objekte ffnen durch anklicken des Symbols: Hardware-Katalogs! Wie unter Windows blich,

Nun knnen Sie den Baugruppentrger bestcken, indem Sie Komponenten im Hardware-Katalog anklicken und bei gedrckter Maustaste auf den entsprechenden Bestckungsplatz ziehen. Orientieren Sie sich bei der Auswahl der Komponenten an der Ihren zur Verfgung stehenden SIMATIC-Station. Reservierung der Steckpltze:
Steckplatz Steckplatz Steckplatz Steckpltze 1: 2: 3: 4..11: reserviert fr die Stromversorgung reserviert fr die CPU. bleibt frei Signalbaugruppen digital/analog PS (Power Supply) SM (Signal Modul)

Baugruppen-Adressen
Die Adressen der I/O-Signale einer bestimmten Baugruppe sind abhngig von den Eigenschaften der Baugruppe
(E/A und Anzahl der Byte) und von dem Steckplatz, aus dem sich die Anfangsadresse ergibt.
Tip: Neben den anderen Objekt-Eigenschaften knnen Sie sich auch die Baugruppen-Anfangsadressen direkt ausgeben lassen: Rechter Maustklick auf die betreffende Baugruppe, dann: Objekteigenschaften Adressen Beispiel: Baugruppe fr 16 digitale Ausgnge am Steckplatz 5 Wegen Steckplatz 5 gilt: Anfangsadresse = 4 (dezimal) Die Baugruppe belegt 16 Bit, also 2 Byte im Peripheriebereich der Ausgnge ab der Anfangsadresse Daher sind verfgbar: AB4 und AB5 oder: A4.0 ... A4.7, A5.0 ... A5.7

Speichern Sie Ihre Hardwarekonfiguration mit: Station Speichern

5.1.5 Die Baugruppen parametrieren


Die CPU und auch verschiedene andere Baugruppen knnen parametriert werden, d.h. per Software kann die
Funktionalitt verndert werden. Gehen Sie dazu wie folgt vor:
Rechter Mausklick auf die die betreffende Baugruppe, z.B. CPU, dann: Objekteigenschaften
Verschaffen Sie sich jetzt nur einen ersten Einblick in die Parametriermglichkeiten Ihrer CPU.
Tip: Interessant ist z.B. der Parameter Zyklusberwachungszeit im Men Zyklus/Taktmerker. Damit kann die sptere Bearbeitung des OB1-Zyklus berwacht werden: Falls die Zyklus-Dauer des OB1-Bausteins wegen LaufzeitFehlern lnger ist als der eingestellte Parameter, wird die CPU automatisch in den STOP-Modus geschaltet. Interessant ist auch die Einstellung der remanenten Merker,Timer,Zhler im Men Remanenz. Die als remanent gekennzeichneten Operatoren werden spter vor Datenverlust bei Spannungsausfall geschtzt. Lassen Sie alle eingestellten Parameter, wie sie in der Voreinstellung vorgesehen sind. Verlassen Sie das Fenster Hardware Konfigurieren.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 20

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

5.1.6 Erstellen einer Symboltabelle


Sinn der Symboltabelle ist, eine Zuordnung von absoluten Operanden (z.B. A4.0) zu aussagekrftigen symbolischen Bezeichnungen (z.B. Ventil 1) zu schaffen. Dadurch wird das Programm bersichtlicher. Wichtig: Die Symboltabelle gilt fr das ganze S7-Programm, nicht nur fr einen einzelnen Baustein! Den Symboleditor zur Erstellung der Symboltabelle starten Sie vom SIMATIC Manager aus im Behlter S7-
Programm durch Doppelklicken auf Symbole:
Es erscheint das Fenster "Symbol Editor". Die Programmumgebung hat bereits fr den absoluten Operanden OB1
ein Symbol vorgeschlagen. Das knnen Sie lschen oder auch so lassen - wie Sie mchten.
Erstellen Sie die folgende Symboltabelle. Achten Sie dabei in der Spalte Symbol auf Gro/Kleinschreibung! Falls
Sie Probleme beim Editieren haben, nutzen Sie die die Online-Hilfe.
Symbol
Zhlen Reset Zeit1 Zeit2 Zhl_Dual Zhl_BCD Zhl_Q

Adresse
E0.0 *) E0.1 *) MW0 MW2 AW4 *) MW4 M1.1

Datentyp
BOOL BOOL WORD WORD WORD WORD BOOL

Kommentar
Zhlerstand automatisch inkrementiert, wenn Zhlen=1
Zhlerstand auf 0 gesetzt, wenn Reset=1
Zeitablauf Timer 1
Zeitablauf Timer 2
Zhlerstand als Dualwert
Zhlerstand als BCD-Wert
Status des Zhlers Zhl_Q=1 wenn Zhlerstand > 0

*) berzeugen Sie sich, da auch Ihre Station mit den entsprechenden I/O-Baugruppen bestckt ist (oder fragen Sie Ihren
Betreuer) und ndern Sie gegebenenfalls die Adressen!
Probieren Sie die verschiedenen Sortiermglichkeiten, um die Datenstze der Symboltabelle darzustellen, mit: Symbol Editor Ansicht Sortieren Sortierkriterium... Speichern Sie Ihre Symboltabelle und schlieen Sie den Symbol Editor.

5.1.7 Bausteine Editieren


Sie wissen, mit den SPS-Programmiersprachen knnen strukturierte Programme aufgebaut werden. Ein Programm besteht im allgemeinen aus mehreren oder vielen Bausteinen, die im OB1 aufgerufen werden. Der OB1 ist dabei so etwas wie ein Hauptprogramm, das stndig im Zyklus abluft. Ihr erstes kleines Programm soll -der Einfachheit halber- nur aus dem OB1 bestehen. ffnen Sie das bereits vorhandene Objekt OB1 im Behlter Bausteine durch anklicken von OB1 mit der rechten Maustaste und Objekt ffnen . Tip: Sie knnen ein Objekt auch ffnen durch Doppelklicken auf das Objekt. Einen neuen Baustein knnen Sie erzeugen im SIMATIC Manager mit: Anklicken des Objekts Bausteine mit der rechten Maustaste, dann: Neues Objekt einfgen Baustein-Typ whlen Es erscheint das Fenster KOP/AWL/FUP..Projektname..OB1. In diesem Baustein-Editor knnen Sie den OB1 in der
gewnschten Sprache erstellen. Im oberen Teil ist die Deklarationstabelle, darunter knnen die Anweisungen fr den
OB1 editiert werden.
Um die Deklarationstabelle brauchen Sie sich jetzt nicht zu kmmern, nur so viel: von STEP7 wurden per
Voreinstellung bereits lokale Variable deklariert, auf die im Bedarfsfall zugegriffen werden kann. Beispielsweise
bergibt das Betriebssystem einer Variablen OB1_Date_Time den Startzeitpunkt des aktuellen Zyklus. Damit Sie
mehr Platz auf dem Bildschirm haben, knnen Sie die Deklarationstabelle am unteren Rand mit der Maus packen
und nach oben zusammenschieben.
Nun sind noch einige Einstellungen zu machen mit dem Men Ansicht:
Programmiersprache einstellen: Symbolische Darstellung: Symbolinformation: Baustein-Kommentare untersttzen: Vergrern, Verkleinern, Zoomfaktor FUP Ein Ein Ein nach Bedarf...

Ein Baustein wird unterteilt in ein oder mehrere Netzwerke, die nacheinander bearbeitet werden. Unser kurzes Programm pat in zwei Netzwerke.

Editieren Sie die beiden Netzwerke.


Hinweis: Die fertigen Netzwerke finden Sie auf der nchsten Seite ausgedruckt!

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 21

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik




Editieren Sie ein Netzwerk am besten von rechts nach links, d.h. beginnen Sie am Ausgang! Zuerst setzen Sie die einzelnen Programmelemente und tragen schlielich die Operanden ein. Bei den Operanden knnen Sie absolute und symbolische Bezeichnungen verwenden (soweit diese bereits im Symbol Editor definiert wurden).
Symbolische Bezeichnungen mssen gekennzeichnet werden durch Anfhrungszeichen, z.B. Zhlen. Bei den Symbolischen Bezeichnungen achten Sie auf auf richtige Gro/Kleinschreibung entsprechend Ihrer Definition!
Ihre Eingaben werden Schritt fr Schritt von STEP7 auf Fehler untersucht. Falsche Eingaben werden rot gekennzeichnet. Nutzen Sie bei Bedarf die Online-Hilfe.
Zeigen Sie die vorhandenen Programmelemente an mit Einfgen Programmelemente,
oder durch klicken auf:

Falls Sie die Programmelemente am rechten Bildrand jetzt noch nicht sehen: Packen Sie im Fenster KOP/FUP/AWL
den rechten senkrechten Bildrand und ziehen ihn nach links. Damit schaffen Sie Platz fr das Dialogfeld
Programmelemente. Verschaffen Sie sich einen berblick ber die vorhandenen Programmelemente!
Whlen Sie jeweils aus den Programmelementen das geeignete Objekt aus und ziehen Sie es bei gedrckter
Maustaste in den Anweisungsteil Ihes Netzwerks, also z.B.:
Programmelemente Zeiten Bitverknpfung S-Impuls Negationspunkt (SIMATIC Timer, Impuls)
(Binre Negation)

die Operanden tragen Sie ein an den Stellen mit: ???


Ein neues Netzwerk erreichen Sie mit:
schlielich im 2. Netzwerk:
Programmelemente Zhler Bitverknpfung

Z_VORW -[=]

(Vorwrtszhler)
(Binre Zuweisungsoperation, oder Spule)

Am besten tragen Sie jetzt zum kennenlernen die verschiedenen Kommentare ein. Sie haben folgende Stellen, an denen Sie im Baustein Kommentar eintragen knnen:
Kommentare: FUP/KOP/AWL Baustein-berschrift Baustein-Kommentar Netzwerk-berschrift Netzwerk-Kommentar hinter OB1 unter der Bausteinberschrift hinter Netzwerk 1 unter Netzwerk-berschrift

unter AWL haben Sie auerdem noch die Mglichkeit zu einem Zeilenkommentar hinter dem Trennzeichen: // Beispiel: U E2.3 // dies ist ein Zeilenkommentar

Es ist uerst sinnvoll, den erklrenden Text gleich beim Editieren der Netzwerke bzw. des Baustein einzutragen, dann mssen Sie ein Programm spter nicht noch mal entwickeln...

So etwa sollte Ihr OB1 schlielich aussehen!

Tip: Schalten Sie testhalber um in die anderen Sprachen KOP und AWL, damit Sie einen Eindruck bekommen, wie KOP und AWL funktioniert. Umschalten mit zB.: Ansicht KOP

Den Baustein abspeichern

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 22

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

5.2

Das Programm in das Zielsystem laden

5.2.1 Verbindung zum Automatisierungsgert

berzeugen Sie sich, dass Ihre S7-Station am Programmiergert angeschlossen und mit Strom versorgt ist.

5.2.2 Urlschen der CPU


Bevor die Programme eines neuen Projekts zum ersten Mal in das Automatisierungsgert (AG) geladen werden, ist
es sinnvoll, durch Urlschen der CPU eine definierte Ausgangssituation zu schaffen: alte Bausteine und Daten
werden gelscht, Systemeinstellungen erhalten Voreinstellungswerte.
Zum Urlschen mit dem Programmiergert mu der Schlsselschalter auf STOP stehen (LEDs kontrollieren).

SIMATIC Manager dann

Erreichbare Teilnehmer MPI-Stationsadresse markieren (hier: MPI=2),


Zielsystem Urlschen

5.2.3 Programm bertragen


Im Allgemeinen besteht das CPU-Programm aus mehreren oder vielen Bausteinen. Sie knnen alle Bausteine in einem Stck in das Automatisierungsgert (AG) laden durch Verwendung des SIMATIC Managers. SIMATIC Manager Behlter Bausteine des S7-Programms markieren, dann Zielsystem Laden Wenn Sie nur einen Baustein haben oder aktuelle nderungen nur einen Baustein des CPU-Programms betreffen
(alle anderen Bausteine also bereits im AG vorhanden sind), knnen Sie aus dem KOP/AWL/FUP-Editor heraus den
gerade geffneten Baustein alleine bertragen mit:
KOP/AWL/FUP-Editor Zielsystem Laden

5.2.4 Das Automatisierungsgert starten


Bringen Sie den Schalter am AG in die Stellung RUN. Nun knnen Sie auch vom Programmiergert aus das AG
stoppen oder wieder erneut starten mit:
SIMATIC Manager Erreichbare Teilnehmer MPI-Stationsadresse markieren (hier: MPI=2), dann
Zielsystem STOP bzw. Start

5.3

Das Programm testen

Natrlich gibt es triviale Mglichkeiten zum Testen des Programms: Einfach auf auf die LEDs der Ein/Ausgnge
schauen oder gar frech einfach die zu steuernde Anlage anschlieen. Aus Sicherheitsgrnden ist aber dringend
davon abzuraten!!!
Nutzen Sie die in STEP7 vorhandenen Testhilfen, um die Fehlerfreiheit Ihres Anwenderprogramms zu beweisen, ehe
eine Anlage angeschlossen wird.
Dazu mssen Sie eine Online-Verbindung zum AG herstellen:

5.3.1 Onlinedarstellung im S7 Manager


SIMATIC Manager Ansicht Online oder dieses Symbol anklicken:
ffnen Sie aus dem Behlter Bausteine Ihren OB1. Damit kommen Sie in Online-Darstellung in den
KOP/AWL/FUP-Editor.
Sie haben nun zwei grundstzlich verschiede Testhilfen zur Verfgung:

5.3.2 Bausteinorientierte Testhilfe


Hierbei werden Variablenwerte in einem bestimmten Baustein -und dort in einem bestimmten Netzwerk- online dargestellt. Die Testumgebung eignet sich vor allem zur Fehlersuche auf Bausteinebene und zur Untersuchung einzelner Programmsequenzen.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 23

Dipl.Ing. Norbert Heinlein Starten Sie den Test mit: Test Beobachten

FH Frankfurt, Labor fr Automatisierungstechnik

Jetzt knnen Sie sie die Variablenwerte betrachten. Sie sehen, wie die Werte sich im jeweiligen Netzwerk verhalten. Machen Sie sich vertraut mit der Testumgebung. Sie verlassen die Testhilfe durch erneutes anklicken von: Test Beobachten.

5.3.3 Variablenorientierte Testhilfe:


Hierbei knnen Sie Variablenwerte an einem bestimmten Triggerpunkt im Programm (i.a. am OB1-Zyklusende)
online betrachten. Sie erstellen eine Tabelle der interessanten Variablen und legen die Triggerbedingung fest. Diese
Testhilfe eignet sich besonders gut, einen berblick ber die Funktion des gesamten CPU-Programms zu erhalten.
Auch bei der spteren Inbetriebnahme der Anlage ist sie gut einsetzbar. Die Variablen-Tabelle bekommt einen
Namen (z.B. VAT12) und wird als Bestandteil des CPU-Programms abgespeichert. Sinn ist, bereits bei der
Programmentwicklung eine brauchbare Testumgebung zu gestalten.
Starten Sie den Test aus dem Fenster KOP/AWL/FUP(Online) mit: Zielsystem Variable beobachten/steuern
Es erscheint ein Fenster Variable beobachten und steuern. Tragen
Sie in die Tabelle Ihre Operanden ein wie nebenstehend. Es
gengt, absolute Operanden einzutragen, der Rest wird von STEP7
automatisch eingetragen.

Operand E0.0 E0.1 MW0 MW2 AW4 MW4 M1.1 Symbol Zhlen Reset Zeit1 Zeit2 Zhl_Dual Zhl_Dez Zhl_Q Status-Format
Bin
Bin
Dez
Dez
Dez
Dez
Bin

Starten Sie Variablen Beobachten: Variable Beobachten.


Jetzt knnen Sie betrachten, wie die Werte Ihre Variablen am festgelegten Triggerpunkt des Programms sich im Lauf der Zeit verndern. Sie stoppen die Testhilfe durch erneutes anklicken von: Variable Beobachten

5.3.3.1 Variablen Beobachten

5.3.3.2 Variablen Steuern


Sie knnen zu Testzwecken an einem bestimmten Triggerpunkt im Programm den Wert von Variablen gezielt ndern! Tragen Sie die gewnschten Werte in die Spalte Steuerwerte der Variablentabelle ein. Beim Start der Testhilfe werden die Variablen in der CPU mit den Steuerwerten initialisiert. Anschlieend ndern sie sich entsprechend den Programmanweisungen. Probieren Sie, den Zhler (Variable Z1) testhalber auf einen bestimmten Wert zu setzen.

Ende Ihrer Ersten Sitzung am Programmiergert

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 24

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

6 Funktion (FC)
Im diesem Abschnitt werden die wesentlichen Aspekte bei der Erstellung und Verwendung von Funktionen
behandelt. Das geschieht am Beispiel eines speziellen Multiplizierers.

Beispiel-Funktion

Es soll eine Funktion erstellt werden, die das Ergebnis Y = A*B*C zurckliefert. Die Variablen sind alle vom Typ DINT
(Ganzzahl, 32 Bit). Wenn die Faktoren zu gro sind, wird der zulssige Zahlenbereich von Y berschritten und das
Ergebnis ist falsch! Deshalb sollte der Erfolg der Berechnung dem aufrufenden Baustein mitgeteilt werden.
Wegen Y= A*B*C= (A*B)*C kann die Berechnung der Multiplikation aus zwei hintereinander
geschalteten Multiplizierern mit jeweils 2 Eingngen zusammengesetzt werden.
STEP7 stellt fertige Multiplizierer mit zwei Eingngen zur Verfgung. In der Liste der Programmelemente ist die Operation MUL_DI (Multiplikation fr Variable vom Typ DINT) zu finden.




Die Operanden EN und ENO kommen in FUP/KOP


bei der Darstellung von FCs, FBs und aufwendigen
Programmelementen, vor, wie auch die neben
stehende Beschreibung von MUL_DI zeigt.

aus der Online-Hilfe zu MUL_DI

6.1 Die Operanden EN (Enable) und ENO (Enable Out)


Wenn unter FUP/KOP eine Funktion aufgerufen wird, erscheint ein Block mit den Bausteinparametern, die von auen entsprechend beschaltet werden. Eine Besonderheit sind dabei die Operanden EN auf der Eingangs- und ENO auf der Ausgangsseite. Sie werden zur Programmsteuerung und zur Behandlung von Laufzeitfehlern whrend der Bearbeitung verwendet.
Die Operanden EN und ENO sind dem Wert des Statusflags BIE (Binrergebnis) der CPU fest zugeordnet und brauchen deshalb im Baustein nicht deklariert zu werden.
EN ENO entspricht dem Wert von BIE vor der Bearbeitung,
entspricht dem Wert von BIE nach der Bearbeitung des jeweiligen Funktionsblocks.



Unter AWL treten diese Operanden nicht auf. Hier wird stattdessen direkt mit dem Statusflag BIE gearbeitet EN (Enable) Der betreffende Funktionsblock wird nur dann bearbeitet, wenn EN = 1 ist. Im anderen Fall wird er bersprungen. Im Zusammenhang mit einem Bausteinaufruf ist EN die Bedingung, ob der Baustein tatschlich bearbeitet wird oder bersprungen wird. Bearbeitung des Funktionsblocks dann, wenn: EN = 1

ENO (Enable Out) Der Wert von ENO bzw. BIE wird durch Programmanweisungen im betreffenden Funktionsblock festgelegt. Es gilt
folgende Konvention zur Programmsteuerung:
Man setzt ENO in Abhngigkeit von evtl. Laufzeitfehlern durch einem Schreibzugriff auf das Statusflag BIE
(Binrergebnis) auf folgenden Wert: Bearbeitung des Bausteins ohne Fehler: Fehler aufgetreten: BIE = 1 BIE = 0 (ENO = 1) (ENO = 0)

Die letzte Operation vor dem Verlassen des Bausteins sollte also die Zuweisung eines entsprechenden Wertes auf das BIE-Flag sein. Damit wird der ENO des gesamten Bausteins festgelegt. Hierfr wird unter AWL die Operation SAVE verwendet. BIE wird wird dieser Operation auf den Wert des Statusflags VKE (Verknpfungsergebnis) gesetzt.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 25

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Mit der Operation SAVE wird der Inhalt des VKE (Verknpfungsergebnis) dem BIE zugewiesen

Man erstellt also ein VKE entsprechend der Programmsteuerungs-Konvention und weist am Bausteinende durch eine SAVE-Operation den Wert dem BIE-Flag zu. Da von den vielen Operationsbefehlen unter STEP7 lediglich SAVE einen Einflu auf das BIE-Flag besitzt, gilt auerdem noch die folgende Regel: Wenn keine Operation SAVE vorkommt, ist: ENO = EN

Beispiel: BIE soll mit dem Wert von Merker M1.0 belegt werden. In den verschiedenen Sprachen sieht die Operation so aus: FUP KOP AWL U M1.0 SAVE

6.2

Erstellen einer Funktion

Selbstverstndlich mu ein Baustein bereits existieren, ehe er aufgerufen werden kann! Ideshalb wird als erstes die Funktion erstellt. Im Deklarationsteil wird die Schnittstelle der Funktion nach auen festgelegt:

6.2.1 Deklarationsteil
Die Deklarationstabelle enthlt die Lokalen Variablen der Funktion. Als Eingnge (Deklarationstyp in) vom Datentyp DINT werden dem Baustein die drei Faktoren A, B, C bergeben. Der Ausgang Y (Deklarationstyp out) ist ebenfalls vom Datentyp DINT. Alle Formalparameter werden mit dem Anfangswert 0 initialisiert Das Zwischenergebnis A*B kann nach Verlassen des Bausteins vergessen werden; deshalb wird es als temporre Variable deklariert (Deklarationstyp temp).

6.2.2 Anweisungsteil in FUP und AWL


Anweisungsteil in FUP

Wenn unter FUP der EN Eingang unbeschaltet ist, wird der Block bearbeitet!
Zur Ermittlung des Baustein-ENO kann man hier einfach den ENO des ersten Blocks auf den EN des zweiten
durchschleifen (dann den ENO auf den EN des nchsten ...usw.). Der ENO des letzten Funktionsblocks mu ber
die Operation SAVE nach auen weitergegeben werden. Wrde oben die Save-Anweisung gelscht werden, wrde
ein berlauf-Fehler des zweiten Funktionsblocks nicht weitergegeben werden!
Im letzten Netzwerk wird als letzte Anweisung ber die Operation SAVE der Baustein-ENO gesetzt.
Meistens hat man es aber mit weniger komplexen Programmelementen zu tun, die selbst keine EN/ENO-Anschlsse
haben (z.B Binre Verknpfungen, FlipFlops, Zhler etc). Dann mu man den Wert des Baustein-ENOs eben selbst
programmieren. Dabei ist die bereits beschriebene Konvention zu beachten.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 26

Dipl.Ing. Norbert Heinlein Anweisungsteil desselben Netzwerks in AWL:

FH Frankfurt, Labor fr Automatisierungstechnik

Folgende AWL-Operationen sind im Zusammenhang mit dem Binrergebnis-Flag BIE besonders interessant:
Operation Beschreibung

SAVE CLR SET NOT

Wert von VKE BIE setzt VKE 0 setzt VKE 1 negiert das VKE

6.3

Aufrufen der Funktion


Aufruf unter FUP: Unter FUP erfolgt der Aufruf des FC mit dem Programmelement FC. Dort ist der bereits erstellte FC1 vorhanden und kann einfach ins Netzwerk gezogen werden.Falls der Aufruf von einer Bedingung abhngen soll, wird der EN-Eingang entsprechend beschaltet (Bearbeitung erfolgt, wenn EN=1 oder wenn EN unbeschaltet ist). Im Beispiel trgt der Merker 1.0 die Information, ob das Ergebnis Y stimmt.

Aufruf unter AWL: Unter AWL erfolgt der Aufruf mit der Operation CALL. Falls der Aufruf von einer Bedingung abhngig sein soll, mu durch entsprechende Sprunganweisungen die Zeile mit CALL bersprungen werden.

6.4

Fehlerbehandlung und Statusmeldungen

Manchmal reicht die bereits beschriebene Verwendung von EN/ENO zur Fehlerbehandlung nicht aus, um im
aufrufenden Baustein ausreichende Informationen ber den Bearbeitungsstatus zu bekommen.
In solchen Fllen ist es gebruchlich, im FC einen zustzlichen Ausgangsparameter fr Statusinformationen zu
deklarieren. Den Datentyp whlt man je nach Anforderungen. Der ENO wird als Sammelmeldung benutzt: irgend
etwas ist passiert, wenn ENO=0.
Im aufrufenden Baustein hat man zunchst nur ENO zu berwachen. Erst wenn ENO=0 ist, wird die
Statusinformation ausgewertet.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 27

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

7 Datenbaustein (DB)
In diesem Abschnitt werden die Erstellung, Adressierung der Daten und die Einsatzmglichkeiten von DBs behandelt. Das spezielle Umgehen mit Instanz-DBs wird im Abschnitt 8 zusammen mit Funktionsbausteinen erklrt. Die Datenstruktur und Lnge von DBs wird vom Anwenderprogramm festgelegt. Die Adressierung in Datenbausteinen ist auf Bytes bezogen, ebenso wie im Speicher der CPU. Die maximale Lnge eines DB und die Anzahl der Datenbausteine hngt ab von der jeweiligen CPU.
Beispiel: CPU 312 IFM (kleinste CPU der Reihe S7-300) max. 6 kByte (6144 Byte) DB 1 ... DB 63 DB0 ist reserviert fr Systemdaten

Gre eines DB: Anzahl Datenbausteine:

Grundstzlich knnen zwei verschiedene DB-Typen unterschieden werden: Instanz-DB dient einem FB als Gedchtnis und ist deshalb in seiner Datenstruktur festgelegt. Die Datenstruktur entspricht der Deklarationstabelle des zugehrigen FB und kann nicht verndert werden. Global-DB (oft auch nur als als Datenbaustein bezeichnet) Anwender-Speicherbereich, der in seiner Datenstruktur frei vereinbart werden kann Grundstzlich kann man auf alle DBs (auch auf Instanz-DBs) lesend und schreibend zugreifen durch Anweisungen in irgendwelchen Codebausteinen (OB, FC, FB).

7.1

Erzeugen eines Datenbausteins

Beim Erstellen eines neuen DBs wird festgelegt, um welchen Typ es sich handeln soll. Ein neuer DB wird erstellt
vom SIMATIC Manager aus mit:
S7-Programm Bausteine Einfgen S7-Baustein Datenbaustein
Nach Eintragen der DB-Nr (zB. DB2) und ffnen des Objekts erscheint ein Fenster Neuer Datenbaustein. Hier
wird der Typ festgelegt:
Die erste Auswahlmglichkeit betrifft einen Datenbaustein, bei dem die Datenstruktur frei festgelegt weden kann. Mit der letzten Auswahlmglichkeit kann ein sogenannter Instanz-DB erzeugt werden. Bei diesem liegt die Datenstruktur fest: sie wurde bereits festgelegt in den Deklarationen des zugeordneten Funktionsbausteins.

7.2

Festlegen der Datenstruktur

Nachdem ein neuer DB als Datenbaustein definiert wurde (s. vorheriger Abschnitt) erscheint eine Deklarationstabelle zum Festlegen der Datenstruktur. Eingetragen wird jeweils ein Name, Datentyp, Anfangswert und Kommentar. Die lokale Adresse vergibt STEP7 automatisch. Man beachte die unterschiedlichen Datentypen. In der linken Spalte Adresse ergibt sich automatisch die lokale Adresse.

Beispiel fr einen DB: (Deklarationssicht)

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 28

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Sobald die DB-Deklaration abgeschlossen und der DB abgespeichert ist, kann der Datenbaustein in der sogenannten Datensicht betrachtet werden mit: Ansicht Datensicht

In der Spalte Aktualwert ist zu sehen, da die Daten bereits auf den Anfangswert initialisiert wurden.

Derselbe DB in Datensicht

Tip: Man sollte fr den DB einen symbolischen Namen festlegen (zB. DB_Name)! Dann kann man bequem auf die einzelnen Datenstze zugreifen, z.B.mit DB_Name.Messwert[1]), s.a. nchster Abschnitt.

7.3

Adressierung der Daten

Der folgende Abschnitt betrifft den Zugriff auf Daten sowohl in Instanz- als auch in Global-Datenbausteinen. Die CPU hat fr die Adressierung der jeweiligen Datenbausteine 2 Register zur Verfgung, so da gleichzeitig zwei DBs komfortabel adressiert werden knnen: DB-Register DI - Register speichert die Nummer des (globalen) Datenbaustein speichert die Nummer des Instanz-Datenbausteins

Grundstzlich gibt es gibt zwei Mglichkeiten, auf Daten zuzugreifen:

7.3.1 Vollstndige Adressierung der Daten in einem Schritt


Diese Adressierungsart ist nur in Zusammenhang mit dem DB-Register verfgbar. Fr jeden Datenzugriff wird die
DB-Nummer mit angegeben. Die Methode ist bei etwas hherem Schreibaufwand sicherer in Projekten mit mehreren
Datenbausteinen (Programmierfehler).
Ein besonderer Vorteil besteht darin, da die Namen der deklarierten Datentypen zur Adressierung direkt verwendet
werden knnen. Dazu mu allerdings vorher fr den DB eine symbolische Bezeichnung definiert werden (Symbol-
Editor). Syntax: bei absoluter Adressierung: bei symbolischer Adressierung: DB-Nummer . Adresse DB-Name . Daten-Name

Beispiele Absolute Adressierung: Symbolische Adressierung: DB1. DB10. DB X2.5 DB W0 Erklrung der Adressbezeichner s. Abschnitt 7.3.2 Geschwindigkeit ist der symb. Name fr den DB, z.B. DB10 x_alt ist Daten-Name in der DB-Deklaration von DB10 Motor ist der symbolische Name fr den DB,, Leistung ist Daten-Name in der DB-Deklaration von DB3

Geschwindigkeit.x_alt Motor.Leistung

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 29

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

7.3.2 Adressierung mit: DB ffnen bzw. DI ffnen


Vorteil dieser Adressierung ist die krzere Schreibweise. Wenn im Projekt nur hchstens 2 Datenbausteine existieren
(ein DB und ein Instanz-DB), ist die Methode auch bersichtlich. Allerdings mssen die einzelnen Daten absolut
adressiert werden! Die Namen der deklarierten Daten knnen leider nicht verwendet werden.
Den DB ffnen ist nichts anderes, als dem DB- oder DI-Register die entsprechende DB-Nummer zuzuweisen. Dann
knnen die Daten dieses Datenbausteins in krzerer Schreibweise adressiert werden, nmlich durch Angabe der
Adresse innerhalb des DB.
Die Zuweisung der DB-Nummer zum jeweiligen Register geschieht in AWL durch die Operation AUF (ffnen,
aufschlagen):
AUF DB [DB-Nummer] bzw. AUF DI [DB-Nummer]
in FUP/KOP gibt es ein Programmelement Datenbaustein ffnen
Beispiel:
FUP: AWL: AUF DB 10; AUF DI 10

Die folgenden Bezeichnungen werden verwendet, um innerhalb eines DB die gewnschten Daten absolut zu adressieren: Wichtige Bezeichnungen:
Format DB X DB B DB W DB D DI X DI B DI W DI D Datentyp BOOL BYTE WORD DWORD BOOL BYTE WORD DWORD Beispiel DB X2.5 DB B2 DB W2 DB D4 DI X2.5 DI B2 DI W2 DI D4 Erklrung Bit5 im Byte2 ... Byte 2 ... Wort 2 (d.h. Byte 2,3) ... Doppelwort 4 (d.h. Wort 4,6 ... oder Byte 4,5,6,7) Bit5 im Byte2 ... Byte 2 ... Wort 2 (d.h. Byte 2,3) ... Doppelwort 4 (d.h. Wort 4,6 ... oder Byte 4,5,6,7) in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DB-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht in dem DB, dessen Nummer im DI-Register steht

Beispiele:
AUF DB 10 L DB W0 U DB X2.3 AUF L DI 11 DI B3

DB10 ffnen: DB-Nummer DB-Register


Lade Datenwort 0 von dem Datenbaustein, dessen Nummer im DB-Register steht, in den Akku1
UND-Verknpfung mit Bit 3 von Byte 2 in dem DB, dessen Nummer im DB-Register steht
DB11 als Instanz-DB ffnen: DB-Nummer DI-Register
lade Byte 3 von dem Datenbaustein, dessen Nummer im DI-Register steht

7.4

Weitere Operationen mit Datenbausteinen

Unter AWL sind auerdem die folgenden Operationen bei der Verwendung von Datenbausteinen wichtig: Weitere wichtige Operationen mit DBs
Lnge des geffneten DB: bzw: Nummer des geffneten DB: bzw: DBs tauschen L DBLG L DILG L DBNO L DINO TDB Lade Lnge des DB in Akku1 Lade Lnge des Instanz-DB in Akku1 Lade Nummer DB in Akku1 Lade Nummer Instanz-DB in Akku1 tauscht Inhalt DB-Register mit Inhalt DI-Register

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 30

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

8 Funktionsbaustein (FB)
8.1 Unterschied zur Funktion
Beim Aufruf eines FB mu ein Instanz-DB angegeben werden, der fr diese Instanz des FB als Speicher dient.
Wesentlicher Unterschied zu FCs ist die Mglichkeit, statische Variable zu deklarieren, deren Wert beim Verlassen
des FB erhalten bleiben.
Im Instanz-DB werden neben den statischen Variablen auch die aktuellen Werte der bergebenen Parameter (in, out,
in_out) gespeichert. Ansonsten gelten diesselben Eigenschaften wie bei Funktionen.

8.2

Anwendungsbeispiel: Zeitliche Ableitung eines Mesignals

Das folgende Beispiel zeigt, wie ein Funktionsbaustein und der Instanz-Datenbaustein zusammenarbeiten. Im FB10
wird der Differenzenquotient x/T gebildet, z.B. zur Berechnung der Geschwindigkeit aus einem gemessenen Weg.
Durch erneuten Aufruf des FB10 mit einem anderen Instanz-DB knnte beispielsweise die Beschleunigung berechnet
werden.
Eingangsgre ist der aktuelle Mewert x. Der alte Mewert x_alt wird als statische Variable (Deklarationstyp stat)
deklariert. Die Messung soll in gleichen Zeitabstnden erfolgen, der Wert von T kann daher als konstanter
Eingangsparameter beim Aufruf des FB10 bergeben werden.

8.2.1 FB Erstellen

FB10: Deklaration der lokalen Variablen

FB10: Anweisungsteil

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 31

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

8.2.2 FB Aufrufen
Es mu dafr gesorgt werden, da die Bearbeitung des FB in gleichen Zeitabstnden erfolgt. Dies kann sehr einfach mit dem OB35, ein periodischer Zeitinterrupt oder Weckalarm, realisiert werden (s.a. Abschnitt 10.2, Weckalarm) Vom Betriebssystem wird dem OB35 beim Aufruf die Abtastzeit bergeben (lokale Variable OB35_EXC_FREQ). Mit PEW288 wird ein direkter Peripheriezugriff auf eine analoge Eingangsbaugruppe mit der Adresse 288 veranlat. Beim Aufruf des FB10 (symbolischer Name d/dt) mu der Name des Instanz-DB angegeben werden, hier DB10 (GeschwDB)
OB35: Aufruf des FB10

8.2.3 Instanz-DB
Beim Aufruf des FB wird der Instanz-DB (hier DB10) angegeben. Wenn STEP7 feststellt, da es ihn noch nicht gibt, wird er automatisch aus der FB-Deklarationsliste erstellt. Der Datenbausteins kann er in zwei Darstellungs-arten angezeigt werden: DB10 in Deklarationssicht
DB10 ffnen Ansicht Deklarationssicht

DB 10 in Datensicht
DB10 ffnen Ansicht Datensicht

In der Datensicht ist zusehen, da die Daten bereits mit den deklarierten Anfangswert initialisiert sind. Wenn der FB10 mehrmals im Programm verwendet wird (z.B. Berechnung von Geschwindigkeit und Beschleunigung), mu fr jede Instanz des FB10 ein eigener Instanz-DB angegeben werden.

Auch von anderen Codebausteinen kann lesend und schreibend auf einen Instanz-DB zugegriffen werden! z.B. um Daten neu zu initialisieren (s.a. Abschnitt 7.3 Adressierung der Daten).

Beispiel:
mit absoluter Adressierung: mit symbolischer Adressierung:

T DB10.DB W6 T GeschwDB.x_alt

Transferiere Inhalt von Akku1 nach: Datenwort 6 von DB10


Transferiere Inhalt von Akku 1 nach: x_alt im
Datenbaustein GeschwDB

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 32

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

9 Ereignisgesteuerte Programmbearbeitung
Im Abschnitt 2.2.1 (Organisationsbausteine) wurde bereits gezeigt, da vom Betriebssystem die verschiedenen OBs gestartet werden und zwar in Abhngigkeit von bestimmten Systemereignissen. In diesem Kapitel werden die Zusammenhnge bei den wichtigsten OBs genauer beleuchtet. Besondere Aufmerksamkeit verdient dabei die Frage, wann die Aktualisierung von Daten erfolgt.

9.1

Zyklische Programmbearbeitung (OB1)

Hinweis: Im nachfolgenden Text kommt hufig der CPU-Speicher vor. In diesem Zusammenhang ist die Tabelle im Abschnitt 2.7 (Anwenderspeicher in der CPU) hilfreich fr das Verstndnis. Vor Beginn des OB1 werden die Daten der Eingangsperipherie gelesen und in dem CPU-Speicherbereich PAE (Prozeabbild der Eingnge) abgelegt. Fr die gesamte Dauer des OB1-Zyklus wird mit diesen Daten gearbeitet, wenn in Operationen auf Eingnge zugegriffen wird (E,EB, EW, ED) . Erst zu Beginn des nchsten Zyklus wird das PAE aktualisiert. Die so eingefrorenen Eingangsdaten haben den Vorteil, da das Programm trotz mglicher nderungen an der Peripherie whrend des OB1Zyklus ber konsistente, d.h. widerspruchsfreie Eingangsdaten verfgt. Nachteilig ist selbst verstndlich, da nderungen an der Eingangsperipherie erst im nchsten Zyklus bemerkt werden. Entsprechend den PAE-Daten, Merkern, anderen Daten und Anweisungen des Programms wird der OB1 abgearbeitet. Anweisungen im OB1 hinsichtlich der Ausgnge verndern den CPU-Speicherbereich PAA (Prozeabbild der Ausgnge). Sie betreffen nicht die eigentlichen, an der Peripherie aber befindlichen Ausgnge! Erst am Ende des OB1 wird der Wert des PAA auf die Ausgnge transferiert. Beim Auftreten von irgendwelchen Systemereignissen wird der OB1 entsprechend der Prioritt der zugehrigen OBs unterbrochen und nach deren Bearbeitung wieder fortgesetzt.

Falls es spezielle Problemstellungen erfordern, kann auch innerhalb des OB1-Zyklus direkt auf die Peripherie zugegriffen werden. Dies geschieht durch Lese/Schreibzugriffe auf den CPU-Speicherbereich PE (Peripheriebereich Eingnge) bzw. PA (Peripheriebereich Ausgnge) . Beispiel: L PEB 12 T PAW 2 (lade PEB 12 in Akku1) (transferiere Inhalt von Akku1 nach PAW2

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 33

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

9.2

Anlaufbearbeitung und Initialisierung (OB100)

Mit dem OB100 (Neustart) kann das Anlaufverhalten der CPU programmiert werden.
Der OB100 unterbricht mit sehr hoher Prioritt andere OBs, bevor der CPU-Betriebszustandswechsel STOPRUN
passiert und der erste OB1-Zyklus beginnt.
Daher knnen im OB100 sehr gut Initialisierungs-Routinen programmiert werden. Weil der Baustein zur Laufzeit nur
ein einziges Mal aufgerufen wird, eignet sich der OB100 auch zum Aufruf von einmaligen zeitaufwendigen
Berechungen und fr Dokumentationszwecke.
Sicherlich macht es bei der Steuerung einer Anlage durchaus Unterschiede, ob beispielsweise ein Anlauf
STOPRUN erfolgt, weil eben eingeschaltet wird oder ob pltzlich eine eingebrochene Netzspannung wiederkehrt.
Deshalb wird vom Betriebssystem die Vorgeschichte in lokale Variable des OB100 eingetragen.

9.2.1 Lokale Variable des OB100


Bei der Programmierung des OB100 werden von STEP7 automatisch einige lokale Variable deklariert, die im Anwenderprogramm verwendet werden knnen. Die zugehrigen Daten werden beim Aufruf des OB100 vom Betriebssystem bergeben. Die Informationen betreffen u.a. die Anlaufmethode, Start-Datum und Uhrzeit, Ursache des letzten Stops, nderung der Systemkonfiguration. Die folgende Tabelle der lokalen Variablen ist dem Siemens Handbuch System- und Standardfunktionen, Referenzhandbuch entnommen. Die Variable OB100_STRT_INFO ist dort im Abschnitt 1.17 genauer aufgeschlsselt.

9.2.2 Anwendungsbeispiel
Im folgenden Beispiel soll das Programm unterschiedlich reagieren, je nachdem ob der Anlauf manuell oder durch Spannungswiederkehr erfolgt ist. Dazu werden die Informationen der lokalen Variablen OB100_STRTUP genutzt. ber die Variable ist bekannt (siehe Tabelle):
Variable OB100_STRTUP Typ BYTE Deklaration TEMP Beschreibung Anlaufmethode: 16#81 = Manueller Neustart 16#82 = Automatischer Neustart, z.B bei Spannungswiederkehr

Im OB100 wird daher der tatschliche Wert von OB100_STRTUP abgefragt und die Anlaufmethode ermittelt. Wichtig: die gefundene Information mu in einer statischen Variable abgelegt werden, damit auch auerhalb vom OB100 darauf zugegriffen werden kann!

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 34

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Beschreibung des Beispiel-Programms


Wenn die SPS manuell gestartet wurde, soll whrend des OB1-Zyklus stndig der Ausgang Manuell_START=1
sein, wenn die SPS AG automatisch (durch Netzwiederkehr) gestartet wurde, soll der Ausgang
Stromversorgung_Start=1 sein.
Im OB100 wird also die Variable OB100_STRTUP verglichen mit bestimmten Testdaten. Der 16Bit-Vergleicher
verlangt allerdings Variablen oder Zahlen vom Typ Integer, so da die Variable OB100_STRTUP erst noch von Byte
nach Integer umgewandelt werden mu. Hierfr wird das Programmelement MOVE verwendet (in AWL:
Laden...Transferieren). Damit kein statischer Speicher verbraucht wird, wird in der Deklarationstabelle eine
temporre Variable Temp_Int vom Typ INT eingefhrt.
Im OB1-Zyklus kann bei Bedarf auf die Informationen Manuell_Start und Stromversorgung_Start von Anfang an
zugegriffen werden. Die entsprechenden Ausgnge der I/O-Peripherie werden allerdings erst am Ende des ersten
OB1-Zyklus gesetzt.

Symboltabelle:

Symbol Manuell_Start Symbol Stromversorrgung_Start Operand A 4.0 Operand A 4.1 Datentyp BOOL Datentyp BOOL Kommentar A4.0=1, wenn Anlauf manuell war (Schlsselschalter oder durch PG) Kommentar A4.1=1, wenn Anlauf automatisch war (Netzwiederkehr)

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 35

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

9.3

Weckalarm = Periodischer Zeitinterrupt (OB30..OB38)

Eine periodische Unterbrechung der zyklischen OB1-Bearbeitung ist mit den Organisationsbausteinen OB30 bis OB38 mglich. Allerdings ist die verfgbare Anzahl der Weckalarm-OBs abhngig von der jeweiligen CPU, wie die nachfolgende Tabelle zeigt:
CPU CPU 312 IFM CPU 313 CPU 314 CPU 314 IFM CPU 315 CPU 614 CPU 412-1 CPU 413-1 CPU 414-1 CPU 416-1 verfgbare W eckalarm-OB's --------------OB35 ------------OB35 ------------OB35 ------------OB35 ------------OB35 ------------OB 32 OB35 ----------OB 32 OB35 ----------OB 32 OB 33 OB 34 OB35 ------OB 32 OB 33 OB 34 OB 35 OB 36 OB 37 OB 38

------------------------------------OB 30 OB 31

verfgbare Weckalarm-OBs, voreingestelltes Zeitraster und Prioritt

Weckalarme unterbrechen den OB1-Zyklus periodisch, d.h. in gleichen Zeitabstnden. Der Zeittakt startet mit dem CPU-Zustandswechsel STOPRUN. Das voreingestellte Zeitraster kann bei der Parametrierung der CPU verndert werden (siehe unten). Weckalarme werden eingesetzt beispielsweise beim Aufruf von Regler-Algorithmen oder von irgendwelchen anderen Operationen, die periodisch, d.h. in gleichen Zeitabstnden durchgefhrt werden sollen.

9.3.1 Einstellung des Aufrufintervalls


Die voreingestellten Werte fr das Aufrufintervall (Zeit zwischen zwei Aufrufen) und die Prioritt des Aufrufs knnen
bei der Parametrierung der CPU mit dem SIMATIC-Manager verndert werden:
Die betreffende SIMATIC-Station mit rechter Maustaste anklicken, dann Objekteigenschaften.
es erscheint das Fenster Hardware-Konfiguration. Die ausgewhlte CPU in der rechten Maustaste anklicken,
Objekteigenschaften Weckalarm Nun kann das Aufrufintervall eingetragen werden. Es sind ganzzahlige Vielfache von 1 ms mglich:
Zeittakt = n * Grundtakt 1 ms; Die Zeitdauer zwischen zwei Aufrufen (Aufrufintervall) ist einstellbar von 1ms...1 Minute.

Das Aufrufintervall sollte an das Programm und die Notwendigkeiten angepat sein! Es mu mindestens so gro
sein, da die Anweisungen des Weckalarms auch abgearbeitet werden knnen. Auerdem ist folgendes zu
bercksichtigen:
Wenn das Aufrufintervall zu klein gewhlt wird, kommen OBs der kleineren Priorittsklassen wegen der hufigen
Unterbrechungen nicht zgig voran. Dies gilt insbesondere fr das zyklische OB1-Hauptprogramm: Es droht ein
Programmabbruch wegen Zykluszeitberschreitung.

9.3.2 Anwendungsbeispiel
Es sei verwiesen auf das Anwendungsbeispiel aus dem Abschnitt 8.2 (Zeitliche Ableitung eines Mesignals) , in dem ein Periodischer Zeitinterrupt benutzt wird.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7


Weckalarm-OBs Zeittakt in ms Priorittsklasse OB 30 5000 7 2000 8 OB 31 OB 32 1000 9 OB 33 500 10 200 11 OB 34 OB 35 100 12 OB 36 50 13 OB 37 20 14 OB 38 10 15

Seite 36

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

9.4

Prozealarm = I/O-Interrupt (OB40)

Prozealarm ist ein Systemereignis, das von einer Peripherie-Eingangsbaugruppe ausgelst wird. Neben der CPUFhigkeit zur Auswertung solcher Prozealarme ist allerdings auch eine spezielle Eingangsperipherie notwendig, um den Interrupt auszulsen. Zu solchen Baugruppen gehren beispielsweise schnelle Zhler und Positioniermodule. Normale I/O-Baugruppen sind nicht alarmfhig! Im folgenden Beispiel wird am Beispiel einer CPU 312IFM, die bereits Onboard einige I/Os, davon 4 Eingnge mit Alarmfhigkeit besitzt, die wesentlichen Schritte gezeigt.

9.4.1 Alarm-Freischaltung in der CPU


Die CPU mu entsprechend parametriert werden, damit die entsprechenden Interruptanforderungen bearbeitet werden. Dies geschieht mit dem SIMATIC Manager : Die betreffende SIMATIC-Station mit rechter Maustaste anklicken, dann Objekteigenschaften.
es erscheint das Fenster Hardware-Konfiguration. Die ausgewhlte CPU in der rechten Maustaste anklicken,
Objekteigenschaften Integrierte Funktion

Ausgewhlt wird die Integrierte Funktion Alarmeingang. Mit Parametrieren wird das nchste Fenster gewhlt, in dem die Bedingungen zur Freischaltung eines Prozealarms definiert werden knnen.

Im diesem Beispiel soll der Alarm dann auftreten, wenn entweder am Alarmeingang1 eine steigende Flanke oder am Alarmeingang2 eine fallende Signalflanke erscheint.

9.4.2 Alarmbearbeitung
Die CPU reagiert auf die Interruptanforderung der peripheren Baugruppe durch Start des OB40. Somit wird man im OB40 die entsprechenden Anweisungen zur Alarmbearbeitung (Interruptroutine) eintragen.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 37

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Literaturangaben
Im Labor fr Automatisierungstechnik sind die folgenden Handbcher im Zusammenhang mit STEP7. Sie werden alle von der Firma Siemens AG herausgegeben: 1. Elektronische Handbcher 02/2000 auf CD-ROM enthalten die Gesamtdokumentation zu STEP7 und Softwareerweiterungen, Hardwaredokumentation zu S7, SIMATIC NET, WinCC, PCS7, WinAC u.a. (in deutsch, englisch, franzsisch, spanisch, italienisch) 2. D okumentationspaket: STEP7-Grundwissen V5 enthlt die folgenden Handbcher Getting Started: Erste Schritte und bungen mit STEP7 V5.0 (1998) Handbuch: Programmieren mit STEP7 V5.0 (1998) Handbuch: Hardware konfigurieren und Verbindungen projektieren mit STEP7 V5.0 (1998) Umsteigerhandbuch: Von S5 nach S7 (1997) D okumentationspaket: STEP7-Referenzhandbcher V5 enthlt die folgenden Handbcher Referenzhandbuch: Systemsoftware fr S7-300/400, System- und Standardfunktionen (1998) Referenzhandbuch: Funktionsplan (FUP) fr S7-300/400 (1998) Referenzhandbuch: Kontaktplan (KOP) fr S7-300/400 (1998) Referenzhandbuch: Anweisungsliste (AWL) fr S7-300/400 (1998) Handbuch: SCL fr S7-300/400, Bausteine programmieren (1996) Handbuch: GRAPH fr S7-300/400, Ablaufsteuerungen programmieren (1997) Handbuch: Automatisierungssystem S7-300, Integrierte Funktionen der CPU 312 IFM/ 314 IFM (1996) Handbuch: Automatisierungssystem S7-300, Aufbauen einer S7-300 (1995) Handbuch: Kommunikation mit SIMATIC (1997) Tabellenheft: Operationsliste (AWL) fr S7-300, CPU312IFM, CPU313, CPU314

3.

4. 5. 6. 7. 8. 9.

Prof. Helmut Maier, FBE

Zusammenfassung der STEP 7 Anweisungen


Mit dieser Zusammenfassung soll den Studierenden eine Art Befehlsliste zur Verfgung gestellt werden. Nahezu alle Anweisungen werden bereits in anderen Teilen des Skriptums vorgestellt. Diese Zusammenfassung der STEP 7 Anweisungen kann somit als ein kompaktes Kompendium fr die Programmierung in AWL angesehen und eingesetzt werden. Daher wurde diese Befehlsliste nicht nur auf die Operationen selbst mit den zulssigen Operanden und Kurzbeschreibungen der Anweisungen beschrnkt, sondern den Befehlsgruppen sind auch Erluterungen und fallweise Anwendungsbeispiele beigefgt. Fr die Zusammenstellung der Anweisungen wurde eine Grobunterteilung vorgenommen in binre Verknpfungen und Operationen mit Wortoperanden.

9.4.2.1.1.1
S7kurs_2000.doc 23.05.02

Binre Verknpfungen
Seite 38

Programmieren mit STEP 7

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

9.4.2.1.1.2 Elementare Boolesche Operationen


Abfrage und Verknpfung von binren Operanden: Operationen Operanden kennzeichen Bedeutung: Max. Adrebereich 0.0 bis 65 535.7 0.0 bis 65 535.7 0.0 bis 65 535.7 0.0 bis 65 535.7

U, UN O, ON X, XN

E, A M, L DBX, DIX T, Z

Abfrage von bzw. Verknpfung nach: UND/UND NICHT Ein ODER/ODER NICHT /Ausgngen EXKLUSIV ODER/ Merker-/ EXKLUSIV ODER Lokaldatenbit NICHT Datenbit Timern, Zhlern

Tab. 1: Binre Verknpfungen und Adressbereiche fr binre Operanden

9.4.2.1.2 Verknpfungsoperationen mit den Statusbits 9.4.2.1.2.1 Die Bits des Statuswortes als Operanden
STEP 7 ermglicht auch die binre Abfrage und Verknpfung einzelner Bitstellen des Statuswortes. Es handelt sich 4 8 hierbei um die Bitstellen 2 bis 2 , also um die Statusbits OS OV A0, A1 BIE gespeicherter berlauf
berlauf
Anzeigenbits und
das neu eingefhrte BIE-Bit (Binrergebnis)

Die Anzeigenbits A0 (Bit 6 des Statuswortes) und A1 (Bit 7) lassen sich mit Hilfe von Ersatzoperanden wie >0, = =0 oder <0 abfragen und verknpfen. Tabelle 2 zeigt die Zuordnung zwischen den mglichen Kombinationen der Signalzustnde von A0 und A1 und dem zugehrigen Ersatzoperanden.

Signalzustand von A1

Zugehrige Abfrage mit

9.4.2.1.2.2 Signalzustan d von A0


1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 >0 <0 <> 0 >= 0 <= 0 ==0 1) UO

oder oder oder

oder oder oder

1)

Unordered, d.h. unzulssig: Mit A0 = A1 = 1 wird die fehlerhafte Ausfhrung einer Operation signalisiert

Tab. 2: Signalkombinationen von A0 und A1 mit zugehrigen Abfragen

9.4.2.1.2.3 Ersatzoperanden
Aus den Statusbits des Statuswortes von STEP 7 lassen sich mit Bedingungen wie gleich Null, grer bzw. kleiner Null etc. Ersatzoperanden bilden. Diese werden mit den jeweiligen Operationen auf ihren Signalzustand abgefragt und mit dem aktuellen VKE entsprechend der gewhlten Funktion verknpft. Derartige Verknpfungen ermglichen es, auch dann programmtechnisch zu reagieren, wenn z.B. das Ergebnis einer arithmetischen Operation unzulssig war (UO, OV, OS).

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 39

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Operation
U UN O ON X XN

Ersatz- Erluterung Operand


==0 >0 <0 <>0 <=0 >=0 UO OS BIE OV Ergebnis = 0 (A1 = 0 und A0 = 0) Ergebnis > 0 (A1 = 1 und A0 = 0) Ergebnis < 0 (A1 = 0 und A0 = 1) Ergebnis <> 0 ((A1 = 0 und A0 = 1) oder (A1 = 1 und A0 = 0)) Ergebnis <= 0 ((A1 = 0 und A0 = 1) oder (A1 = 0 und A0 = 0)) Ergebnis >= 0 ((A1 = 1 und A0 = 0) oder (A1 = 0 und A0 = 0)) unzulssig (A1 = 1 und A0 = 1) OS = 1 (gespeicherter berlauf) BIE = 1 (Binrergebnis) OV = 1 (arithmetischer berlauf)

Tab. 3: Binre Operationen mit den Bits des Statuswortes

9.4.2.1.3 Operationen mit direktem Einfluss auf das VKE

STEP 7 verfgt ber einige Operationen, die ein direktes Bearbeiten des VKEs ermglichen.
Operationscode SET CLR NOT SAVE Operation Setze das VKE auf 1 Setze das VKE auf 0 Negiere das VKE Rette das VKE in das BIE-Bit (Binrergebnis) Bedeutung Das aktuelle VKE nimmt den Wert 1 an Das aktuelle VKE nimmt den Wert 0 an Das aktuelle VKE wird negiert (invertiert) Das aktuelle VKE wird im BIE-Bit des Statuswortes gespeichert

9.4.3 Tab. 4: Operationen zur direkten Beeinflussung des VKEs

9.4.4 SAVE: Sichern des aktuellen VKEs


Mit dieser Anweisung lt sich das aktuelle VKE fr einen spteren Gebrauch im BIE-Bit des Statuswortes speichern Es steht dann spter zur Fortfhrung einer unterbrochenen binren Verknpfungskette wieder zur Verfgung. In der AWL lt sich das BIE-Bit mit booleschen Anweisungen abfragen und verknpfen wie z.B. U O X BIE BIE BIE XN BIE UN ON BIE BIE

9.4.5
9.4.5.1.1 Verknpfungen mit Klammerausdrcken
Bei diesen Verknpfungsoperationen wird kein Operand angegeben. Mit Beginn einer Klammer-auf-Operation werden bislang erzielte binre Ergebnisse (in den Statusbits VKE, BIE oder OR gespeicherte Binrzustnde) als Zwischenergebnisse auf den sog. Klammerstack abgelegt. Mit der Klammer-zu-Operation wird das im Klammerausdruck erarbeitete VKE mit dem zuvor im Klammerstack abgelegte VKE entsprechend der Klammer-aufOperation (wie U(, UN(, O( etc.) verknpft. Innerhalb eines Klammerausdrucks wird das VKE von der CPU stets neu gebildet. Der Klammerstack hat 7 Ebenen, womit sich verschachtelte Klammerausdrcke mit einer maximalen Schachtelungstiefe von sieben bilden lassen. Beachten Sie: Innerhalb eines Klammerausdrucks knnen nicht nur binre, sondern auch alle anderen Anweisungen der Programmiersprache AWL programmiert werden! Operation U( Bedeutung UND Klammer auf

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 40

Dipl.Ing. Norbert Heinlein UN( O( ON( X( XN( )

FH Frankfurt, Labor fr Automatisierungstechnik

UND NICHT Klammer auf ODER Klammer auf ODER NICHT Klammer auf EXKLUSIV ODER Klammer auf EXKLUSIV ODER NICHT Klammer auf Klammer zu (entfernt den letzten Eintrag aus dem Klammerstack und verknpft ihn mit dem aktuellen im Klammerausdruck erarbeiteten VKE)

Tab. 5: Klammeroperationen ODER-Verknpfung von UND-Funktionen Diese ohne Operanden zu verwendende ODER-Operation steht zwischen UND-Funktionen und ermglicht damit die programmtechnische Realisierung von UND-vor-ODER Ausdrcken ohne Klammeroperationen. An Stelle der allein stehenden ODER-Operation kann man auch die Klammerausdrcke O(U...., U....) O(U...., U....) verwenden. Operation O Bedeutung ODER-Verknpfung von UND-Ausdrcken ohne Klammer (UND-vor-ODER)

Tab. 6: UND-vor-ODER Verknpfung

9.4.5.1.2 Speicherfunktionen
Zu den Speicherfunktionen zhlen das speichernde Setzen und Rcksetzen von, wie die Zuweisung des aktuellen VKEs an Binroperanden. Die Operation = weist das vorhandene VKE direkt dem der Operation folgenden Operanden zu. Ist das VKE = 0, so nimmt auch der Operand diesen Zustand an. Ist das VKE = 1, wird der Operand auch auf 1 gesetzt. Das anstehende VKE kann auch mehreren Operanden zugewiesen werden, wenn man die Zuweisungen an die entsprechenden Operanden nacheinander anordnet. Vor der Zuweisung kann das VKE mit der Anweisung NOT negiert werden, wie das untenstehende Beispiel zeigt. Die Setz- und Rcksetzoperationen werden nur bei einem anstehenden VKE von 1 ausgefhrt. Mit der Setzoperation nimmt der Operand dauerhaft den Zustand 1 an, auch wenn das setzende VKE dann wieder nach 0 wechselt. Mit der Rcksetzoperation wird bei einem aktuellen VKE = 1 der angegebene Operand dauerhaft auf 0 rckgesetzt. Bei einem VKE von 0 werden weder Setz- noch Rcksetzoperation ausgefhrt: Der angegebene Operand behlt damit seinen alten Zustand. Vorrangiges Setzen/Rcksetzen: Fhrt das VKE fr die Setz- wie fr die Rcksetzoperation zugleich den Signalzustand 1, so entscheidet die Reihenfolge darber, welche der Speicheroperationen vorrangig ausgefhrt wird. Dabei gilt, bedingt durch die sequentielle Programmbearbeitung, grundstzlich folgende Regel: Die zuletzt bearbeitete Operation ist dominant gegenber der zuvor ausgefhrten Anweisung. Werden beispielsweise zunchst eine Setzoperation mit einem VKE = 1 und anschlieend eine Rcksetzanweisung fr den selben Operanden ebenfalls mit VKE = 1 ausgefhrt, so wird der Operand zwar tatschlich kurz auf 1 gesetzt, gleich darauf jedoch wieder dominant (vorrangig) zu 0 rckgesetzt. Fr Ausgnge findet dieses temporre Setzen mit anschlieendem Rcksetzen nur im Prozessabbild der Ausgnge statt. Der betreffende Ausgang bleibt fr den Rest der Programmbearbeitung rckgesetzt und damit auch bis zum bertragen des Prozessabbildes in die Ausgabebaugruppen. Ein vorrangiges Setzen erfolgt sinngem.

Operanden

Bedeutung:

9.4.5.1.2.1 kennzeichen

Operand

Max. Adre bereich

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 41

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

S R =

E, A M, L DBX, DIX

Setze Operand auf 1 Rcksetze Operand auf 0 Zuweisung des VKE an denOperanden

Ein-/Ausgnge Merker-/ Lokaldatenbit Datenbit DB, DI

0.0 bis 65 535.7 0.0 bis 65 535.7 0.0 bis 65 535.7

Tab. 7: Speicherfunktionen fr das aktuelle VKE Beispiele: Mehrfachzuweisung: U UN = = ........ Vorrangiges Setzen: E R E S E M E M 2.0 6.7 2.0 6.7 E
M
A
M

Vorrangiges Rcksetzen: UN S UN R M A M A 4.2 3.0 4.2 3.0 1.5 3.2 7.4 10.0 Negieren des aktuellen VKEs: U = NOT = M A A 2.4 2.0 2.1

9.4.5.1.3 Operationen zur Flankenauswertung 9.4.5.1.3.1 Die Operationen FP und FN


Die Operationen FP (Flanke Positiv) und FN (Flanke Negativ) erkennen und reagieren auf einen Flankenwechsel im Verknpfungsergebnis. FP erkennt einen Flankenwechsel von 0 nach 1 (steigende oder positive Flanke) und FN reagiert auf einen Flankenwechsel von 1 nach 0 (fallende oder negative Flanke), siehe hierzu Bild 1. Steigende Flanke Flanke fallende

1
Signal 0 Einschaltwischer

Wischzeit

Ausschalt wischer

Bild 1: Einschalt- und Ausschaltwischer

9.4.5.1.3.2

OperandenKennzeichen

Bedeutung:

9.4.5.1.3.3 Opera nd fr 9.4.5.1.3.4 Flanke nmerk er

FP

E, A

Ein-/Ausgnge

Erkennen einer positiven Flanke des VKE

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 42

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

FN

M, L DBX, DIX

Merker-/ Lokaldatenbit Datenbit aus DB, DI

(VKE wechselt von 0 nach 1) Erkennen einer negativen Flanke des VKE (VKE wechselt von 1 nach 0)

Tab. 8: Die Flankenoperationen FP und FN Funktion: Der aktuelle Signalzustand des VKEs wird laufend verglichen mit dem Signalzustand des Operanden von FP oder FN, des sog. Flankenmerkers. Im Flankenmerker wird der Signalzustand des betreffenden VKEs aus dem vorhergehenden Programmzyklus gespeichert. Wird eine Abweichung zwischen dem aktuellen VKE und dem Zustand des Flankenmerkers also dem alten VKE- erkannt, so muss ein Flankenwechsel aufgetreten sein. Die Operation FP bzw. FN liefert in diesen Fllen ein VKE, das fr die Dauer von genau einer Zykluszeit den Wert 1 besitzt (1-Zyklus Wischer). Nach dem Vergleich wird der Flankenmerker aktualisiert, also dem aktuellen VKE angeglichen. Als Operanden fr FP/FN kommen alle binren Speicherelemente aus den Bereichen Merker, Lokaldaten, Datenbausteine oder E/A-Prozessabbilder in Frage. Das Ergebnis der Flankenauswertung, der Wischer, kann entweder unmittelbar weiter verwendet werden, z. B. fr eine Setz- bzw. Rcksetzoperation. Es kann aber auch zunchst in einem anderen binren Operanden wie einem Merker zwischengespeichert werden, sofern es fr eine sptere Verarbeitung in weiteren Programmteilen bentigt wird. Beispiele: Direkte Verwendung der Flankenauswertung O FN S E 1.0 M 10.1 A 2.1 //Auswertung der fallenden Flanke eines VKEs, hier Signal E 1.0
//und direkte Verwendung zum Setzen
//eines binren Operanden

Speichern des Wischimpulses U FP = Eing_1 M 20.0 M 100.1


//Flankenmerker
//Speichern des Wischimpulses in M 100.1 zur spteren
//Verwendung im Programm

9.4.6 Zeitoperationen
9.4.6.1.1.1 Starten von Zeitfunktionen
Mit dem Starten einer Zeitfunktion wird das Zeitverhalten (als Impuls, einschalt- oder ausschaltverzgert etc.) bestimmt. Zum Starten einer Zeitfunktion bedarf es immer eines Wechsels fr den Signalzustand (Signalflanke) des vor der Startoperation gltigen VKEs. Deskriptor Operation SI Tn Zeitfunktion Zeit als Impuls starten Startflanke

9.4.7 S_IM PUL S


SV Tn Zeit als verlngerten Impuls starten

9.4.8 S_VI MP
S_EVERZ S_SEVERZ S_AVERZ SE SS SA Tn Tn Tn Zeit als Einschaltverzgerung starten Zeit als speichernde Einschaltverzgerung starten Zeit als Ausschaltverzgerung starten

Tabelle 9: Startoperationen fr Zeitglieder

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 43

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

Ein Zeitglied lsst sich auch rcksetzen oder freigeben (nachtriggern). Das Rcksetzen erfolgt dabei statisch mit einem VKE = 1 (nicht mit einer Signalflanke) und dominant gegenber den Startoperationen. Beim Freigeben erfolgt ein Nachtriggern des Zeitgliedes mit einer positiven Flanke des vor der Operation gltigen VKEs. Dies ist jedoch nur mglich, solange das startende VKE den Zustand 1 aufweist. Bedeutung:

9.4.9 Oper ation


R Tn FR Tn Zeitglied rcksetzen: Zeitglied ist blockiert, solange aktuelles VKE = 1. Binrausgang und Zeitwert werden damit auf Null gesetzt. Mit positiver Signalflanke Zeitglied nachtriggern; nur mglich, wenn Startoperation noch mit VKE = 1 bearbeitet wird

Tabelle 10: Rcksetzen und Freigabe fr Zeitglieder Vorgabe der Zeitdauer: Beim Start eines Zeitgliedes wird der im Akkumulator 1 stehende Wert automatisch als Zeitdauer bernommen. Die Zeitdauer wird blicherweise als Konstante in Stunden, Minuten, Sekunden und Millisekunden angegeben. Zur Kennzeichnung dieser Konstanten kann man S5TIME# oder S5T# verwenden. Wie und wann dieser Wert in den Akkumulator 1 gelangt, spielt im Prinzip keine Rolle. Er muss sich nur vor der Startoperation im Akku 1 befinden. Die Zeitdauer lsst sich aber auch als 3-stelliger Dezimalwert (001 999) und einem vorangestellten Zeitraster (0 = 10 ms, 1 = 100 ms, 2 = 1 s und 3 = 10 s) in Form einer hexadezimalen Konstanten vorgeben. L L L L S5TIME#Wert S5TIME#26M15S S5T#20S500MS S5T#1H10M Zeitdauer 26 Minuten und 15 Sekunden 20,5 Sekunden 1 Stunde und 10 Minuten

9.4.9.1.1.1 Hexwert
L W#16#1500 L W#16#3360 L W#16#0010 Raster: 1, Zeitwert 500 Raster: 3, Zeitwert 360 Raster: 0, Zeitwert 10 500 x 0,1 s = 50 s 360 x 10 s = 3600 s = 1 Stunde 10 x 0,01 s = 100 ms

Tabelle 11: Vorgabe der Zeitdauer als S5TIME# - Konstante oder als Hex-Wert Zeitwert abfragen: Der aktuelle Zeitwert lsst sich mit Hilfe zweier Ladefunktionen abfragen und ist dann als Dualwert (L) oder BCD codierter Wert (LC) im Akkumulator 1 zur weiteren Verarbeitung verfgbar. Bei dem Zeitwert handelt es sich stets um die Restlaufzeit des Zeitgliedes, da der Zeitwert vom anfangs gesetzten Wert gegen Null gezhlt wird. Operation L Tn LC Tn Bedeutung Zeit-Zhlwert als Dualwert laden (Restlaufzeit) Zeit-Zhlwert BCD-codiert laden (Restlaufzeit)

Tabelle 12: Laden eines Zeitwertes Abfrage des Binrstatus Der binre Zustand eines Zeitgliedes kann in derselben Weise abgefragt und weiterverknpft werden, wie der von anderen binren Variablen wie Eingngen, Merkern etc. Damit ergeben sich folgende Mglichkeiten der binren Abfrage:

9.4.10
U T n O T n X T n

9.4.11 UN

T n

ON

T n

XN

T n

9.4.12 Zhlfunktionen
Zu den Zhlfunktionen gehren vorwrts (ZV) wie rckwrts (ZR) zhlen, Zhler auf einen Anfangswert setzen (S), Zhler rcksetzen (R) sowie freigeben (FR). Die ersten drei genannten Funktionen ZV, ZR und S werden stets nur

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 44

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

dann ausgefhrt, wenn das vor der jeweiligen Operation anstehende VKE von 0 nach 1 wechselt. Sie werden demnach durch positive Signalflanken gesteuert. Das Rcksetzen erfolgt wie bei Zeitgliedern statisch, also mit einem VKE = 1 (nicht mit einer Signalflanke) und ist dominant gegenber den Zhl- und Setzoperationen. Mit der Funktion Freigeben lsst sich das Zhlen oder Setzen auch ohne positive Flanke des vor der Operation gltigen VKEs ausfhren. Voraussetzung hierzu ist, dass das VKE vor der jeweiligen Operation weiterhin den Zustand 1 aufweist und die Freigabeoperation mit einer positiven Flanke des gltigen VKEs bearbeitet wird. Der Zhlbereich erstreckt sich ber drei Dekaden, also von 000 bis 999. Ein ber- bzw. Unterlauf jenseits dieses Bereiches ist nicht mglich. Anweisung ZV ZR S R FR Operand Zn Zn Zn Zn Zn Funktion Vorwrts zhlen, um eine Einheit Rckwrts zhlen, um eine Einheit Zhler auf einen Anfangswert setzen Zhler rcksetzen, Zhlerinhalt lschen Setzen oder Zhlen ohne Flanke an den Betreffenden Eingngen ZV, ZR oder S Bedingung

VKE = 1

Tabelle 13: Zhlfunktionen Vorgabe des Anfangswertes: Mit der Setzfunktion eines Zhlers (positive Flanke des aktuellen VKEs!) wird der im Akkumulator 1 stehende Wert als Zhler-Anfangswert bernommen. Dieser Wert wird meist vorher als 3-stellige dezimale Konstante C#nnn (000 999) oder in Form einer hexadezimalen Wort-Konstanten W#16#0nnn in den Akkumulator 1 geladen. Wie und wann dieser Wert in den Akkumulator 1 gelangt, spielt auch hier keine Rolle. Er muss sich nur vor der Startoperation im Akku 1 befinden. L C#nnn L C#150 L C#999 Zhler - Anfangswert 150 999

9.4.12.1.1.1 xwert
L W#16#0220

He
220

Tabelle 14: Vorgabe des Zhler-Anfangswertes C# - Konstante oder als Hex-Wert Zhlerstand abfragen: Der aktuelle Zhlerstand lsst sich analog zur Abfrage von Zeitwerten mit Hilfe von Ladefunktionen abfragen und steht dann als Dualwert (L) oder BCD-codierter Wert (LC) im Akkumulator 1 fr eine weitere Verarbeitung zur Verfgung. Operation L Zn LC Z n Bedeutung Aktuellen Zhlerwert als Dualwert laden Aktuellen Zhlerwert BCD-codiert laden

Tabelle 15: Laden von Zhlerwerten Abfrage des Binrstatus Der binre Zustand eines Zhlers kann ebenso wie der eines Zeitgliedes, Eingangs, Merkers etc. abgefragt und weiterverknpft werden. Damit ergeben sich auch hier folgende Mglichkeiten der binren Abfrage:

9.4.13
U Z n O Z n X Z n

9.4.14 UN

Z n

ON

Z n

XN

Z n

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 45

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

9.5 9.5.1.1
9.5.1.1.1.1.2.1.1

Operationen mit Wortoperanden

Laden und Transferieren

Lade- und Transferfunktionen ermglichen den Datenaustausch zwischen verschiedenen Speicherbereichen der CPU. Dieser Austausch verluft jedoch nicht direkt, sondern stets mit einem Umweg ber den Akkumulator 1, nachfolgend kurz AKKU 1 genannt. Beim Laden erfolgt der Informationsfluss von einem Quell-Speicherbereich (Prozessabbilder, Merker etc.) zum AKKU 1, beim Transferieren werden die Daten vom AKKU 1 zu einem ZielSpeicherbereich transportiert, wie dies Bild 2 zeigt. Wichtig: Lade- und Transferoperationen werden unabhngig vom aktuellen VKE oder sonstigen Bedingungen durchgefhrt. Ihre Ausfhrung kann also nicht unmittelbar beeinflusst oder gesteuert werden (Ausnahme: Mit Hilfe bedingter Sprungoperationen). Sie beinflussen ihrerseits auch weder das VKE noch ein anderes Statusbit.

Bit: 31
Laden (Quelle)
AKKU 1-HH

16 15
AKKU 1-HL AKKU 1-LH AKKU 1-LL

0
Transferieren (Ziel)

AKKU 1 Bild 2: Informationsaustausch ber den AKKU 1 Ladefunktionen Die Ladefunktion besteht aus der Operation L fr Laden und der Angabe eines Quelloperanden, der in den AKKU 1 zu laden ist. Die Breite des zu ladenden Operanden kann ein Byte, ein Wort (2 Bytes) oder ein Doppelwort (4 Bytes) sein. Dabei werden ein Byte und ein Wort stets rechtsbndig in den AKKU 1 geladen. Ein Byte belegt somit das niederwertigste Byte des Akku 1 (AKKU 1-LL), ein Wort das niederwertige AKKU 1-Wort (AKKU 1-LL + AKKU 1-LH) und das Doppelwort den gesamten AKKU 1. Einfluss auf den AKKU 2 Beim Laden in den AKKU 1 wird stets der gesamte alte Inhalt des AKKU 1 an den AKKU 2 bergeben. Operation L Operand EB... EW... ED AB... AW... AD PEB... PEW... PED MB... MW... MD LB... LW... LD DBB...DBW... DBD DIB... DIW... DID Parameter Bedeutung Lade den AKKU1 mit einem Eingangs Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Ausgangs Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Peripherie Eingangsbyte, - Eingangswort, - Eingangsdoppelwort Lade den AKKU1 mit einem Merker Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Lokaldaten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Daten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem Instanzdaten Byte, - Wort, - Doppelwort Lade den AKKU1 mit einem (EB/AB ... EW/AW... ED/AD...), der ber einen Parameter adressiert ist Lade den AKKU1 mit einem bereichsbergreifend adressierten Byte Wort Doppelwort

B[AR1,m] B[AR2,m] W[AR1,m] W[AR2,m] D[AR1,m] D[AR2,m]

Tab. 16: Operanden fr die Ladeoperationen

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 46

nchste
Dipl.Ing. Norbert Heinlein FH Frankfurt, Labor fr Automatisierungstechnik

Laden von Konstanten Der AKKU 1 kann auch unmittelbar mit konstanten Werten geladen werden, wie dies bereits bei den Zeitwerten oder Zhler-Anfangswerten gezeigt wurde. Diese Konstanten, mit Ausnahme von Integer- und Realkonstanten, mssen durch Kennungen fr ihre Datenbreite und das Zahlenformat festgelegt werden. So wird die Datenbreite z.B. mit B# (Byte), W# (Wort) oder DW# (Doppelwort) benannt. Als Zahlenformate kommen z.B. 2# (Binrkonstante), 16# (Hexadezimalkonstante), C# (Zhlerwert), S5T# (Zeitwert), D# (Datum) oder P# (Bitpointer) zum Einsatz. STEP 7 - Ladeanweisung Erluterung

L L L L L L L L L L L L L L L

1314 L#+5 2.0E+3 1234.567 W#16#ABCD D#16#F1DA_B23A ABCD S5T#2h46m30s C#12 2#1001 1001 1001 1001 2#1011 0111 1101 0011 0001 1010 1101 0010 B#(85) B#(12, 34) B#(12, 34, 56, 78) P#12.3

Laden einer 16 Bit Ganzzahl Laden einer 32 Bit Ganzzahl Lade Gleichpunktzahl (32 Bit) Lade Gleichpunktzahl (32 Bit) Lade Hex-Konstante (16 Bit) Lade Hex-Konstante (32 Bit) Lade 4 Zeichen im ASCII Code Lade Timerkonstante 16 Bit (S5TIME-Konstante) Lade Zhlerkonstante 16 Bit Lade Binrkonstante 16 Bit Lade Binrkonstante 32 Bit Laden eines Bytes Laden von 2 Bytes Laden von 4 Bytes Laden eines Pointers (32 Bit)

Tab. 17: Ladeanweisungen fr Konstanten

9.5.1.2 Transferoperationen
Beim Transferieren wird der Inhalt des AKKU1 in den adressierten Operanden bertragen. Die meisten Transferoperationen werden vom MCR (Master Control Relay) beeinflut. Tabelle 18 gibt eine bersicht der adressierbaren Operanden:

Operation T

Operand EB... EW... ED AB... AW... AD PAB... PAW... PAD MB... MW... MD LB... LW... LD DBB...DBW... DBD DIB... DIW... DID Parameter

Bedeutung Transferiere Inhalt von AKKU1 zum Eingangs Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Ausgangs Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Peripherie Ausgangsbyte, - Ausgangswort, - Ausgangsdoppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Merker Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Lokaldaten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Daten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Instanzdaten Byte, - Wort, - Doppelwort (MCR abhngig) Transferiere Inhalt von AKKU1 zum Operanden (EB/AB ... EW/AW... ED/AD...), der ber den Parameter adressiert ist

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 47

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Tab. 18: Operanden fr Transferoperationen Operation T Operand B[AR1,m] B[AR2,m] W[AR1,m] W[AR2,m] D[AR1,m] D[AR2,m] (noch Tab. 18) Lade- und Transferoperationen fr die Adreregister AR1 und AR2 Zur Vorbesetzung und Abfrage der Adreregister AR1 und AR2 verfgt STEP 7 ber die speziellen Lade- und Transferoperationen LAR 1 und LAR 2 sowie TAR1 und TAR2. Mit den Anweisungen +AR1 und +AR2 besteht die Mglichkeit zur arithmetischen Modifizierung der Inhalte von AR1 und AR2. Tabelle 19 enthlt eine Zusammenstellung aller die Adreregister betreffenden Befehle. Operation Bedeutung Transferiere Inhalt von AKKU1 zum bereichsbergreifend adressierten Byte Wort Doppelwort

9.5.2 Erluterung
LAR1 1 LAR1 Operand ( ) LAR2 2 LAR2 Operand ( ) TAR1 3 TAR1 Operand ( ) TAR2 4 TAR2 Operand ( ) TAR +AR1 +AR1 Pointerkonstante +AR2 +AR2 Pointerkonstante ( ): Operanden
1

Lade Inhalt des AKKU 1 in das Adreregister 1 Lade Inhalt des Operanden in das Adreregister 1 Lade Inhalt des AKKU 1 in das Adreregister 2 Lade Inhalt des Operanden in das Adreregister 2 Transferiere den Inhalt des Adreregisters 1 in den AKKU 1 Transferiere den Inhalt des Adreregisters 1 in den Operanden Transferiere den Inhalt des Adreregisters 2 in den AKKU 1 Transferiere den Inhalt des Adreregisters 2 in den Operanden Tausche die Inhalte von Adreregister 1 und Adreregister 2 Addiere Inhalt von AKKU 1-L (Bit 0 - 15) zum Adreregister 1 Addiere die Pointerkonstante P#Byte.Bit zum Adreregister 1 Addiere Inhalt von AKKU 1-L (Bit 0 - 15) zum Adreregister 2 Addiere die Pointerkonstante P#Byte.Bit zum Adreregister 2

knnen sein: Der Inhalt von AR2, Datendoppelworte DBD n, InstanzDatendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n sowie 32-Bit-Konstanten im Pointerformat knnen sein: Datendoppelworte DBD n, Instanz-Datendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n sowie 32-Bit-Konstanten im Poin Terformat

( ): Operanden
2

( ): Operanden
3

knnen sein: Das Adreregister AR2, Datendoppelworte DBD n, InstanzDatendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n knnen sein: Datendoppelworte DBD n, Instanz-Datendoppelworte DID n, Merker- und Lokaldatendoppelworte MD n und LD n

( ): Operanden
4

Tabelle 19: Spezialoperationen fr Adreregister AR1 und AR2

9.5.2.1.1 Lade- und Transferoperationen fr das Statuswort


Mit dem Laden des Statuswortes in den AKKU 1 ergibt sich die Mglichkeit, einzelne Statusbits abzufragen und auszuwerten oder auch das gesamte Statuswort fr eine weitere Verwendung abzuspeichern. Umgekehrt kann man ber die Transferfunktion beispielsweise ein neues Programmsegment zu Beginn mit einem speziell belegten Statuswort beginnen lassen. Die Operationen hierzu lauten:

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 48

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Operation L T

Operand STW STW

Bedeutung Lade aktuelles Statuswort in den AKKU 1 Transferiere Inhalt von AKKU 1 in das aktuelle Statuswort

Tab. 20: Laden und Transferieren mit dem Statuswort Beachten Sie: Die CPUs der S7-300 Steuerungen knnen die Bits /ER, STA und OR nicht in den AKKU laden. In diesen Positionen wird 0 eingetragen. Aufbau des Statuswortes:

Bit 2 Belegung STA

15 .... 1 nicht belegt VKE

... 9 0 BIE /ER

8 A1

7 A0

6 OV

5 OS

4 OR

9.5.3 9.5.4 Vergleichsfunktionen


Mit den Vergleichsfunktionen ist es mglich, zwei digitale Operanden hinsichtlich ihrer zahlenmigen Gre miteinander zu vergleichen. Die Ausfhrung dieser Funktionen, die eigentlich eine arithmetische Subtraktion impliziert, erfolgt unbedingt, also unabhngig von einem zuvor gebildeten VKE oder sonstigen Bedingungen. Sie erzeugt jedoch ein binres VKE, abhngig vom Ergebnis des Vergleichs.

9.5.4.1.1.1 Vergleichsergebnis
Dieses binre Vergleichsergebnis lsst sich mit allen bekannten binren Operationen weiter verknpfen, speichern oder mit bedingten Sprungoperationen auswerten. Somit bilden die Vergleichsoperationen einen bergang von eingangsseitig digitalen zu ausgangsseitig binren Operandenbereichen. Weitere Informationen ber die Grenrelation der zu vergleichenden Operanden liefern die Anzeigeflags A0 und A1 des Statusregisters.

9.5.4.1.1.2 Funktionsweise
Die zu vergleichenden Operanden mssen in den beiden Akkumulatoren 1 und 2 stehen. Dorthin gelangen Sie in der Regel mit Hilfe von Ladefunktion. Dabei ist zu beachten, dass mit einer Ladeoperation der zu ladende Wert stets in den Akku 1 gelangt, der alte Wert des Akku 1 jedoch automatisch in den AKKU 2 weiter geschoben wird. Bild 3 zeigt die Inhalte der beiden Akkumulatoren nach dem Laden zweier Wortoperanden. AKKU 1 L L EW 6 MW 20 MW 20 EW 6 EW 6 AKKU 2 ????

Bild 3: Laden der Akkumulatoren 1 und 2

9.5.4.1.1.3 Datentypen
Die in die Akkumulatoren geladenen Werte mssen den gleichen Datentyp (I, D oder R) aufweisen, der auch im Operationscode spezifiziert ist. Bei direkt (absolut) adressierten Variablen muss die Breite der Operanden ebenfalls dem Datentyp entsprechen. Vergleichsfunktion

10 Operationscode mit Datentyp


Vergleich auf gleich Vergleich auf ungleich Vergleich auf grer INT (Integer) = =I < >I >I DINT (Double Integer) = =D < >D >D REAL = =R < >R >R

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 49

Dipl.Ing. Norbert Heinlein Vergleich auf grer oder gleich Vergleich auf kleiner Vergleich auf kleiner oder gleich > =I <I < =I > =D <D < =D

FH Frankfurt, Labor fr Automatisierungstechnik > =R <R < =R

Tabelle 21: Vergleichsoperationen mit den zulssigen Datentypen

10.1.1.1.1.1

Die Statusbits

Die Vergleichsfunktionen beeinflussen die Statusbits A0 und A1, sowie, beim REAL-Vergleich, auch die OverflowAnzeigen. Das Setzen der Anzeigen A0 und A1 ist dabei unabhngig von der gewhlten Vergleichsfunktion und hngt nur vom Grenverhltnis der an dem Vergleich beteiligten Operanden ab. Die Statusbits lassen sich sowohl mit binren Abfragen wie auch mit bedingten Sprungfunktionen auswerten und weiter verarbeiten, siehe Tab. 3: Binre Operationen mit Bits des Statuswortes. Das Ergebnis ist: gleich: AKKU 2 = AKKU 1 grsser: AKKU 2 > AKKU 1 kleiner: AKKU 2 < AKKU 1 Ungltig, da ein Operand ungltige REAL-Zahl ist A0 0 0 1 1 A1 0 1 0 1 OV 0 0 0 1 OS 1

eine

Tabelle 22: Statusbits bei Vergleichsfunktionen

10.1.1.1.1.1.2.1.1

Operationen mit den AKKUs

Auf den AKKU1 kann unmittelbar mit Lade- und Transferoperationen zugegriffen werden. AKKU 1 bzw. AKKU 2 kann man mit den nachfolgenden Anweisungen manipulieren. Das Statuswort wird dabei nicht beeinflut und die Anweisungen erfolgen unabhngig vom VKE.

Operation

Bedeutung

TAW TAD

TAK PUSH POP INC 0 ... 255 DEC 0 ... 255

Tausche den Inhalt vom AKKU 1-LL (Bit 0 bis 7) mit dem vom AKKU 1-LH (Bit 8 bis 15). Der AKKU 1-H (Bit 16 bis 31) und der AKKU 2 wird nicht verndert. (Tausche AKKU Wort). Tausche den Inhalt vom AKKU 1-LL (Bit 0 bis 7) mit dem vom AKKU 1-HH (Bit 24 bis 31) und den Inhalt vom AKKU 1-LH (Bit 8 bis 15) mit dem vom AKKU 1-HL (Bit 16 bis 23). Der AKKU 2 wird nicht verndert. (Tausche AKKU Doppelwort). Tausche den Inhalt vom AKKU 1 mit dem vom AKKU 2. (Tausche AKKUs). Kopiere den Inhalt von AKKU 1 in den AKKU 2. Der AKKU 1 bleibt unverndert. Kopiere den Inhalt von AKKU 2 in den AKKU 1. Der AKKU 2 bleibt bei der S7-300 unverndert. Erhhe den Inhalt vom AKKU 1-LL (Bit 0 bis 7) um den angegebenen Wert. Inhalte vom AKKU 1-LH, AKKU 1-H und AKKU 2 werden nicht verndert. Verringere den Inhalt vom AKKU 1-LL (Bit 0 bis 7) um den angegebenen Wert. Inhalte vom AKKU 1-LH, AKKU 1-H und AKKU 2 werden nicht verndert.

Tabelle 23: AKKU Operationen

10.1.1.1.1.1.2.1.2

Wortweise Digitalverknpfungen

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 50

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Mit wortweisen Digitalverknpfungen werden Paare von 16 Bit Wrtern oder 32 Bit Doppelwrtern Bit fr Bit entsprechend der gewnschten Booleschen Operation miteinander verknpft. Die zu verknpfenden Wrter mssen sich in den beiden Akkumulatoren befinden. Als Operationen stehen UND, ODER sowie EXKLUSIV ODER zur Verfgung. Das Ergebnis wird im AKKU 1 gespeichert und berschreibt somit dessen vorhergehenden Inhalt. Alle Digitalverknpfungen lassen sich auch mit Konstanten (16 oder 32 Bit) als Operanden ausfhren. Damit verknpft die Operation den Inhalt der entsprechenden Bits im AKKU 1 mit den Bitstellen der gewhlten Konstanten. Tabelle 10 enthlt eine Zusammenstellung aller Wortverknpfungen: Mnemonik UW UW Konst. 16 Bit OW OW Konst. 16 Bit XOW XOW Konst. 16 Bit UD UD Konst. 32 Bit OD OD Konst. 32 Bit Verknpfung Und Wort 16 Bit Oder Wort 16 Bit Exklusiv Oder Wort 16 Bit Und Doppelwort 32 Bit Oder Doppelwort 32 Bit Erluterung Bitweises Verknpfen von 2 Wrtern nach UND Bitweises Verknpfen von 2 Wrtern nach ODER Bitweises Verknpfen von 2 Wrtern nach EXKLUSIV ODER Bitweises Verknpfen von 2 Doppelwrtern nach UND Bitweises Verknpfen von 2 Doppelwrtern nach ODER

XOD XOD Konst. 32 Bit

Exklusiv Oder Doppelwort 32 Bit

Bitweises Verknpfen von 2 Doppelwrtern nach EXKLUSIV ODER

Tab. 24: Wortweise Digitalverknpfungen

10.1.1.2 Arithmetische Funktionen


Zur Multiplikation und Division mssen wie bei Addition und Subtraktion die zwei zu verknpfenden digitalen Werte in den Akkumulatoren 1 und 2 stehen. Das Ergebnis wird -mit Ausnahme der Integer-Ergebnisse- in den AKKU 1 geschrieben. Bei den Integer-Operationen steht das Ergebnis im AKKU 1-L (Bit 0 bis 15) und nur die Multiplikation und Division bentigen den gesamten AKKU 1 zur Aufnahme des Resultats. Bei der Integer-Division ist darauf zu achten, da der AKKU 1 in zwei Teile geteilt wird. Im AKKU 1-L steht dann der Quotient und im AKKU 1-H (Bit 16 bis 31) der Divisionsrest (nicht die Nachkommastellen!). Jede der 4 Grundrechenarten kann mit den Datentypen I (Integer, 16 Bit), D (Double Integer, 32 Bit) oder R (Real, Gleitpunktzahl, 32 Bit) durchgefhrt werden. In Tabelle 16 sind die Grundrechenarten mit den verschiedenen Datentypen zusammengestellt. Es besteht die Mglichkeit, im Integerbereich (INT, DINT) eine 16- oder 32-Bit Ganzzahl zum Inhalt des AKKU 1 zu addieren (analog zu den wortweisen Digitalverknpfungen mit Konstanten als Operanden). Operation mit dem Datentyp Bedeutung

INT +I + Ganzzahl (16 Bit) I *I /I -

DINT +D + L# Ganzzahl (32 Bit) D *D /D MOD

REAL +R R *R /R -

Addition: AKKU 2 + AKKU 1 = AKKU 1 Addiert eine 16 Bit oder 32 Bit Ganzzahl zum Inhalt des AKKU 1. AKKU 2 bleibt unverndert Subtraktion: AKKU 2 - AKKU 1 = AKKU 1 Multiplikation: AKKU 2 * AKKU 1 = AKKU 1 Division: AKKU 2 : AKKU 1 = AKKU 1 (mit Quotient als Ergebnis). Modulo-Operation: Dividiere zwei Doppelinteger-Zahlen und lade den Rest der Division in den AKKU 1.

Tab. 25: Arithmetische Operationen

10.1.2 Statusbits
Alle arithmetischen Operationen beeinflussen die Bits des Statuswortes

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 51

Dipl.Ing. Norbert Heinlein A0 und A1 OV (Anzeigebits)


(Overflow)

FH Frankfurt, Labor fr Automatisierungstechnik

10.1.2.1

OS

(gespeichertes Overflow)

Beim Datentyp REAL wird vor der auszufhrenden Operation geprft, ob die Akkumulatoren gltige Real-Zahlen enthalten. Ist dies nicht der Fall, liefert die gewhlte Funktion einen ungltigen Wert im AKKU 1 zurck und setzt die Statusbits A0, A1, OV und OS auf 1. Die Auswertung der Statusbits A0 und A1 kann analog zur Tabelle 3 erfolgen. Die Overflow-Anzeigen lassen sich als binre Operanden OV und OS mit den Operationen U, O, X, UN, ON und XN abfragen bzw. binr verknpfen. Auf die Overflow-Anzeigen reagieren die bedingten Sprnge SPO <Sprungmarke> SPS <Sprungmarke> (bei OV = 1) (bei OS = 1)

10.1.2.2 Mathematische Funktionen


Der Befehlssatz der S7-300 untersttzt viele mathematische Funktionen fr Gleitkommazahlen. Neben den blichen Rechenanweisungen bietet STEP 7 auch Quadrat-, Exponential- und trigonometrische Funktionen an. Bei den mathematischen Funktionen wird nur mit dem Akkumulator 1 gearbeitet, der Inhalt des Akkumulators 2 bleibt unverndert. Die im AKKU 1 stehende Zahl im Datenformat REAL stellt den Eingangswert fr die auszufhrende Funktion dar. Das berechnete Ergebnis, ebenfalls im Datenformat REAL, wird in den AKKU 1 zurckgeschrieben. Liegt whrend der Funktionsausfhrung im AKKU 1 eine ungltige Real-Zahl vor, so wird wie bei den arithmetischen Funktionen verfahren.

10.1.2.3 Quadrat, Quadratwurzel, Logarithmus- und Exponentialfunktion


Bei der Anweisung SQRT mu die Eingangszahl positiv sein. Ausnahme: Steht 0 im Akkumulator 1, so wird auch 0 zurckgeliefert. Bei der Berechnung des natrlichen Logarithmus ist zu beachten, da die Real-Zahl, aus der der Logarithmus gebildet werden soll, grer als Null ist. Operation SQR SQRT LN EXP Bedeutung Bilde aus der im AKKU 1 stehenden Real-Zahl das Quadrat. Berechne die Quadratwurzel einer Real-Zahl im AKKU 1 Berechne den natrlichen Logarithmus zur Basis e (= 2,71828) aus der Real-Zahl im AKKU 1. Berechne die Potenz aus der Basis e und dem im AKKU 1 stehenden Exponenten. Mit anderen AKKU 1 Worten: Bilde aus der Real-Zahl im AKKU 1 die Exponentialfunktion zur Basis e (e ).

Tab. 26: Quadrat, Quadratwurzel, Logarithmus- und Exponentialfunktion

10.1.2.4 Trigonometrische Funktionen


Die Winkelfunktionen Sinus, Cosinus und Tangens erwarten im Akkumulator 1 einen Winkel im Bogenma. Das Ergebnis der Funktionen liegt im Bereich zwischen 1.0 und +1.0 fr SIN/COS bzw. im gesamten Bereich fr TAN. Die Arcusfunktionen (Arcussinus, Arcuscosinus und Arcustangens) erwarten im AKKU 1 eine Real-Zahl, die in einem bestimmten Wertebereich enthalten ist. Sie liefern einen Winkel im Bogenma zurck. Tabelle 27 informiert ber die einzuhaltenden Wertebereiche, Tabelle 28 ber die Winkel- und Arcusfunktionen: Funktion ASIN ACOS ATAN Erlaubter Wertebereich 1.0 bis +1.0 1.0 bis +1.0 Gesamter Bereich zurckgegebener Wert /2 bis +/2 0 bis /2 bis +/2

Tab. 27: Erlaubte Wertebereiche der Arcusfunktionen

Operation SIN COS TAN ASIN

Bedeutung Berechne den Sinus des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Cosinus des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Tangens des Bogenwerts, der im AKKU 1 als Real-Zahl steht. Berechne den Arcussinus der Real-Zahl, die im AKKU 1 steht.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 52

Dipl.Ing. Norbert Heinlein ACOS ATAN

FH Frankfurt, Labor fr Automatisierungstechnik

Berechne den Arcuscosinus der Real-Zahl, die im AKKU 1 steht. Berechne den Arcustangens der Real-Zahl, die im AKKU 1 steht.

Tab. 28: Winkel- und Arcusfunktionen

10.1.2.5 Statusbits
Auch bei den vorgestellten mathematischen Funktionen findet eine entsprechende Beeinflussung der Bits des Statuswortes wie bei arithmetischen Anweisungen statt.

10.1.2.5.1.1.2.1.1

Datentyp-Umwandlungsfunktionen

Der Befehlsvorrat der S7-300 untersttzt eine Vielzahl von Mglichkeiten zur Konvertierung von Datentypen. Die Umwandlungsfunktionen konvertieren den Datentyp des im Akkumulator 1 stehenden Werts in den gewnschten Typ. Je nach Funktion ist hiervon nur das rechte Wort (die Bits 0 bis 15) oder der gesamte Inhalt des Akkumulators 1 betroffen. Der Inhalt des Akkumulators 2 wird von den Umwandlungsfunktionen nicht verndert.

Operation

Bedeutung

ITD ITB DTB DTR BTI BTD RND RNDRND+ TRUNC

INT To DINT: Wandle Integer-Zahl (16 Bit) im AKKU1 in eine Doppelinteger-Zahl (32 Bit). INT To BCD: Wandle Integer-Zahl (16 Bit) im AKKU1 in eine BCD-Zahl. DINT To BCD: Wandle Doppelinteger-Zahl (32 Bit) in eine BCD-Zahl. DINT To REAL: Wandle Doppelinteger-Zahl (32 Bit) in eine Real-Zahl. BCD To INT: Wandle BCD-Zahl im AKKU1 in eine Integer-Zahl (16 Bit). BCD To DINT: Wandle BCD-Zahl in eine Doppelinteger-Zahl (32 Bit). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl mit Runden (z.B. +3.67 +4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es wird auf die nchst kleinere (oder gleiche) ganze Zahl abgerundet (z.B. +3.99 +3; 3.67 4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es wird auf die nchst hhere (oder gleiche) ganze Zahl aufgerundet (z.B. +3.01 +4). Wandle 32 Bit Realzahl in 32 Bit Ganzzahl. Es werden die Nachkommastellen abgeschnitten (z.B. +3.99 +3).

Tab. 29: Datentyp-Konvertieren und Runden Bei der ITB-Wandlung darf die Integer-Zahl im AKKU 1 maximal 999, bei der DTB-Wandlung maximal 9 999 999 betragen, sonst wird die Wandlung nicht durchgefhrt. Es werden zustzlich die Statusbits OV und OS beeinflut. Befindet sich bei der BTI- bzw. BTD-Wandlung in der BCD-codierten Zahl ein Zahlenwert zwischen 10 und 15 bzw. A und F in hexadezimaler Darstellung, so meldet die CPU einen Programmierfehler und ruft den Organisationsbaustein OB 121 (Synchronfehler) auf. Ist dieser nicht vorhanden, also nicht programmiert, so geht die CPU in den StopZustand. In Bild 2 sind alle mglichen bergnge zwischen den unterschiedlichen Zahlentypen in einer Art Zustandsdiagramm zusammengefat: BCD-Zahl 3-stellig IEEE 7-stellig

BTI ITB BTD

Ganzzahl ITD 16 Bit

Gleitpunktzahl 32 Bit

32 Bit

DTR TRUNC, RND, RND+, RND-

DTB
Bild 4: Umwandlungs- und Rundungsoperationen

10.1.2.5.1.1.2.1.2

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 53

Dipl.Ing. Norbert Heinlein 10.1.2.5.1.1.2.1.3 Komplementbildung

FH Frankfurt, Labor fr Automatisierungstechnik

Neben den Umwandlungsfunktionen fr Datentypen stehen noch Funktionen zur Bildung des Einer- und Zweierkomplements sowie fr Negation und Betragsbildung zur Verfgung. Weitere Anweisungen betreffen die Bildung des Einer- und Zweierkomplements fr 32-Bit Ganzzahlen sowie die Negation und Betragsbildung von Realzahlen. Operation INVI INVD NEGI NEGD NEGR ABS Bedeutung INVERTIERE INT: Bilde das Einerkomplement einer Integer-Zahl, d.h. die Bits 0 bis 15 im AKKU 1-L werden umgekehrt (eine 0 wird zu 1 und eine 1 wird zu 0). INVERTIERE DINT: Bilde das Einerkomplement einer Doppelinteger-Zahl, d.h. die Bits 0 bis 31 im AKKU 1 werden umgekehrt. NEGIERE INT: Bilde das Zweierkomplement einer Integer-Zahl, d.h. der Inhalt von AKKU 1-L (Bit 0 bis 15) wird mit 1 multipliziert (im AKKU 1-L wird das 1er-Komplement gebildet und danach wird dazu +1 addiert). NEGIERE DINT: Bilde das Zweierkomplement einer Doppelinteger-Zahl, d.h. der Inhalt von AKKU 1 wird mit 1 multipliziert (analog NEGI). NEGIERE REAL: Kehre das Vorzeichen (Bit 31) der Realzahl im AKKU 1 um. ABSOLUTBETRAG: Bilde den Betrag der Realzahl im AKKU 1.

Tab. 30: Komplementbildung

10.1.2.5.1.1.2.1.4

Schieben und Rotieren

Bei allen Schiebeoperationen kann die Anzahl der zu schiebenden Bitstellen entweder in der jeweiligen Anweisung als Parameter fest angegeben oder ber den Inhalt des Akkumulators 2 variabel gestaltet werden kann. Gleiches gilt fr die Rotieranweisungen, mit Ausnahme des Rotierens durch das Statusbit A1, wobei immer nur um ein Bit rotiert werden kann. Die Bitstellen, die durch die Schiebeoperationen frei geworden sind, werden mit Nullen oder, beim Schieben mit Vorzeichen, durch den Signalzustand des Vorzeichen-Bits aufgefllt (bei Wortanweisungen Bit 15, bei Doppelwortanweisungen Bit 31). Bei den Rotieroperationen wird mit den hinausgeschobenen Bits wieder aufgefllt. Bei allen Operationen einschliesslich RLDA und RRDA steht das zuletzt hinausgeschobene Bit noch im Statusbit A1 fr eine weitere Auswertung zur Verfgung (z.B. fr Sprungoperationen oder zur binren Abfrage). Operation SLW 0...15 SLW SLD 0...32 SLD SRW 0...15 SRW SRD 0...32 SRD SSI 0...15 SSI SSD 0...32 SSD RLD 0...32 Bedeutung Schiebe Links Wort: Schiebe den Inhalt vom AKKU 1-L (Bit 0 bis 15) wortweise um die angegebene Anzahl von Stellen nach links. Schiebe den Inhalt vom AKKU 1-L wortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe Links Doppelwort: Schiebe den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach links. Schiebe den Inhalt vom AKKU 1 doppelwortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe Rechts Wort: Schiebe den Inhalt vom AKKU 1-L wortweise um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1-L wortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind.. Schiebe Rechts Doppelwort: Schiebe den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1 doppelwortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe den Inhalt vom AKKU 1-L wortweise mit Vorzeichen (Sign) um die angegebene Anzahl von Stellen nach rechts. Schiebe den Inhalt vom AKKU 1-L wortweise nach rechts mit Vorzeichen um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Schiebe den Inhalt vom AKKU 1 doppelwortweise mit Vorzeichen um die angegebene Anzahl von Stellen nach rechts. Schiebe Inhalt vom AKKU 1 doppelwortweise nach rechts mit Vorzeichen um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere Links Doppelwort: Rotiere den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach links.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 54

Dipl.Ing. Norbert Heinlein RLD RRD 0...32 RRD RLDA RRDA

FH Frankfurt, Labor fr Automatisierungstechnik

Rotiere den Inhalt vom AKKU 1 doppelwortweise nach links um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere Rechts Doppelwort: Rotiere den Inhalt vom AKKU 1 doppelwortweise um die angegebene Anzahl von Stellen nach rechts. Rotiere den Inhalt vom AKKU 1 doppelwortweise nach rechts um die Anzahl von Stellen, die im AKKU 2-LL in Bit 0 bis 7 angegeben sind. Rotiere den Inhalt vom AKKU 1 doppelwortweise um eine Bitposition ber das Statusbit A1 nach links. Rotiere den Inhalt vom AKKU 1 doppelwortweise um eine Bitposition ber das Statusbit A1 nach rechts.

Tab. 31: Schieben und Rotieren

10.1.2.5.1.1.2.1.5

Sprungoperationen

Zum Sprung SPB gibt es das Gegenstck SPBN, mit dem ein bedingter Sprung bei VKE = 0 mglich ist. Zustzlich gibt es Sprnge, die das Verknpfungsergebnis in das BIE-Bit retten (SPBB und SPBNB). Im BIE-Bit gespeicherte Verknpfungsergebnisse knnen ebenfalls durch Sprnge ausgewertet werden: (SPBI und SPBIN). Die Anweisung SPU (unzulssige Operation) wird ausgefhrt, wenn man z.B. bei einer arithmetischen Funktion durch Null dividiert. Operation SPA SPB Erluterung Springe unbedingt Springe bedingt wenn VKE = 1 Rechen ergebnis Signalzustand A1 A0

SPBN SPBB SPBNB SPBI SPBIN


SPZ SPN SPP SPM

Springe nach Marke, wenn das VKE = 0 ist. Springe nach Marke, wenn das VKE = 1 ist. Das VKE wird zustzlich in das BIE-Bit gerettet. Springe nach Marke, wenn das VKE = 0 ist. Das VKE wird zustzlich in das BIE-Bit gerettet. Springe nach Marke, wenn das BIE-Bit = 1 ist. Springe nach Marke, wenn das BIE-Bit = 0 ist.
Springe bedingt wenn Ergebnis Null ist Springe bedingt wenn Ergebnis nicht Null ist Springe bedingt wenn Ergebnis > Null ist Springe bedingt wenn Ergebnis < Null ist =0 <> 0 >0 <0 0 1
oder

0 0
oder

0 1 0

1 0 1

SPMZ SPPZ SPU


SPO SPS

Springe nach Marke, wenn das Ergebnis <= 0 ist. Springe nach Marke, wenn das Ergebnis >= 0 ist. Springe nach Marke, wenn das Ergebnis ungltig ist (unzulssige Operation).
Springe bedingt bei berlauf (OV = 1) Springe bedingt bei gespeichertem berlauf (OS = 1)

Tab. 32: Sprungfunktionen

10.1.2.6 Sprungverteiler SPL


Ein Sprungverteiler wird mit der Anweisung SPL realisiert. Hinter der Anweisung SPL ist eine Sprungmarke anzugeben, die auf die erste Anweisung nach der Sprungverteiler-Liste zeigt. In der auf SPL folgenden Liste drfen nur SPA-Anweisungen lckenlos stehen, wie nachfolgendes Beispiel zeigt. Die Nummer des auszufhrenden Sprungs wird im AKKU 1-L bergeben. Steht z.B. eine 0 im AKKU 1, so wird die erste Sprunganweisung ausgefhrt, bei einer 1 die zweite usw. Ist die Nummer grer oder gleich der Listenlnge, springt SPL zu der Anweisung, die auf den letzten Sprung folgt. Der Sprungverteiler ist auf maximal 255 Eintrge beschrnkt. Beispiel:

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 55

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

L Rezeptnummer SPL OVER der Liste SPA REZ0 (AKKU = 0) SPA REZ1 (AKKU = 1) SPA REZ2 (AKKU = 2) OVER: ... <0) ... REZ0: ... ... REZ1: ... ...

// AKKU mit Rezeptnummer laden // Marke der 1. Anweisung nach // Sprung zur Rezeptnummer 0 // Sprung zur Rezeptnummer 1 // Sprung zur Rezeptnummer 2 // Falsche Rezeptnummer (>2 oder

10.1.2.7 Schleifenzhler LOOP


Mit einer speziellen Sprunganweisung LOOP wird das Programmieren von Schleifen untersttzt. Die Anweisung LOOP dekrementiert zunchst den Akkuinhalt um eins. Ist danach der Akkuinhalt ungleich Null, so wird zur angegebenen Marke verzweigt. Ist er jedoch Null, so wird der Sprung nicht mehr ausgefhrt. Nun wird die Programmzeile bearbeitet, die unmittelbar der LOOP-Anweisung folgt. Beispiel:

... L #Anzahl NEXT: T #Schleifenzaehler ...


dekrementierten
... (Schleifenprogramm)
... L #Schleifenzaehler LOOP NEXT solange ... ... ist.

// Schleifenzhler vorbesetzen.
// Anfang der Schleife: Geladenen (Anzahl)
// bzw. durch die Anweisung LOOP
//) Index Schleifenzhler speichern.
// Schleifenzhler erneut in AKKU laden. // AKKU dekrementieren und // zu NEXT springen, wie der // AKKU (= Schleifenzhler) > 0

Der Schleifenzhler mu mit einem Wert zwischen +1 und +65535 initialisiert werden. Achtung Die Operation LOOP interpretiert den Schleifenzhler als Datentyp WORD (16 Bit). Verwalten Sie daher den Schleifenzhler in einem Merker- oder Datenwort. Wrden Sie den Schleifenzhler mit Null vorbesetzen, so wrde die Schleife 65 535 mal durchlaufen!

10.1.2.7.1.1.2.1.1

Bausteinfunktionen

10.1.3 Bausteinaufrufe

Bausteine knnen unbedingt oder durch den Zustand des VKE gesteuert aufgerufen werden.
Operation CALL FB xxx, DB yyy Bedeutung Unbedingter Aufruf eines Funktionsbausteins mit Instanz-DB und Bausteinparametern. Die Bausteinparameter mssen nicht zwingend beschaltet sein. Der angegebene Instanz-DB wird beim Aufruf automatisch mit

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 56

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik aufgeschlagen. Unbedingter Aufruf eines Funktionsbausteins ohne Instanz-DB und Bausteinparameter. Bedingter Aufruf eines Funktionsbausteins ohne Instanz-DB und Bausteinparameter. Der Aufruf erfolgt bei einem VKE = 1 Unbedingter Aufruf einer Funktion mit Bausteinparametern. Alle Bausteinparameter mssen beschaltet sein. Unbedingter Aufruf einer Funktion ohne Bausteinparameter. Bedingter Aufruf einer Funktion ohne Bausteinparameter. Der Aufruf erfolgt bei einem VKE = 1 Unbedingter Aufruf eines System-Funktionsbausteins mit Instanz-DB und Bausteinparametern. Die Bausteinparameter mssen nicht zwingend beschaltet sein. Der angegebene Instanz-DB wird beim Aufruf automatisch mit aufgeschlagen. Unbedingter Aufruf einer System-Funktion mit Bausteinparametern. Alle Bausteinparameter mssen beschaltet sein. Aufschlagen eines (globalen) Datenbausteins Aufschlagen eines Instanz-Datenbausteins

UC FB xxx CC FB xxx CALL FC xxx UC FC xxx CC FC xxx CALL SFB xxx, DB yyy

CALL SFC xxx AUF DB xxx AUF DI xxx Tab. 33: Bausteinaufrufe

10.1.3.1.1 Operationen fr DB-Nummer und DB-Lnge


Einige weitere Anweisungen ermglichen den Tausch der Datenbausteinregister sowie das Laden von DB-/DI- Lnge und DB-/DI- Nummer in den AKKU 1. Operation TDB L L L L Operand --DBNO DINO DBLG DILG Bedeutung Tausche die Inhalte der Datenbausteinregister Lade die Nummer des (globalen) Datenbausteins Lade die Nummer des Instanz-Datenbausteins Lade die Lnge des (globalen) Datenbausteins in Byte Lade die Lnge des Instanz-Datenbausteins in Byte

Tab. 34: Operationen fr DB-Nummer und DB-Lnge

10.1.4 Bausteinende
Programmbausteine lassen sich unbedingt oder abhngig vom aktuellen VKE bedingt beenden. Mit jeder Bausteinendeoperation erfolgt ein Rcksprung auf den zuvor bearbeiteten Baustein, in dem der aktuelle Baustein aufgerufen wurde. Operation BE BEA BEB Bedeutung Baustein Ende, jeder Programmbaustein (OB, FC, FB) muss mit BE abgeschlossen werden Baustein Ende Absolut: Innerhalb des Bausteins zu verwenden, jedoch nur in Verbindung mit Sprungoperationen sinnvoll Baustein Ende Bedingt: Baustein wird beendet, wenn das aktuelle VKE den Wert 1 besitzt

Tab. 35: Baustein-Ende Operationen

10.2 Prof. H. Maier

Zhlen und Vergleichen mit STEP 7

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 57

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Bei vielen Aufgaben der Automatisierungstechnik gilt es nicht nur bestimmte Ereignisse zu erfassen, sondern auch die Hufigkeit ihres Auftretens quantitativ zu bewerten. Hierzu bieten alle Speicherprogrammierbaren Steuerungen dem Anwender komfortable und flexibel einsetzbare Zhlfunktionen an. Anwendungsschwerpunkte sind dabei das Ermitteln und Verwalten von Mengen bzw. Stckzahlen. Besonderer Bedarf von Zhleinrichtungen besteht bei Verpackungsautomaten, sei es zum Abzhlen von Pillen, Eisenschrauben fr Kleinpackungen oder Zigaretten, sofern sich die Aufgabe nicht einfacher mit Wgeeinrichtungen lsen lsst. Dabei werden in der Regel die Impulse von Gebern oder anderweitig erzeugte Signalwechsel ber einen Binreingang einem Zhler zugefhrt, dessen jeweiliger Zhlerstand ein Ma fr eine erfasste bzw. abgegebene Menge darstellt. So knnte ein Lichttaster immer dann einen Zhlimpuls liefern, sobald ein Objekt vom optischen Strahl erfasst wird.

10.2.1 Zhlfrequenz
Die Zhlfunktionen werden im Systemspeicher der CPU realisiert. Dabei ist jedoch zu bedenken, dass die verwendete CPU auch die zu zhlenden Wechsel des Signalzustands eindeutig erkennen muss. Dies ist folglich nur dann mglich, wenn ein Eingangsimpuls - oder die Pause zwischen zwei Impulsen- mindestens fr die Dauer eines Programmzyklus ansteht. Je grer also die Zykluszeit (Programmbearbeitungszeit) ist, um so niedriger wird demnach die zulssige Zhlfrequenz. Zur Verarbeitung hherer Signalfrequenzen mssen daher spezielle periphere Baugruppen eingesetzt werden, die unabhngig von der Zykluszeit der CPU arbeiten und ber schnell reagierende Impulseingnge verfgen.





10.2.2 Einsatzmglichkeiten fr Zhler

Je nach Aufgabenstellung lassen sich die Zhler auf unterschiedliche Weise einsetzen:
- Als Rckwrtszhler zum Abzhler vorgegebener Mengen. Hierbei wird der Zhler, von einem per Programm vorgebbaren Anfangswert, bis Null herunter ge zhlt. Beim Erreichen des Wertes Null findet ein Wechsel des binren Zhlerstatus - Als Vorwrtszhler zum Erfassen unbekannter Stckzahlen oder Ereignismengen. In Verbindung mit Vergleichsfunktionen lassen sich Sollmengen oder Grenzwerte ber- Als kombinierter Vor- und Rckwrtszhler zur Bestimmung von Mengendifferen zen bzw. zur Bestandserfassung von zu- und abgefhrten Objekten (z. B. Lagerbe stand). - Einfache zyklische Steuerungsablufe, die sich in einem festen Zeitraster abspielen, einem Vor- oder Rckwrtszhler als zentralem Element einer Taktkette programmiert werden. knnen mit ausgehend statt. prfen.

10.2.3 Funktionen eines Zhlers

Zur Realisierung der unterschiedlichen Anwendungen bietet ein Zhler die folgenden Programmierfunktionen an:
- Zhler auf einen vorgebbaren Angfangswert setzen - Zhler vorwrts zhlen - Zhler rckwrts zhlen - Zhler rcksetzen (auf den Wert Null) - Binrzustand des Zhlers abfragen - Zhlerwert als Dualzahl abfragen - Zhlerwert als BCD-Zahl (codiert) abfragen

10.2.4 Zhler als KOP- oder FUP-Box


In der grafischen Darstellung eines Zhlers als Box sind alle Zhleroperationen ber die Funktionseingnge (links) oder -ausgnge (rechts) bercksichtigt. Bild 1 zeigt eine Zhlerbox fr einen Vor-/ Rckwrtszhler. ber der Box steht zunchst die Nummer bzw. Adresse des Zhlers, im Beispiel Z 12. Hier knnte auch alternativ eine eventuell vergebene symbolische Adresse (Name) fr den Zhler erscheinen. Z 12 ZAEHLER ZV ZR DUAL DEZ

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 58

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

S ZW R Bild 1: Zhler als KOP- oder FUP-Box

10.2.5 Ausfhrungen
Die Bezeichnung ZAEHLER oben in der Box gibt die Art des Zhlers an, hier Vor-/Rckwrtszhler. Weitere Ausfhrungen sind eine nur vorwrts zhlende Version Z_VORW und der nur rckwrts zhlende Zhler Z_RUECK. In der nachfolgenden Tabelle 1 werden die in der Zhlerbox eingetragenen Bezeichnungen fr die Ein und Ausgnge aufgelistet und deren Funktionen erlutert. Bezeichnung ZV ZR S ZW R DUAL DEZ Q Datentyp BOOL BOOL BOOL WORD BOOL WORD WORD BOOL Funktion Vorwrts zhlen Rckwrts zhlen Zhler auf Anfangswert setzen Vorgabe des Anfangswertes Zhler rcksetzen Aktueller Zhlerwert im Dualcode Aktueller Zhlerwert im BCD-Code Binrer Zhlerstatus

Tabelle 1: Ein- und Ausgnge der Zhlerbox

10.2.6 Belegung
Hierzu ist anzumerken, dass nur die Belegung des ersten Eingangs - hier: ZV- zwingend vorgeschrieben ist. Die Reihenfolge der Operationen ZV und ZR ist im brigen beliebig. Die Belegung aller weiteren Ein- und Ausgnge ist optional. d.h. man kann beispielsweise auf die Vorgabe eines Anfangswertes, auf das Rcksetzen oder auf die Abfrage des Zhlerwertes im Dual- oder BCD-Code verzichten. Natrlich macht ein Rckwrtszhler nur dann Sinn, wenn sich der Zhler auch auf einen Anfangswert setzen lsst und zumindest der binre Zhlerstatus ausgewertet wird. Die Funktionen des Zhlers

10.2.7 Positive Flanken


Zum Vorwrts- (ZV) oder Rckwrtszhlen (ZR) bedarf es grundstzlich einer positiven Flanke des am Zhleingang anliegenden VKEs (Wechsel des VKE von 0 nach 1). Wird das anliegende VKE aus einem Eingangssignal (E x.y) abgeleitet, so muss der Eingangsimpuls bzw. die darauf folgende Signalpause mindestens fr die Dauer eines Programmzyklus anstehen, um auch beim Einlesen der Eingnge in das Prozessabbild als Signalwechsel erfasst zu werden. Die maximale Zhlfrequenz ist demnach um so niedriger, je lnger die Progammzykluszeit dauert.

10.2.8 Vorwrtszhlen - ZV Zn
Mit jedem positiven Flankenwechsel des am ZV-Eingang anliegenden VKEs wird der Zhler um eine Einheit hher gezhlt. Hat der Zhler seinen obersten Wert 999 erreicht, so zeigen weitere Zhlflanken keine Wirkung. Ein bertrag oder bergang nach Null findet nicht statt.

10.2.9 Rckwrtszhlen - ZR Zn
Mit jedem positiven Flankenwechsel des am ZR-Eingang anliegenden VKEs wird der Zhler um eine Einheit rckwrts gezhlt. Hat der Zhler seinen untersten Grenzwert 0 erreicht, so zeigen weitere Zhlflanken keine Wirkung mehr. Ein Zhlen mit negativen Werten bzw. ein bergang zum obersten Wert 999 findet nicht statt.

10.2.10 Zhler setzen - S Zn


Mit Hilfe dieser Funktion lsst sich ein Zhler auf einen Anfangswert setzen, sobald das aktuelle VKE vor der Setzoperation S von 0 nach 1 wechselt, also ebenfalls einen positiven Flankenwechsel vollzieht. Der Bereich fr

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 59

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

den Anfangswert erstreckt sich von 0 bis 999. Diesen Anfangswert holt sich der Zhler aus dem Akkumulator 1. Daher muss der Anfangswert zuvor in den Akkumulator 1 gebracht werden. Vorgabe des Zhler-Anfangswertes Mit der zuvor beschriebenen Funktion Zhler setzen wird der am Eingang ZW der Zhlerbox anliegende Wert als Anfangswert in den Zhler bernommen. Dies ist insbesondere dann von Bedeutung, wenn der Zhler als Rckwrtszhler eingestzt werden soll. Genauer gesagt, es wird beim Zhler setzen ein im Akkumulator 1 anstehender Wert in den Zhler bernommen. Der Zhler-Anfangswert gelangt in der Regel durch eine Ladeoperation L Wert in den Akku 1. Der Zhlwert kann entweder als Konstante oder als wortbreiter Operand bzw. Variable vom Typ WORD gewhlt werden.

10.2.11 Vorgabe als Konstante


Der Zhlwert wird als 3-stelliger Dezimalwert (0 - 999) bzw. als 3-stellige BCD-Zahl vorgegeben. STEP 7 lsst hier folgende Formate zu: C#nnn W#16#0nnn z. B. C#253 //Zhlwert 253 z. B. W#16#0253 //Zhlwert 253 im HEX-Format

Hierbei sind nur positive Werte zulssig. Im HEX-Format drfen nur dezimale Ziffern (0 - 9) erscheinen. Zusammen mit der Ladeoperation ergeben sich folgende Anweisungen: L L C#623 W#16#0174 //Zhler-Anfangswert 623 in den Akku 1 laden //Zhler-Anfangswert 174 in den Akku 1 laden

10.2.12 Vorgabe als Variable


Man kann mit jedem wortbreiten Operanden einen Zhler-Anfangswert vorgeben. Voraussetzung hierzu ist jedoch, dass der Operand eine Bitbelegung aufweist, die einer 3-stelligen BCD-Zahl entspricht. Diese Bitbelegung zeigt das nachfolgende Bild 2: Bit Nr. 15 14 13 12 11 10 0 nicht genutzt Im BCD-Code vorgebbarer Zhler-Anfangswert, hier: 593 Bild 2: Bitbelegung fr die Zhlwert-Vorgabe So kann der Zhler-Anfangswert von einem Eingangswort (von auen einstell- bzw. variierbar) ebenso geliefert werden wie von einem Merker- oder Datenwort. Vorbestimmte Zhler-Anfangswerte knnen auch zunchst in Merker- oder Datenworten hinterlegt werden, um sie dann zum Setzen eines Zhlers zu laden, wie das nachfolgende Beispiel zeigt: L C#120 T MW ......................
......................
U E L MW S Z 24 12.2 24 4 //Zhlwert 120 als Konstante laden
//und im Merkerwort 24 speichern 1 0 1 1 9 8 0 x 10 7 0 6 1 5 0 4 0 x1 3 1 2 1 1 0

x 100

//Mit einem positiven Flankenwechsel an E 12.2


//wird der im MW 24 gespeicherte Zhlwert 120
//als Startwert in den Zhler Z 4 bernommen.

10.2.13 Zhler rcksetzen - R Zn


Ein Zhler wird rckgesetzt, wenn am Rcksetzeingang der KOP-/FUP-Box bzw. vor der AWL-Rcksetzoperation R Zn das VKE den Wert 1 besitzt. Das Rcksetzen setzt den Zhlwert auf Null, womit auch die binre Abfrage des Zhlerstatus den Wert 0 liefert (Ausgang Q der Zhlerbox). Der Zhler bleibt so lange rckgesetzt, wie das VKE am Rcksetzeingang den Zustand 1 behlt. Ein Setzen oder Vorwrtszhlen wird durch das Rcksetzen blockiert. Beachten Sie:

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 60

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Das Rcksetzen wirkt - im Gegensatz zu S, ZV oder ZR- nicht mit einer positive Flanke des rcksetzenden VKEs, sondern statisch ber dessen Zustand. So lange die Rcksetzfunktion mit 1 bearbeitet wird, bleibt der Zhler auch rckgesetzt. Das Rcksetzen erfolgt somit statisch und ist dominant gegenber den Funktionen S, ZV oder ZR. Duales Laden eines Zhlwertes - L Zn Die Ladefunktion L Zn bergibt den zum Zeitpunkt der Abfrage anliegenden Zhlerstand dual codiert (10 Bit) rechtsbndig an den Akkumulator 1. Der Wert entspricht einer positiven Zahl im Format INT und kann in dieser Form weiterverarbeitet (z. B. mit arithmetischen oder Vergleichsfunktionen) oder mit Hilfe der Transferfunktion T in einem Operanden wie Merker-, Daten- oder Ausgangswort gespeichert werden. Beispiel: L Z 28 T MW 50 //Aktuellen Zhlerwert dual in den AKKU 1 laden //und im Merkerwort 50 speichern

Diese Lade-/Transfersequenz wird in der FUP-/KOP-Darstellung automatisch erzeugt, wenn man den Ausgang DUAL der Zhlerbox mit einem Wortoperanden, z. B. MW 50, beschaltet, wie dies Bild 3 zeigt.

DUAL DEZ Q

MW 50 AW 12

Bild 3: Beschaltung der digitalen Zhlerausgnge

10.2.14 BCD - Codiertes Laden eines Zhlerwertes - LC Zn


Die Ladefunktion LC Zn bertrgt den zum Zeitpunkt der Abfrage anliegenden Zhlerstand
BCD-codiert (12 Bit = 3 Dekaden zu 4 Bit) rechtsbndig in den Akkumulator 1. Der Wert besitzt den selben Aufbau
wie ein Vorgabewert fr den Zhler, siehe Bild 2. Er kann ebenfalls mit einer Transferfunktion T an einem anderen
Operanden (Merker-, Daten-, Ausgangswort) bergeben werden.
Beispiel: LC Z 28 T AW 12 //Zhlerwert BCD-codiert in den AKKU 1 laden //und an das Ausgangswort 12 bergeben

Binre Abfrage eines Zhlers Der binre Signalausgang Q eines Zhlers liefert den Wert 1, solange der aktuelle Zhlerwert grer als Null ist (1 ... 999). Die binre Abfrage ergibt 0, wenn auch der Zhlerstand Null ist. Diese Funktion ist besonders interessant fr den Betrieb eines Rckwrtszhlers: Sobald der Zhler von seinem Voreinstellwert bis Null herunter gezhlt wurde, wechselt der binre Signalausgang von 1 nach 0. Der binre Signalausgang kann mit allen binren Signalabfragen U Zn, O Zn, X Zn bzw. den negierenden Anweisungen UN Zn, ON Zn und XN Zn abgefragt und das Abfrageergebnis auch weiter verknpft werden.

Programmierbeispiel fr einen Zhler in FUP und AWL


In Bild 4 wird ein Beschaltungsbeispiel fr eine Zhlerbox in FUP-Darstellung zusammen mit der korrespondierenden Anweisungsliste gezeigt. Anstelle der direkt dargestellten Operanden knnten natrlich auch symbolische Operanden verwendet werden, in der Symboltabelle definiert sind. FUP: Z 24 1.1 ZV 24 ZAEHLER 24 E 1.1 ZV DUAL MW 4 U E 1.0 U E 1.2 ZR Z Z AWL: U E

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 61

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik L

C#40 E 1.2 0.0 E 1.0 24 L 24 C#40 MW 24 E 0.0 AW 24 = 2.0 Bild 4: Programmierbeispiel fr einen Zhler in FUP und AWL M R 10 T U Z ZW 4 T LC Z Z S Q M 2.0 R Z ZR DEZ AW 10 S Z 24 U E

10.2.15 Zhlfunktionen in AWL


Es mssen nicht alle in der KOP-/FUP-Zhlbox verfgbaren Funktionen programmiert werden. Gerade in der AWLDarstellung kann man sich auf eine Mindestmenge bentigter Zhloperationen beschrnken. So knnte man einen Vorwrtszhler auf die Operationen ZV und die duale Abfrage des Zhlerstandes reduzieren: U ZV L T Sensor_1 Zaehler_1 Zaehler_1 Ausgabe //Bei Ansprechen des Sensors_1
//Zaehler_1 vorwrts zhlen
//Aktuellen Wert von Zaehler_1 in den AKKU 1 laden
//und am Ausgangswort Ausgabe anzeigen.

10.2.16 Reihenfolge der Operationen


Weiterhin ist man beim Programmieren in AWL nicht an eine strenge Reihenfolge der Operationen gebunden und kann daher durch eine geschickte Anordnung der Anweisungen bestimmte Effekte erreichen oder auch die Wiederholung von Anweisungen sparen. Sollen beispielsweise mehrere Zhler mit einer steigenden Flanke desselben Setzsignales (M 10.0) identische Anfangswerte (C#125) bernehmen, so kann man dies so programmieren wie das nachstehende Beispiel zeigt: Beispiel: U L S S ............ ............ U R R M C#125 Z Z E Z Z 10.0 12 16 1.0 12 16 //Positive Flanke des Merkersignales M 10.0 //Vorgabewert 125 fr mehrere Zhler //Zhler 12 auf 125 setzen //Zhler 16 ebenfalls auf 125 setzen //Mit einem VKE = 1 an E 1.0 //lassen sich beide Zhler Z 12 und Z 16 //rcksetzen

Vergleichsfunktionen
Die Vergleichsfunktionen zhlen zu den digitalen Funktionen, die als Operanden Datentypen wie INT, DINT REAL verarbeiten. Mit den Vergleichsfunktionen ist es mglich, zwei digitale Operanden hinsichtlich zahlenmigen Gre miteinander zu vergleichen. Die Ausfhrung dieser Funktionen, die eigentlich arithmetische Subtraktion impliziert, erfolgt unbedingt, also unabhngig von einem zuvor gebildeten VKE sonstigen Bedingungen. Sie erzeugt jedoch ein binres VKE, das abhngig vom Ergebnis des Vergleichs ist. oder ihrer eine oder

10.2.17 Vergleichsergebnis
Dieses binre Vergleichsergebnis lsst sich mit allen bekannten binren Operationen weiter verknpfen, speichern oder mit bedingten Sprungoperationen auswerten. Somit bilden die Vergleichsoperationen einen bergang vom

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 62

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik die

eingangsseitig digitalen zum ausgangsseitig binren Operandenbereich. Weitere Informationen ber Grenrelation der zu vergleichenden Operanden liefern die Anzeigeflags A0 und A1 des Statusregisters.

10.2.18 Funktionsweise
Die zu vergleichenden Operanden mssen in den beiden Akkumulatoren 1 und 2 stehen. Dorthin gelangen Sie in der Regel mit Hilfe der Ladefunktion (L ... ). Dabei ist zu beachten, dass mit einer Ladeoperation der zu ladende Wert stets in den Akku 1 gelangt, der alte Wert des Akku 1 jedoch automatisch in den AKKU 2 weiter geschoben wird. Bild 5 zeigt die Inhalte der beiden Akkumulatoren nach dem Laden zweier Wortoperanden. AKKU 1 L L EW 6 MW 20 MW 20 EW 6 EW 6 AKKU 2 ????

Bild 5: Laden der Akkumulatoren 1 und 2

10.2.19 Akkumulatorfunktionen
Es gibt allerdings bei STEP 7 auch eine Reihe von Akkumulatorfunktionen, mit denen die Inhalte der Akkus vertauscht, verschoben oder anderweitig manipuliert werden knnen, z.B. TAK (Tauschen der Inhalte der Akkumulatoren 1 und 2), PUSH - POP (Schieben der Akkuinhalte, meist bei CPUs mit 4 Akkumulatoren verwendet) bzw. TAW oder TAD (Tauschen von Bytes im Akkumulator 1). Nach dem sich die zu vergleichenden Operanden in den beiden Akkumulatoren befinden, wird die eigentliche Vergleichsfunktion mit Angabe des Datentyps spezifiziert, siehe Tabelle 2. Wird der gewhlte Vergleich von den Operanden erfllt, so liefert die Funktion das binre Ergebnis 1, das als VKE fr die weitere Programmbearbeitung zur Verfgung steht. Andernfalls, bei nicht erflltem Vergleich, ergibt sich ein VKE von 0. Die Akkuinhalte werden dabei nicht verndert.

10.2.20 Vergleichsoperationen
In der nachfolgenden Tabelle 2 sind alle 6 Vergleichsoperationen mit den zulssigen Datentypen und den gltigen Operationscodes fr AWL-Darstellung zusammengestellt. Vergleichsfunktion

11 Operationscode mit Datentyp


Vergleich auf gleich Vergleich auf ungleich Vergleich auf grer Vergleich auf grer oder gleich Vergleich auf kleiner Vergleich auf kleiner oder gleich INT (Integer) = =I < >I >I > =I <I < =I DINT (Double Integer) = =D < >D >D > =D <D < =D REAL = =R < >R >R > =R <R < =R

Tabelle 2: Vergleichsoperationen mit den zulssigen Datentypen

11.1.1 Reihenfolge der Operanden


Natrlich spielt bei allen Vergleichen, mit Ausnahme der Vergleiche auf gleich (= =) und ungleich (< >) die Reihenfolge der geladenen Operanden eine wichtige Rolle: Es wird beim Vergleich stets geprft, wie sich der zuerst geladene Wert (im Akkumulator 2) grenmig zu dem 2. Wert (im Akkumulator 1) verhlt, also AKKU 2 > AKKU 1 ? AKKU 2 >= AKKU 1 ? AKKU 2 < AKKU 1 ? AKKU 2 <= AKKU 1 ?

11.1.2 Datentypen
Die in die Akkumulatoren geladenen Werte mssen den gleichen Datentyp (I, D oder R) aufweisen, der auch im Operationscode spezifiziert ist. Bei direkt (absolut) adressierten Variablen muss die Breite der Operanden ebenfalls

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 63

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

dem Datentyp entsprechen. Haben Sie beispielsweise mit = =R den Datentyp REAL gewhlt, so kann die direkt adressierte Variable nur die Breite eines Doppelwortes haben -DWORD-, z.B. L L >R Doppel....... //wort 22? ED 12 DB10.DBD 22 //Lade das Eingangs-Doppelwort 12 //Lade das Daten-Doppelwort 22 des Datenbausteins 10 //Vergleich: Ist das ED 12 grer als das Daten-

11.1.3 Besonderheiten
Wurde der Datentyp INT gewhlt, so vergleicht die CPU nur die beiden rechten (niederwertigen) Wrter der Akkumulatoren. Die linken Wrter in den 32-Bit Akkumulatoren bleiben dabei unbeachtet. Bei einem Vergleich mit REAL-Operanden wird auch berprft, ob die in den Akkus stehenden Operanden gltige REAL-Zahlen sind. Ist dies nicht der Fall, so ergibt der Vergleich in jedem Fall ein VKE von 0. Zugleich werden die Statusbits A0, A1 sowie die Overflow-Anzeigen OV und OS auf 1 gesetzt, siehe nachfolgender Abschnitt.

11.1.4 Die Statusbits


Die Vergleichsfunktionen beeinflussen die Statusbits A0 und A1, sowie, beim REAL-Vergleich, auch die OverflowAnzeigen. Das Setzen der Anzeigen A0 und A1 ist dabei unabhngig von der gewhlten Vergleichsfunktion und hngt nur vom Grenverhltnis der an dem Vergleich beteiligten Operanden ab. Die nachfolgende Tabelle zeigt die betroffenen Statusbits fr die mglichen Grenrelationen der beiden Operanden in den Akkumulatoren.

Das Ergebnis ist: gleich: AKKU 2 = AKKU 1 grsser: AKKU 2 > AKKU 1 kleiner: AKKU 2 < AKKU 1 Ungltig, da ein Operand ungltige REAL-Zahl ist

eine

A0 0 0 1 1

A1 0 1 0 1

OV 0 0 0 1

OS 1

Tabelle 3: Statusbits bei Vergleichsfunktionen Auswertung der Statusbits Die Statusbits lassen sich sowohl mit binren Abfragen wie auch mit bedingten Sprungfunktionen auswerten und weiter verarbeiten. Wie bereits in einem frheren Beitrag gezeigt, sind binre Abfragen mglich wie: U ON U >0 = =0 UO //Ergebnis grer Null: A0 = 0, A1 = 1 //Ergebnis gleich Null: A0 = 0, A1 = 0 //Ergebnis ungltig (unordered).

Zur Auswertung mit bedingten Sprungfunktionen gibt es Anweisungen wie: SPZ SPN SPP SPM SPU //Springe wenn Ergebnis gleich Null: A0 = 0, A1 = 0
//Springe wenn Ergebnis ungleich Null: A0 = 0, A1 = 0 oder
//A0 = 1, A1 = 0 //Springe wenn Ergebnis grer Null (plus): A0 = 0, A1 = 1 //Springe wenn Ergebnis kleiner Null (minus): A0 = 1, A1 = 0 //Springe wenn Ergebnis ungltig: A0 = 1, A1 = 1

Nheres hierzu wird jedoch in einem eigenen Kapitel zu Sprungfunktionen erlutert. Beispiele fr den Vergleich in AWL: 1. Vergleich nach INT L L = =I S wird // mit dem erzeugten VKE = 1 der Merker 20.0 ge//setzt. EW 250 M 12 20.0 //Laden des Eingangswortes 12 als INT-Wert //Laden der INT-Konstanten 250 //Vergleich auf gleich //Wenn das EW 12 dem Zahlenwert 250 entspricht,

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 64

Dipl.Ing. Norbert Heinlein 2. Vergleich nach REAL, mit symbolischen Operanden L L > =R ist UN S #Alarm_sperren #Alarm #Istwert #Maxwert

FH Frankfurt, Labor fr Automatisierungstechnik

//Laden der Variablen #Istwert als REAL-Zahl //Laden der REAL-Konstanten #Maxwert //Vergleich, ob #Istwert grer oder gleich #Maxwert //UND-Verknpfung des binren Vergleichsergebnisses //Wenn der Vergleich erfllt ist und die Alarme nicht ge//sperrt sind, wird die Variable #Alarm gesetzt. Vergleich als KOP-/FUP-Box

Die Box einer Vergleichsfunktion besitzt die zwei Eingnge IN1 und IN2 sowie einen unbeschrifteten Binrausgang. In der Box steht die berschrift CMP (compare) zusammen mit dem Symbol der gewhlten Vergleichsoperation und des Datentyps, z. B. CMP = =R (Vergleich zweier REAL-Zahlen auf gleich)
CMP < =I (Vergleich zweier INT-Zahlen auf kleiner oder gleich).
Bild 6 zeigt die Box eines Vergleichs mit der Zuweisung des binren Vergleichsergebnisses an einen Merker: CMP = =I 40.1 nimmt den Zustand 1 an, wenn MW 20 der (duale) Zahlenwert des 20 gleich 540 dem konstanten Wert 540 ist. Bild 6: Box eines Vergleichs in FUP-Darstellung Verknpfungen von Vergleichsfunktionen Das binre Ergebnis einer Vergleichsfunktion lsst sich wie jede andere Boole`sche Variable mit weiteren Variablen beliebig verknpfen. Steht der Vergleich am Beginn einer Verknpfung, so entspricht dies stets einer Erstabfrage. Weitere Variablen lassen sich mit UND bzw. ODER dazu verknpfen. Befindet sich die Vergleichsfunktion jedoch innerhalb einer binren Verknpfungskette, so mssen die Anweisungen des Vergleichs in Klammern gesetzt werden. Die folgenden Beispiele sollen dies verdeutlichen: IN 2 = IN 1 M 40.1 Merkerwortes Der Merker

12 Beispiele zur Verknpfung von Vergleichsfunktionen


12.1.1 Bereichsberschreitung
Im folgenden Beispiel berprft das Programm, ob ein am Eingangswort EW 14 anstehender Messwert den erlaubten Bereich ber- oder unterschreitet. Die Bereichsverletzung wird ber den Ausgang Alarm_Bereich gemeldet, sofern der Alarm mit dem Merker Alarm_frei freigegeben ist. L L >I O( L L <I ) U EW Maxwert
EW Minwert
Alarm_frei 14 //Lade den am EW 14 anstehenden Wert
//Lade den maximal erlaubten Wert
//Vergleiche auf grer oder gleich //Lade den am EW 14 anstehenden Wert
//Lade den minimal zulssigen Wert
//Vergleiche auf kleiner oder gleich //Wenn Alarme nicht gesperrt sind:

14

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 65

Dipl.Ing. Norbert Heinlein = Alarm_Bereich

FH Frankfurt, Labor fr Automatisierungstechnik //Meldung einer Bereichsberschreitung.

12.1.2 Mehrfacher Vergleich


In diesem Beispiel soll ermittelt werden, ob der Wert einer Variablen (Merkerwort) grer, kleiner oder gleich einem
festen Wert ist. Die 3 mglichen Flle fhren ber bedingte Sprungfunktionen zu unterschiedlichen Sprungmarken
und knnen dort mit geeigneten Programmsegmenten ausgewertet werden.
Lsung a:
Da mit den Vergleichsfunktionen keine nderung der Akkumulatorinhalte einher geht, knnen unterschiedliche
Vergleiche nacheinander ausgefhrt werden. Die bedingte Sprungfunktion SPB MARKE wird dann
ausgefhrt, wenn das zuvor gebildete VKE = 1 ist, die gewhlte Vergleichsfunktion mithin erfllt ist.
L L = =I SPB >I Akkus): SPB GROE <I SPB KLEI //Vergleich auf kleiner: //Wenn #WERT kleiner ist: Sprung auf Marke KLEI GROE //Wenn #WERT grer ist: Sprung auf Marke #WERT 450 GLEI //Variable #WERT laden //Festen Vergleichswert laden //Vergleich auf gleich: //Wenn #WERT gleich 450 ist: Sprung auf Marke //GLEI //Vergleich auf grer (ohne neues Laden der

Lsung b:
Die Sprungverteilung erfolgt mit Hilfe der Statusbits A0/A1, siehe auch Statusbits bei Vergleichsfunktionen. Dabei
spielt die Art des gewhlten Vergleichs keine Rolle, da die Statusbits allein von der Grenrelation der in den
Akkumulatoren anstehenden Werte bestimmt werden.
L L = =I SPZ SPP SPM #WERT 450 GLEI GROE KLEI //Variable #WERT laden
//Festen Vergleichswert laden
//Vergleich auf gleich:
//Wenn #WERT = 450: Sprung auf Marke GLEI
//Wenn #WERT > 450: Sprung auf Marke GROE
//Wenn #WERT < 450: Sprung auf Marke KLEI

Zeitoperationen mit STEP 7


Verknpfungen mit Zeitverhalten kommt in der Automatisierungstechnik eine besonders wichtige Bedeutung zu. Ob es sich um berwachungs- oder Wartezeiten handelt oder um einen Blinktaktgenerator mit unterschiedlichen Einschalt- und Pausenzeiten - der Einsatz von Zeitfunktionen ist unerllich. Einige wahllos herausgegriffene Anwendungsbeispiele mgen dies belegen: - Ein Frderband soll Schttgut zu einer Beladestation transportieren. Damit nach Abschalten der Anlage das restliche auf dem Band befindliche Schttgut abtranspor tiert werden kann, soll das Band noch 20 s leerlaufen, bevor es ebenfalls zum Stillstand kommt (Ausschaltverzgerung).
S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 66

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

- Die Filter einer Entstaubungsanlage sollen alle 2 Stunden automatisch fr 10 s gert telt werden, um sie vom Staub zu befreien. - Die Beleuchtung einer Tiefgarage wird mit Einfahren eines Fahrzeugs eingeschaltet und schaltet sich automatisch 50 s spter wieder aus. - Die Zeit zum Befllen eines Silos soll ber ein Zeitglied bestimmt werden. Die Reihe von Beispielen knnte beliebig fortgesetzt werden. Daher haben die Hersteller von Automatisierungssystemen wie S7 im Befehlssatz der Steuerungsgerte eine Reihe von Zeitoperationen vorgesehen. Die bekanntesten, auch bei Schtzsteuerungen verfgbaren Zeitoperationen, sind die Einschalt und die Ausschaltverzgerung. 12.2 Einschaltverzgerung Wie Bild 1 zeigt, wird bei einer Einschaltverzgerung der bergang des Eingangssignales von 0 nach 1 (Einschaltflanke) im Ausgangssignal um eine gewisse Zeit verzgert te wiedergegeben. Das Ausgangssignal kehrt jedoch unverzgert in die Nullage zurck, sobald das Eingangssignal zu 0 wird. 12.3 Ausschaltverzgerung Bild 1 zeigt ebenfalls, da bei einer Ausschaltverzgerung das Ausgangssignal einen 0 - 1 Anstieg des Eingangssignales unverzgert bernimmt. Nach der Rckkehr des Eingangssignales zu 0 verbleibt jedoch das Ausgangssignal noch eine gewisse Zeit ta im Signalzustand 1, bevor es ebenfalls -also verzgert- den 0-Wert wieder annimmt.
1 0 1 0 te 1 0 1 0 ta

Eingangssignal Ausgangssignal

Eingangssignal Ausgangssignal

Einschaltverzgerung Ausschaltverzgerung Bild 1: Ein- und Ausschaltverzgerung

12.4 Zeitglieder Die in der Zentralbaugruppe einer SPS verfgbaren Zeitglieder verwirklichen demnach eine zeitlich-logische Funktion zwischen einem binren Eingangs- und einem Ausgangssignal. Hierzu werden reservierte Bereiche des Systemdatenspeichers der Zentralbaugruppe (CPU) herangezogen, die als Rckwrtszhler betrieben werden.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 67

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Aus dem Prozessortakt abgeleitete Taktgeneratoren liefern Zhlimpulse zum Rckwrtszhlen des dem jeweiligen Zeitglied entsprechenden Zhlers. Das Starten einer Zeit heit somit, den zugeordneten Zhler auf einen vom Zeitwert bestimmten Anfangswert zu laden und den geeigneten Zhltakt zum Rckwrtszhlen frei zu geben. Die gewhlte Zeit ist dann abgelaufen, wenn die zugefhrten Zhlimpulse den Zhlerstand auf Null gebracht haben. Fr jedes Zeitglied wird in der CPU der S7 ein Speicherwort, also 16 Bit, reserviert. Der Zhlerwert und das gewhlte Zeitraster (Zeitbasis fr die Zhlimpulse) werden darin in folgendem Format gespeichert, Bild 2: Bit Nr. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

x 100

x 10

x1

nicht Zeitraster: benutzt 00 = 0,01 s Zeitwert: Im BCD-Code vorgebbarer Zhlwert des 01 = 0,1 s Zeitgliedes 10 = 1 s 11 = 10 s

Bild 2: Speicherwort fr ein Zeitglied 12.5 Zeitdauer Die Zeitdauer ergibt sich aus dem Produkt aus Zeitwert und dem gewhlten Zeitraster. Sie ist die Zeitspanne, whrend der eine Zeitfunktion aktiv ist (die Zeit luft). Das Zeitraster bestimmt, mit welcher Taktperiode der Zeitwert (Inhalt des Zhlers) dekrementiert wird. Die gewnschte Zeit wird um so genauer und feinstufiger wiedergegeben, je kleiner das Zeitraster ist. Da der Zeitwert als 3-stelliger BCD-Code im Speicherwort steht, lassen sich Zeiten zwischen 10 ms (Zeitwert = 1, Zeitraster = 0,01 s) und 9990 s (Zeitwert = 999, Zeitraster = 10 s) whlen. Der Hchstwert erzeugt also eine Zeit von 2 Stunden, 46 Minuten und 30 Sekunden. Das Starten einer Zeit Eine Zeitfunktion wird gestartet, wenn das vor der Startoperation gltige VKE (als Einzelsignal oder Ergebnis einer Verknpfung) seinen Signalzustand wechselt. Die meisten Zeitfunktionen erfordern einen Signalwechsel von 0 nach 1 (positive Signalflanke). Bei einer Ausschaltverzgerung erfolgt der Start der Zeit jedoch mit einer negativen Signalflanke, d.h. einem Signalwechsel des startenden VKEs von 1 nach 0, siehe auch Bild 1, Ausschaltverzgerung. Wie STEP 5 bietet auch STEP 7 fnf mgliche Startoperationen mit unterschiedlicher Wirkungsweise: - SI - Start als Impuls - SV - Start als verlngerter Impuls - SE - Einschaltverzgerung - SS - speichernde Einschaltverzgerung - SA - Ausschaltverzgerung

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 68

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Beispiel: U UN L SI E 2.3 //Wenn E 2.3 den Signalzustand 1 hat


M 6.1 //und Merker 6.1 den Signalzustand 0
S5T#40s //Zeitdauer 40 s vorgeben
T 12 //Zeitglied 12 als Impuls starten

Bevor das spezifische Signalverhalten dieser Startoperationen jedoch nher erlutert wird, seien erst die Mglichkeiten zur Vorgabe der Zeitdauer vorgestellt. Vorgabe der Zeitdauer Beim Start eines Zeitgliedes wird dem Akkumulator 1 der CPU ein Wert fr die gewnschte Zeitdauer entnommen. Wann und auf welche Weise dieser Wert in den Akkumulator gelangt, spielt im Prinzip keine Rolle. Es sei jedoch empfohlen, diesen Wert in der Regel erst kurz vor der Startoperation in den Akkumulator zu laden. Die Vorgabe der Zeitdauer kann auf unterschiedliche Weise erfolgen: - Als Konstante oder - als Variable (Eingangswort, Merkerwort, Datenwort). Vorgabe der Zeitdauer als Konstante:
Hierzu bietet STEP 7 den Datentyp S5TIME bzw. S5T mit einem eigenen Format
an. Die Zeitdauer lt sich dann in Stunden (H), Minuten (M), Sekunden (S) und
Millisekunden (MS) exakt angeben. Der Wert fr die Zeitdauer wird mit der Operation L
- Lade in den Akku 1 gebracht: L S5TIME#aHbbMccSdddMS Millise (a Stunden, bb Minuten, cc Sekunden, ddd kunden) Hierzu einige Beispiele: L S5TIME#Wert Zeitdauer L S5TIME#26M15S 26 Minuten und 15 Sekunden L S5T#20S500MS 20,5 Sekunden L S5T#1H10M 1 Stunde und 10 Minuten Tabelle 1: Vorgabe der Zeitdauer als S5TIME Konstante
Der Bereich erstreckt sich, wie bereits erwhnt, von S5TIME#10MS (kleinstes Zeitraster
10 Millisekunden) bis S5TIME#2H46M30S (entsprechend 9990 s).
Anstelle des Datentyps S5TIME kann man jedoch auch eine 16-Bit Konstante
vorgeben, die den Zeitwert mit dem Zeitraster nach Bild 2 enthlt. Im hexadezimaler
Darstellung hat die Konstante dann das folgende Format:
W#16#rxyz
wobei r = Zeitraster (0, 1, 2, 3) und xyz der Zeitwert im BCD-Format sind.
Auch hierzu einige Beispiele: Programmieren mit STEP 7

S7kurs_2000.doc 23.05.02

Seite 69

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Hexwert L W#16#1500 L W#16#2030 L W#16#3360 L W#16#0010

Zeitdauer Raster: 1, Zeitwert 500 500 x 0,1 s = 50 s Raster: 2, Zeitwert 30 30 x 1 s = 30 s (besser: 300 x 0,1 s) Raster: 3, Zeitwert 360 360 x 10 s = 3600 s = 1 Stunde Raster: 0, Zeitwert 10 10 x 0,01 s = 100 ms

Tabelle 2: Vorgabe der Zeitdauer als hexadezimale Konstante


Vorgabe der Zeitdauer als Variable:
Die Zeitdauer kann auch als Merker- oder Datenwort geladen werden. Es mu nur der
entsprechende Zeitwert im Merker- oder Datenwort gespeichert werden. Dieser kann
als Datentyp S5TIME oder als Zhlerwert + Zeitraster hinterlegt werden, wie die
folgenden Beispiele zeigen:
a) L T .... .... L S5T#20s //Zeitdauer fr 20 s laden MW 10 //und im Merkerwort 10 speichern MW 10 //Gespeicherten Zeitwert laden //Zeitdauer als hexadezimale Konstante laden //und im Datenwort 4 des Datenbausteins 8

b)

L T speichern .... .... L laden

W#16#1060 DB8.DBW 4

DB8.DBW 4

//Gespeicherten Zeitwert aus Datenbaustein 8

Zeitdauer aus einem Eingangswort


Mit Hilfe des in Bild 2 gezeigten binren Formats fr Zeitraster und -wert kann die
Zeitdauer auch einem Eingangswort entnommen werden. Daraus ergibt sich die
Mglichkeit, die Zeitdauer whrend des Betriebes, also ohne Programmnderung, ber
extern beschaltbare Eingnge (z. B. mit dezimalen Codierschaltern) zu verndern. Die
Bitpositionen des betreffenden Eingangswortes mssen dann entsprechend belegt sein,
wie das Beispiel in Bild 3 zeigt.
Beispiel fr ein Eingangswort (EW 4):
Bit Nr.
E4.7 E4.6 E4.5 E4.4 E4.3 E4.2 E4.1 E4.0 E5.7 E5.6 E5.5 E5.4 E5.3 E5.2 E5.1 E5.0 x x 0 1 0 0 1 1 0 1 0 1 0 0 0 0

3 x 100 nicht Zeitraster: benutzt 01 = 0,1 s

5 x 10 Zeitwert: 350 x 0,1 s = 35 s

0 x1

Bild 3: Vorgabe der Zeitdauer aus einem Eingangswort

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 70

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

12.6 Arbeitsweise eines Zeitgliedes Der ber den Akkumulator 1 geladene Zeitwert wird beim Starten der Zeitfunktion an das Zeitglied bergeben. Das Betriebssystem der CPU dekrementiert bei allen aktiven, also gestarteten Zeitgliedern die aktuellen Zeitwerte mit der Periode des jeweils gewhlten Zeitrasters. Die Zeit ist abgelaufen, sobald der Zeitwert bis Null herunter gezhlt wurde. Danach bleibt das Zeitglied in Ruhe bis zu einem weiteren Start der Zeitfunktion. Man beachte: Das Herunterzhlen der Zeitwerte geschieht vllig unabhngig von der Bearbeitung des Anwenderprogramms, also vllig asynchron zu den Programmzyklen. Damit besteht auch keinerlei Synchronisation zwischen einem vom Programm ausgelsten Startzeitpunkt einer Zeitfunktion und den zentral erzeugten Zhltakten fr das Zeitraster. Abfragen einer Zeitfunktion 12.7 Abfrage des Zeitstatus Der Zeitstatus (Zeit luft bzw. Zeit ist abgelaufen) lt sich ber den Binrzustand des Zeitgliedes abfragen. Die Abfrage erfolgt wie bei Eingngen oder Merkern mit UND , ODER und Exklusiv-ODER Anweisungen: Abfrage auf Signalzustand 1 U T n (*) O Tn X
(*)

Tn

Abfrage auf Signalzustand Bedeutung 0 UN Tn Verknpfung nach UND ON Tn Verknpfung nach ODER XN Tn Verknpfung nach EXOR

n ist ein Timer - Adreparameter, je nach CPU zwischen 0 und max. 255

Tab. 3: Abfrage von Zeitgliedern Das Abfrageergebnis lt sich mit anderen binren Variablen weiter verknpfen, z. B.: U UN U S T6 T 22 M 2.5 M 3.0 //Wenn T 6 den Signalzustand 1 fhrt
//UND T 22 den Signalzustand 0
//UND der Merker 2.5 den Signalzustand 1
//Setze den Merker 3.0

12.8 Abfrage der Zeitwerte Die Ladeoperationen L und LC fragen den aktuellen Zeitwert eines Zeitgliedes ab und stellen ihn entweder in dualer Form (L) oder BCD-codiert (LC) im Akkumulator 1 zur Verfgung. Beim Zeitwert handelt es sich um den aktuellen Zhlerstand eines gestarteten bzw. laufenden Zeitgliedes zum Zeitpunkt der Abfrage.
S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 71

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

12.9 Duales Laden eines Zeitwertes Beim dualen Laden eines Zeitwertes mit der Operation L T n wird der aktuelle Zeitwert des Timers T n als 10-stellige Dualzahl ohne Zeitraster rechtsbndig in den AKKU 1 gebracht. Die hherwertigen Stellen des AKKU sind mit Null belegt. Der bergebene Wert entspricht einer positiven Dualzahl vom Datentyp INT (Festpunktzahl, 16 Bit). Der Wert kann gespeichert und/oder mit verschiedenen wortverarbeitenden Operationen weiterverarbeitet werden (z.B. Vergleichs- oder Arithmetikoperationen). Beispiele: a) als Dualzahl b) den AKKU 1 Vergleichsgre = =I auf Gleichheit S sobald beide Werte M 2.0 //und setze den Merker 2.0 auf 1, //gleich gro sind. Beachten Sie: Da es sich nur um den momentanen Stand des rckwrts zhlenden Zhlers fr das Zeitglied handelt, entspricht dieser Wert nicht einer Zeitdauer, sondern ist ein Ma fr die Restlaufzeit des Zeitgliedes. 12.10 BCD-codiertes Laden eines Zeitwertes Beim BCD-codierten Laden eines Zeitwertes mit der Operation LC T n wird der aktuelle Zeitwert des Timers T n als 3-stellige BCD-Zahl mit dem Zeitraster rechtsbndig in den AKKU 1 geladen. Die Belegung des AKKU 1 entspricht dabei der Vorgabe eines Zeitwertes, wie es bereits Bild 2 zeigt. Die hherwertigen Stellen des AKKU sind mit Null belegt. Beispiel: LC Zeit T DB 6 Rcksetzen eines Zeitgliedes Mit der Operation R T n wird ein Zeitglied rckgesetzt, wenn das gltige VKE vor dieser Operation den Wert 1 besitzt. Die aktive Rcksetzoperation stoppt eine //raster DB6.DBW12 //und speichere den Wert im Datenwort 12 des T3 //Lade aktuellen Zeitwert von T 3 BCD-codiert mit //Vergleiche beide Werte vom Typ INT L T L L T5 MW 12 T14 +125 //Lade aktuellen Zhlerstand von T 5 //und speichere den Wert im Merkerwort 12 // Lade Zhlerstand von T 14 als dual in //Lade die Integer-Konstante 125 als

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 72

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

laufende Zeit und setzt Zeitwert wie auch Zeitraster auf Null. Die binre Abfrage des Zeitstatus liefert beim rckgesetzten Zeitglied stets den Wert 0. Das Rcksetzen eines Zeitgliedes mit einem VKE = 1 wirkt dominant gegenber jedem Startversuch und statisch (nicht alleine mit der Flanke), d.h. solange die Rcksetzanweisung mit 1 bearbeitet wird, ist das Zeitglied blockiert. Operationen fr ein Zeitglied Nachfolgend seien alle vorgestellten Operationen fr ein Zeitglied zusammengestellt, hier vom Typ SI (starte als Impuls). Diese Reihenfolge ist fr das Programmieren in AWL zwar empfohlen, jedoch nicht unbedingt bindend. Auch mssen keineswegs alle fr Zeitfunktionen vorhandenen Operationen verwendet werden. Es gengen die Anweisungen, die fr den jeweiligen Einsatzfall bentigt werden. In vielen Fllen reicht es aus, das Zeitglied mit Vorgabe der Zeit zu starten (SI, SV ...) und den Zeitstatus binr abzufragen.

Zeitoperation Starten des Zeitgliedes und Vorgabe des Zeitwertes Rcksetzen des Zeitgliedes Duales und BCD-codiertes Abfragen des Zeitgliedes Binres Abfragen des Zeitgliedes

12.11 U L SI U R L T LC T UN =

Anweisungen

E 2.1 S5T#4s500ms T 10 E 2.0 T 10 T 10 MW 12 T 10 AW 8 T 10 A 4.5

Tab. 4: Operationen fr ein Zeitglied SI SI - Start eines Zeitgliedes als Impuls Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, wenn das startende VKE auf dem Wert 1 bleibt. Solange die Zeit luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 1. Wechselt das startende VKE nach 0 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied angehalten. Der binre Ausgang des Zeitgliedes nimmt den Wert 0 an. Die digitale Abfrage des Zeitwertes (L T n, LC T n) liefert den Zhlerstand zum Zeitpunkt des Abbruchs, entsprechend der Restlaufzeit des vorzeitig unterbrochenen Zeitgliedes.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 73

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

12.12 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SI beim Starten und Rcksetzen.
VKE am tarteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t t

Bild 4: Das Zeitgliedes SI beim Starten und Rcksetzen. SV - Start eines Zeitgliedes als verlngerter Impuls Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, unabhngig davon, wie lange das startende VKE auf dem Wert 1 bleibt. Solange die Zeit luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 1. Wechselt das startende VKE erneut von 0 nach 1 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied erneut mit dem programmierten Zeitwert gestartet (die Zeitfunktion wird quasi nachgetriggert). Dieses Nachtriggern kann beliebig oft wiederholt werden, ohne da die Zeit vollstndig abluft. Der binre Ausgang des nachgetriggerten Zeitgliedes bleibt dann auf dem Wert 1 an. 12.13 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie auch die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SV beim Starten und Rcksetzen.
Nachtriggern der Zeit VKE am Starteingang VKE am Rck setzeingang Zeit luft

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 74

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Zeitstatus (Binrabfrage) t t t

Bild 5: Das Zeitgliedes SV beim Starten und Rcksetzen. SE - Start eines Zeitgliedes als Einschaltverzgerung Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, wenn das startende VKE auf dem Wert 1 verbleibt. Solange die Zeit noch luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 0. Erst wenn die Zeit vollstndig abgelaufen ist und das startende VKE noch den Wert 1 besitzt liefert der binre Ausgang des Zeitgliedes den Wert 1. Wechselt das startende VKE von 1 nach 0 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird das Zeitglied angehalten. Der binre Ausgang des Zeitgliedes bleibt damit auf dem Wert 0. Die digitale Abfrage des Zeitwertes (L T n, LC T n) liefert den Zhlerstand zum Zeitpunkt des Abbruchs, was der Restlaufzeit des vorzeitig unterbrochenen Zeitgliedes entspricht. 12.14 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Die binre Abfrage des Zeitstatus ergibt auch 0, wenn zum Zeitpunkt des Rcksetzens die Zeit bereits abgelaufen war, das startende VKE jedoch noch den Wert 1 besitzt. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SE beim Starten und Rcksetzen.
VKE am Starteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t <t t

Bild 6: Das Zeitgliedes SE beim Starten und Rcksetzen. SS - Start eines Zeitgliedes als speichernde Einschaltverzgerung

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 75

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Die Zeitfunktion startet, sobald das vor der Startoperation gltige VKE von 0 nach 1 wechselt. Die Zeit luft mit der programmierten Zeitdauer ab, unabhngig vom weiteren Verlauf des startenden VKE. Solange die Zeit noch luft, liefert die binre Abfrage des Zeitgliedes (Zeitstatus) das Ergebnis 0. Erst wenn die Zeit vollstndig abgelaufen ist, ergibt die binre Abfrage des Zeitstatus den Wert 1, unabhngig von der Dauer des startenden VKE. Das binre Abfrageergebnis des Zeitgliedes wird erst dann wieder zu 0, wenn die Zeitfunktion rckgesetzt wurde. Die ist SS die einzige Zeitfunktion, bei der das Rcksetzen obligatorisch ist. Wechselt das startende VKE von 0 nach 1 whrend die eingestellte Zeit noch luft, so wird das Zeitglied erneut mit dem vorgesehenen Zeitwert gestartet (das Zeitglied wird nachgetriggert). Dies kann beliebig oft erfolgen, ohne da die Zeit voll abluft. Der binre Ausgang des Zeitgliedes bleibt damit auf dem Wert 0. Die digitale Abfrage des Zeitgliedes (L T n, LC T n) liefert den jeweils aktuellen Zeitwert. 12.15 Rcksetzen Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SS beim Starten und Rcksetzen.
Nachtriggern der Zeit VKE am Starteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t t t

Bild 7: Das Zeitgliedes SS beim Starten und Rcksetzen. SA - Start eines Zeitgliedes als Ausschaltverzgerung Im Gegensatz zu allen bisher vorgestellten Zeitgliedern wird hier die Zeitfunktion gestartet, sobald das vor der Startoperation gltige VKE von 1 nach 0 wechselt (fallende Signalflanke). Die Zeit luft dann mit der programmierten Zeitdauer ab, sofern das startende VKE auf dem Wert 0 bleibt. Die binre Abfrage des Zeitgliedes (Zeitstatus) liefert das Ergebnis 1, solange das startende VKE 1 ist oder die Zeit noch luft. Die Dauer des am Starteingang anliegenden 1-Signales wird also um die programmierte Zeit verlngert, siehe auch Bild 1, Ausschaltverzgerung.

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 76

Dipl.Ing. Norbert Heinlein

FH Frankfurt, Labor fr Automatisierungstechnik

Wechselt das startende VKE wieder von 0 nach 1 bevor die eingestellte Zeit vollstndig abgelaufen ist, so wird die Zeitfunktion abgebrochen. Der Binrausgang bleibt auf dem Wert 1. Eine erneute fallende Flanke am Starteingang startet wieder die Zeitfunktion mit dem programmierten Zeitwert. Erst nach vollstndigem Ablauf der Zeit nimmt der binre Ausgang den Wert 0 an. 12.16 Rcksetzen

Wird die Rcksetzfunktion des Zeitgliedes bei laufender Zeit mit einem VKE von 1 bearbeitet, so wird das Zeitglied sofort zurckgesetzt. Sowohl die binre Abfrage des Zeitstatus wie auch die digitale Abfrage von Zeitwert und -raster liefern den Wert 0. Solange das VKE der Rcksetzfunktion auf dem Wert 1 bleibt, kann das Zeitglied nicht erneut gestartet werden. Auch bei einem VKE = 1 am Starteingang wird mit der Rcksetzfunktion der Binrausgang auf 0 gesetzt. Das nachfolgende Zeitdiagramm zeigt das Verhalten des Zeitgliedes SA beim Starten und Rcksetzen.

VKE am Starteingang VKE am Rck setzeingang Zeit luft Zeitstatus (Binrabfrage) t t t

Bild 8: Das Zeitgliedes SA beim Starten und Rcksetzen.

13 Zeitglieder in grafischer Darstellung: KOP - FUP


Die STEP 7 Zeitfunktionen werden in KOP- wie FUP-Darstellung stets als Box dargestellt mit den Eingngen auf der linken und den Ausgngen auf der rechten Seite. Bild 9 zeigt eine KOP-Box fr das Zeitglied SI (Zeit als Impuls starten).

13.1 KOP - Box

Datenty 13.2 Para p met er Nr. TIMER BOOL S

Erluterung

Kenn-Nummer des Zeitgliedes Starteingang

T - Nr

S7kurs_2000.doc

Programmieren mit STEP 7

Seite 77

Dipl.Ing. Norbert Heinlein S_IMPULS Q DUAL DEZ R

FH Frankfurt, Labor fr Automatisierungstechnik

TW R Q DUAL DEZ

S5TIME BOOL BOOL WORD WORD

Zeitwert Rcksetzeingang Zeitstatus (Binrausgang) Rest-Zeitwert (dual, INT-Format) Rest-Zeitwert (BCD-Format)

TW

Bild 9: KOP-Box und Parameter eines Zeitgliedes Alle 5 Zeitfunktionen werden in dieser Form dargestellt. Sie unterscheiden sich nur durch die das jeweilige Zeitglied spezifizierende Deskriptoren in der 1. Zeile der Box. In der nachfolgenden Tabelle 5 sind diese Deskriptoren fr die verschiedenen Zeitglieder zusammengestellt. Deskriptor 13.2.1 S_IMP ULS Operation Zeitfunktion SI Zeit als Impuls starten Zeit als verlngerten Impuls starten Zeit als Einschaltverzgerung starten Zeit als speichernde Einschaltverzgerung starten Zeit als Ausschaltverzgerung starten

SV 13.2.2 S_VIM P S_EVERZ SE S_SEVERZ SS S_AVERZ SA

Tabelle 5: Deskriptoren fr die verschiedenen Zeitglieder

13.3 Zeitbox in FUP Darstellung Zwischen KOP- und FUP-Darstellung gibt es keine wesentlichen Unterschiede. Die einzige Abweichung besteht darin, da sich in der FUP-Darstellung der Binrausgang Q nicht oben, sondern unten befindet: Beispiel: Das nachfolgende Beispiel zeigt ein Zeitglied in den Darstellungen KOP, FUP und AWL: FUP:
T5 S_IMPULS S TW DUAL DEZ Q MW 6 A 2.2 AW 8 E 0.0 R

E 0.1 S5T#20S

KOP:

AWL:

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 78

Dipl.Ing. Norbert Heinlein T5 E 0,1 0.1 S 0.0 S5T#20S T 5 E 0.0 MW AW 6 DEZ R 8 AW 8 S_IMPULS Q DUAL MW 6 A 2.2

FH Frankfurt, Labor fr Automatisierungstechnik

U L S5T#20S SI R

E T 5 U T 5 L T

TW

LC

T 5 T

U A

T 5 = 2.2

Bild 10: Zeitbox in FUP , KOP und AWL - Darstellung

S7kurs_2000.doc 23.05.02

Programmieren mit STEP 7

Seite 79

Automatisierungs und Antriebstechnik- SCE

Ausbildungsunterlage fr die durchgngige


Automatisierungslsung
Totally Integrated Automation (T I A)

MODUL A3
Startup SPS- Programmierung mit STEP 7

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 1 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Diese Unterlage wurde von Siemens A&D SCE (Automatisierungs und Antriebstechnik, Siemens A&D
Cooperates with Education) zu Ausbildungszwecken erstellt.
Siemens bernimmt bezglich des Inhalts keine Gewhr.
Weitergabe sowie Vervielfltigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist innerhalb
ffentlicher Aus- und Weiterbildungssttten gestattet. Ausnahmen bedrfen der schriftlichen Genehmigung
durch Siemens A&D SCE ( Hr. Knust: E-Mail: michael.knust@hvr.siemens.de).
Zuwiderhandlungen verpflichten zu Schadensersatz. Alle Rechte auch der bersetzung sind vorbehalten,
insbesondere fr den Fall der Patentierung oder GM-Eintragung.
Wir danken der Fa. Michael Dziallas Engineering und den Lehrkrften von beruflichen Schulen sowie weiteren
Personen fr die Untersttzung bei der Erstellung der Unterlage.

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 2 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

SEITE:
1. 2. 2.1 2.2 3. 4. 5. 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.7.1 5.7.2 5.7.3 5.8 Vorwort ............................................................................................................. Hinweise zur Programmierung der SIMATIC S7-300 mit STEP 7................... Automatisierungssystem SIMATIC S7-300 ......................................................... Programmiersoftware STEP 7 ............................................................................ Installation der Software STEP 7..................................................................... Programmierschnittstelle einstellen (PC- Adapter) ........................................ Was ist eine SPS und wofr werden SPSen verwendet?............................... Was bedeutet der Begriff SPS?.......................................................................... Wie steuert die SPS den Prozess? ..................................................................... Woher bekommt die SPS Informationen ber Prozesszustnde? ....................... Wo liegt der Unterschied zwischen ffnern und Schlieern?.............................. Wie spricht die SPS einzelne Ein-/Ausgangssignale an? .................................... Wie wird in der SPS das Programm bearbeitet? ................................................. Wie sehen logische Verknpfungen im SPS- Programm aus?............................ UND- Verknpfung ............................................................................................. ODER- Verknpfung........................................................................................... Negation............................................................................................................. Wie wird das SPS- Programm erstellt? wie kommt es in den Speicher der SPS?
22
Aufbau und Bedienung der SIMATIC S7-300 .................................................. Beispielaufgabe................................................................................................ STEP 7- Projekt anlegen .................................................................................. STEP 7- Programm schreiben in Funktionsplan FUP .................................... STEP 7- Programm in der CPU testen............................................................. 5
7
7
7
8
9
14
14
14
15
15
16
17
18
18
20
21

6. 7. 8. 9. 10.

23
26
27
35
47

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 3 von 48

Modul A3
Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

1.

VORWORT Das Modul A3 ist inhaltlich der Lehreinheit Grundlagen der STEP 7- Programmierung zugeordnet und stellt einen Schnelleinstieg in die STEP 7- Programmierung dar. Grundlagen der STEP 7- Programmierung 2 - 3 Tage Module A

Weiterfhrende Funktionen der STEP 7- Programmierung 2- 3 Tage Module B

Industrielle Feldbussysteme 2- 3 Tage Module D

Schrittketten programmierung 2- 3 Tage Module C

Prozess visualisierung 2- 3 Tage Module F

IT- Kommunikation mit SIMATIC S7 1- 2 Tage Module E Lernziel: Der Leser soll in diesem Modul das Programmieren einer Speicherprogrammierbaren Steuerung (SPS) mit dem Programmierwerkzeug STEP 7 erlernen. Das Modul vermittelt die Grundlagen und zeigt in den folgenden Schritten die Vorgehensweise anhand eines ausfhrlichen Beispiels. Installation der Software und Einstellen der Programmierschnittstelle Erluterung was eine SPS ist und wie diese arbeitet Aufbau und Bedienung der SPS SIMATIC S7-300 Erstellung eines Beispielprogramms Laden und Testen des Beispielprogramms

Voraussetzungen: Fr die erfolgreiche Bearbeitung dieses Moduls wird folgendes Wissen vorausgesetzt: Kenntnisse in der Handhabung von Windows 95/98/2000/ME/NT4.0

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 5 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Bentigte Hardware und Software 1 2 3 4 PC, Betriebssystem Windows 95/98/2000/ME/NT4.0 mit


Minimal: 133MHz und 64MB RAM, freier Plattenspeicher ca. 65 MB
Optimal: 500MHz und 128MB RAM, freier Plattenspeicher ca. 65 MB
Software STEP7 V 5.x
MPI- Schnittstelle fr den PC (z.B. PC- Adapter)
SPS SIMATIC S7-300 mit mindestens einer digitalen Ein- und Ausgabebaugruppe. Die
Eingnge mssen auf ein Schaltfeld herausgefhrt sein.
Beispielkonfiguration:
- Netzteil: PS 307 2A
- CPU: CPU 314
- Digitale Eingnge: DI 16x DC24V
- Digitale Ausgnge: DO 16x DC24V / 0,5 A

1 PC

2 STEP7

3 PC Adapter

4 S7-300

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 6 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

2. 2.1

HINWEISE ZUR PROGRAMMIERUNG DER SIMATIC S7-300 MIT STEP 7 AUTOMATISIERUNGSSYSTEM SIMATIC S7-300 Das Automatisierungssystem SIMATIC S7-300 ist ein modulares Kleinsteuerungssystem fr den
unteren und mittleren Leistungsbereich.
Es gibt ein umfassendes Baugruppenspektrum zur optimalen Anpassung an die
Automatisierungsaufgabe
Die S7-Steuerung besteht aus einer Stromversorgung, einer CPU und Ein- bzw.
Ausgangsbaugruppen (E/A-Baugruppen). Gegebenenfalls kommen noch
Kommunikationsprozessoren und Funktionsmodule fr spezielle Aufgaben wie z.B.
Schrittmotoransteuerung zum Einsatz.
Die Speicherprogrammierbare Steuerung (SPS) berwacht und steuert mit dem
S7- Programm eine Maschine oder einen Prozess. Die E/A-Baugruppen werden dabei im S7-
Programm ber die Eingangs- (E) und Ausgangsadressen (A) angesprochen.
Programmiert wird das System mit der Software STEP 7.

2.2

PROGRAMMIERSOFTWARE STEP 7 Die Software STEP 7 ist das Programmierwerkzeug fr die Automatisierungssysteme
SIMATIC S7-300
SIMATIC S7-400
SIMATIC WinAC

Mit STEP 7 knnen die folgenden Funktionen fr die Automatisierung einer Anlage genutzt werden:
Konfigurierung und Parametrierung der Hardware
Festlegung der Kommunikation
Programmierung
Test, Inbetriebnahme und Service
Dokumentation, Archivierung
Betriebs-/Diagnosefunktionen

Alle Funktionen werden durch eine ausfhrliche Online Hilfe untersttzt.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 7 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

3.

INSTALLATION DER SOFTWARE STEP 7 STEP 7 gibt es in drei Varianten: - STEP 7 Basisversion ermglicht den Einsatz von weiteren Optionspaketen wie S7- GRAPH oder S7- PLCSIM. Dieses Softwarepaket muss autorisiert werden. - STEP 7 Basis Software for Students beinhaltet das Optionspaket S7- PLCSIM. Dieses Softwarepaket muss autorisiert werden und ist dann 120 Tage lauffhig. - STEP 7 Mini als Einsteigerversion ohne Autorisierung. Hier knnen keine weiteren Optionspakete wie zum Beispiel S7- PLCSIM oder S7- GRAPH eingesetzt werden. STEP 7 wird auf CD-ROM ausgeliefert, wobei bei der Basisversion STEP 7 eine Diskette beiliegt,
die eine Autorisierung enthlt, die auf den PC bertragen werden muss und die Nutzung der
Basisversion von STEP 7 erst ermglicht.
Diese Autorisierung kann, um auf einem anderen PC genutzt zu werden, auch wieder auf die
Diskette zurckgeholt werden. Zum Thema Installation und bertragung der Autorisierungen sehen
Sie bitte auch Modul A2 Installation von STEP 7 V5.x / Handhabung der Autorisierung.

Um nun STEP 7 zu installieren, gehen Sie bitte folgendermaen vor:


1. 2. Legen Sie die CD von STEP 7 in das CD- ROM- Laufwerk ein.
Das Setup-Programm wird nun automatisch gestartet. Falls nicht, starten Sie es, indem Sie auf die Datei setup.exe doppelklicken. Das Setup-Programm fhrt Sie durch die gesamte Installation von STEP 7. Fr die Nutzung der Basisversion von STEP 7 ist auf Ihrem Rechner eine Autorisierung, d.h. eine Nutzungsberechtigung, erforderlich. Diese mssen Sie von der Autorisierungsdiskette auf den Rechner bertragen. Dies geschieht am Ende der Installation. Dort werden Sie in einem Dialogfenster vom SetupProgramm gefragt, ob Sie die Autorisierung durchfhren wollen. Wenn Sie Ja whlen, mssen Sie nur noch die Autorisierungsdiskette einlegen und die Berechtigung wird auf Ihren Rechner bertragen.

3.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 8 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

4.

PROGRAMMIERSCHNITTSTELLE EINSTELLEN (PC- ADAPTER) Um vom PC oder PG aus eine SIMATIC S7-300 programmieren zu knnen, wird eine MPI-
Verbindung bentigt. MPI steht dabei fr Multi Point Interface (Mehrpunktfhige Schnittstelle) und ist
eine Kommunikationsschnittstelle fr bis zu 32 Teilnehmer, die zur Programmierung, zum
Bedienen & Beobachten mit HMI und zum Datenaustausch zwischen SIMATIC S7 CPUs verwendet
wird.
Jede CPU der SIMATIC S7-300 besitzt eine solche integrierte Schnittstelle.
Um den PC, das PG oder einen Laptop an MPI anzuschlieen gibt es verschiedene Mglichkeiten:
- Integrierter ISA- Kommunikationsprozessoren fr das PG
- ISA- Kommunikationsprozessoren fr den PC (z.B. MPI-ISA- Card)
- PCI- Kommunikationsprozessoren fr den PC (z.B. CP5611)
- PCMCIA- Kommunikationsprozessoren fr den Laptop (z.B. CP5511)
- Adapter fr die Kommunikation ber die serielle Schnittstelle des PC oder Laptop (z.B. PC-
Adapter) Hier wird nun in den folgenden Schritten die Einstellung und Parametrierung eines PC-Adapters fr einen PC beschrieben. 1. PG-PC-Schnittstelle einstellen aufrufen. ( Start SIMATIC Step7 PG-PCSchnittstelle einstellen)

Auf PG-PCSchnittstelle einstellen klicken!

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 9 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

2.

Die Baugruppe installieren die als MPI-Schnittstelle zur Verfgung steht. ( Installieren )

Auf Installieren klicken!

3.

Die gewnschte Baugruppe z.B. PC-Adapter auswhlen und installieren ( PC-Adapter (PC/MPI-Cable)Installieren).

Auf Installieren klicken! Auf PC-Adapter (PC/MPI-Cable) klicken!

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 10 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

4.

Gewnschtes Gert auswhlen ( PC Adapter OK )

Auf PC Adapter klicken!

5.

Eigenschaften des PC-Adapters(MPI) anwhlen ( PC Adapter(MPI) Eigenschaften)

Auf Eigenschaften klicken!

Auf PC Adapter(MPI)' klicken!

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 11 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

6.

COM-Port und bertragungsgeschwindigkeit der seriellen Schnittstelle festlegen

COM-Port

bertragungsgeschwindigkeit

Hinweis: Die berstragungsgeschwindigkeit muss auch an dem PC-Adapter passend eingestellt sein! Die PC-Adapter der alten Generation (sogenannte PC/MPI-Kabel) sind nur in der Lage eine langsamere bertragungsgeschwindigkeit von 19200 Bit/s zu verarbeiten. 7. MPI-Adresse, Timeout, bertragungsgeschwindigkeit und hchste Teilnehmeradresse festlegen.

MPI-Adresse des PC/PG!

Timeout!

Baudrate! Hchste Teilnehmeradresse!

Hinweis: Es wird empfohlen die voreingestellten Werte zu bernehmen ! 8. Einstellungen bernehmen ( OK OK ).

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 12 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

9. Um die Einstellungen zu testen wird nun der SIMATIC Manager mit einem Doppelklick aufgerufen. ( SIMATIC Manager)

10. Dann wird der Stecker der von der MPI- Schnittstelle des PCs kommt auf die MPI- Schnittstelle der CPU gesteckt und die Spannungsversorgung der SPS eingeschaltet. Man findet die MPISchnittstelle in Form einer 9poligen D- Sub- Buchse hinter der Frontklappe der CPU.

11. Wenn man nun auf den Button Erreichbare Teilnehmer klickt, erscheint, wenn alle Parameter richtig gewhlt wurden, das folgende Bild mit einem Ordner fr die erreichte MPISchnittstelle. Dort steht auch die MPI-Adresse der CPU, die als Grundeinstellung 2 ist. ( )

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 13 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5. 5.1

WAS IST EINE SPS UND WOFR WERDEN SPSEN VERWENDET? WAS BEDEUTET DER BEGRIFF SPS? SPS ist die Abkrzung fr Speicherprogrammierbare Steuerung. Dies beschreibt ein Gert das
einen Prozess ( z.B. eine Druckmaschine zum Drucken von Zeitungen, eine Abfllanlage zum
Abfllen von Zement, eine Presse zum Pressen von Kunststoffformteilen, etc ... ) steuert.
Dies geschieht entsprechend den Anweisungen eines Programms das in einem Speicher des
Gertes steht.
Programm geladen im Speicher der SPS......

.... steuert die Maschine

Speicher

Programm mit Anweisungen SPS Maschine

5.2

WIE STEUERT DIE SPS DEN PROZESS? Die SPS steuert den Prozess, indem sogenannte Aktoren von den als Ausgngen bezeichneten Anschlssen der SPS mit einer Steuerspannung von z.B. 24V beschaltet werden. Dadurch knnen Motoren ein- und ausgeschaltet, Ventile aus- und eingefahren oder Lampen ein- und ausgeschaltet werden.

M
Lampe leuchtet 24V Die Ausgnge der SPS steuern die Aktoren durch Schalten der Steuerspannung !

Ausgnge
0V SPS

Lampe leuchtet nicht

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 14 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.3

WOHER BEKOMMT DIE SPS INFORMATIONEN BER PROZESSZUSTNDE? Informationen ber den Prozess erhlt die SPS von den sogenannten Signalgebern, die auf die Eingnge der SPS verdrahtet sind. Diese Signalgeber knnen z.B. Sensoren sein, die erkennen ob ein Werkstck an einer bestimmten Position liegt oder auch einfache Schalter oder Taster, die offen oder geschlossen sein knnen. Dabei wird noch zwischen ffnern, die unbettigt geschlossen, und Schlieern, die unbettigt offen sind, unterschieden. 24V Schalter geschlossen 24V Die Eingnge der SPS erfassen die Informationen ber Zustnde im Prozess !

Eingnge
0V SPS 24V

Schalter offen

5.4

WO LIEGT DER UNTERSCHIED ZWISCHEN FFNERN UND SCHLIEERN? Bei den Signalgebern wird zwischen ffnern und Schlieern unterschieden. Der hier gezeigte Schalter ist ein Schlieer, d.h. er ist genau dann geschlossen wenn er bettigt wurde.

Schlieer unbettigt

Schlieer offen

Schlieer bettigt

Schlieer geschlossen

Der hier gezeigte Schalter ist ein ffner, d.h. er ist genau dann geschlossen wenn er nicht bettigt wurde.

ffner unbettigt

ffner geschlossen

ffner bettigt

ffner offen

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 15 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.5

WIE SPRICHT DIE SPS EINZELNE EIN-/AUSGANGSSIGNALE AN? Die Angabe eines bestimmten Ein- oder Ausgangs innerhalb des Programms bezeichnet man als
Adressierung.
Die Ein- und Ausgnge der SPSen sind zumeist in 8er-Gruppen auf Digitaleingabe- bzw.
Digitalausgabebaugruppen zusammengefasst. Diese 8er- Einheit bezeichnet man als Byte. Jede
solche Gruppe erhlt eine Nummer als sogenannte Byteadresse.
Um nun einen einzelnen Ein- oder Ausgang innerhalb eines Bytes anzusprechen wird jedes Byte in
acht einzelne Bits zerlegt. Diese werden von Bit 0 bis Bit 7 durchnummeriert. So erhlt man die
Bitadresse.
Die hier dargestellte SPS hat nun die Eingangsbytes 0 und 1 sowie die Ausgangsbytes 4 und 5.

Um nun den z.B. fnften Eingang von oben anzusprechen gibt man die folgende Adresse an:

0.4

E kennzeichnet hier den Adresstyp als Eingang, 0 die Byteadresse und 4 die Bitadresse.
Byteadresse und Bitadresse sind immer durch einen Punkt getrennt. Hinweis: Fr die Bitadresse steht hier beim fnften Eingang eine 4, weil bei 0 begonnen wird zu zhlen.

Um nun den z.B. untersten Ausgang anzusprechen gibt man die folgende Adresse an:

5.7

A kennzeichnet hier den Adresstyp als Ausgang, 5 die Byteadresse und 7 die Bitadresse.
Byteadresse und Bitadresse sind immer durch einen Punkt getrennt. Hinweis: Fr die Bitadresse steht hier beim untersten Ausgang eine 7, weil bei 0 begonnen wird zu zhlen.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 16 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.6

WIE WIRD IN DER SPS DAS PROGRAMM BEARBEITET? Die Programmbearbeitung in einer SPS geschieht zyklisch mit folgendem Ablauf: 1. Nachdem die SPS eingeschaltet wurde fragt der Prozessor, der praktisch das Gehirn der SPS darstellt, ab ob die einzelnen Eingnge Spannung fhren oder nicht. Dieser Status der Eingnge wird in dem Prozessabbild der Eingnge (PAE) gespeichert. Dabei wird fr die Spannung fhrenden Eingnge die Information 1 oder High, fr die keine Spannung fhrenden die Information 0 oder Low hinterlegt. 2. Dieser Prozessor arbeitet dann das im Programmspeicher hinterlegte Programm ab. Dies besteht aus einer Liste von logischen Verknpfungen und Anweisungen, die nacheinander abgearbeitet werden. Dabei wird fr die bentigte Eingangsinformation auf das bereits vorher eingelesene PAE zugegriffen wird und die Verknpfungsergebnisse in ein sogenanntes Prozessabbild der Ausgnge (PAA) geschrieben. Auch auf andere Speicherbereiche fr Zhler, Zeiten und Merker wird whrend der Programmbearbeitung gegebenenfalls vom Prozessor zugegriffen. 3. Im dritten Schritt wird nach Abarbeitung des Anwenderprogramms der Status aus dem PAA an die Ausgnge bertragen und diese ein- bzw. ausgeschaltet. Danach geht es weiter mit Punkt 1.. 1. Status der Eingnge im PAE speichern.

Programm der SPS im Programmspeicher 2. Abarbeiten des Programms Anweisung fr Anweisung mit Zugriff auf PAE und PAA, sowie Zeiten Zhler und Merker 1. Anweisung 2. Anweisung 3. Anweisung 4. Anweisung ...

PAE Zeiten Zhler Merker

letzte Anweisung

PAA

3. Status aus dem PAA an die Ausgnge bertragen.

Hinweis: Die Zeit die der Prozessor fr diesen Ablauf bentigt nennt man Zykluszeit. Diese ist wiederum abhngig von Anzahl und Art der Anweisungen.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 17 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.7

WIE SEHEN LOGISCHE VERKNPFUNGEN IM SPS- PROGRAMM AUS? Logische Verknpfungen werden dazu verwendet um Bedingungen fr das Schalten eines Ausgangs
festlegen zu knnen.
Im SPS- Programm knnen diese in den Programmiersprachen Kontaktplan (KOP), Funktionsplan
(FUP) oder Anweisungsliste (AWL) erstellt werden.
Der Anschaulichkeit halber wollen wir uns hier auf FUP beschrnken.
Es gibt eine Vielzahl verschiedener logischer Verknpfungen die in SPS- Programmen zur
Anwendung kommen knnen.
UND- sowie ODER- Verknpfung und die NEGATION eines Eingangs werden jedoch am hufigsten
verwendet und sollen deshalb hier kurz anhand von Beispielen erlutert werden.
Hinweis: Informationen zu weiteren logischen Verknpfungen knnen sehr schnell und bersichtlich
aus der Online- Hilfe bezogen werden.

5.7.1

UND- VERKNPFUNG Beispiel einer UND- Verknpfung: Eine Lampe soll leuchten, wenn gleichzeitig zwei Schalter als Schlieer bettigt sind. Schaltplan: 24V H1 S1 S2

M
Erluterung: Die Lampe leuchtet genau dann, wenn beide Schalter bettigt sind. Wenn also die Schalter S1 und S2 bettigt sind leuchtet die Lampe H1.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 18 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Beschaltung der SPS:


Um diese Logik in einem SPS- Programm umzusetzen, mssen natrlich beide Schalter an
Eingngen der SPS angeschlossen werden. Hier ist S1 an den Eingang E 0.0 und S2 an den
Eingang E 0.1 verdrahtet.
Auerdem muss die Lampe H1an einem Ausgang z.B. A 4.0 angeschlossen sein.

24V Schalter S1 E 0.0

Eingnge
E 0.1

24V

Schalter S2

M
SPS

Ausgnge
A 4.0

Lampe H1 soll leuchten, wenn die Schalter S1 und S2 bettigt sind.

UND- Verknpfung im FUP: Im Funktionsplan FUP wird die UND- Verknpfung durch bildliche Darstellung programmiert und sieht folgendermaen aus: Eingnge der UND-
Verknpfung.
Hier knnen auch mehr als 2 Eingnge stehen!

Ausgang, dem die


Zuweisung
zugeordnet wird!

E 0.0 E 0.1

&
Bildliche Darstellung der logischen UNDVerknpfung!

A 4.0

=
Zuweisung des Ergebnisses der logischen Verknpfung!

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 19 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.7.2

ODER- VERKNPFUNG Beispiel einer ODER- Verknpfung: Eine Lampe soll leuchten, wenn einer oder beide von zwei Schaltern als Schlieer bettigt sind. Schaltplan: 24V S2 24V

S1

H1

M
Erluterung: Die Lampe leuchtet genau dann, wenn einer oder beide Schalter bettigt sind.
Wenn also der Schalter S1 oder S2 bettigt wird leuchtet die Lampe H1.
Beschaltung der SPS:
Um diese Logik in einem SPS- Programm umzusetzen, mssen natrlich beide Schalter an
Eingngen der SPS angeschlossen werden. Hier ist S1 an den Eingang E 0.0 und S2 an den
Eingang E 0.1 verdrahtet.
Auerdem muss die Lampe H1an einem Ausgang z.B. A 4.0 angeschlossen sein.

24V
Schalter S1 E 0.0

Eingnge
E 0.1

24V

Schalter S2

M
SPS

Ausgnge
A 4.0

Lampe H1 soll leuchten, wenn Schalter S1 oder S2 bettigt sind.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 20 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

ODER- Verknpfung im FUP: Im Funktionsplan FUP wird die ODER- Verknpfung durch bildliche Darstellung programmiert und sieht folgendermaen aus: Eingnge der ODER-
Verknpfung.
Hier knnen auch mehr als 2 Eingnge stehen!

Ausgang, dem die


Zuweisung zugeordnet wird!

E 0.0 E 0.1

>
Bildliche Darstellung der logischen ODERVerknpfung!

A 4.0

=
Zuweisung des Ergebnisses der logischen Verknpfung!

5.7.3

NEGATION In logischen Verknpfungen wird es fters bentigt abzufragen ob ein Schlieer NICHT bettigt
oder ob ein ffner bettigt wurde und somit keine Spannung an dem entsprechenden Eingang
anliegt.
Dies geschieht durch Programmierung einer Negation am Eingang der UND- bzw. ODER-
Verknpfung.
Im Funktionsplan FUP wird die Negation eines Eingangs an einer UND- Verknpfung durch die
folgende bildliche Darstellung programmiert:
Eingang der UND-
Verknpfung, der
negiert werden soll! Bildliche Darstellung der Negation!

E 0.0 E 0.1

&

A 4.0

Der Ausgang A 4.0 hat hier also genau dann Spannung anliegen, wenn E 0.0 nicht beschaltet und E 0.1 beschaltet ist.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 21 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.8 SPS?

WIE WIRD DAS SPS- PROGRAMM ERSTELLT? WIE KOMMT ES IN DEN SPEICHER DER

Das SPS- Programm wird mit der Software STEP 7 auf einem PC erstellt und dort
zwischengespeichert.
Nachdem der PC mit der MPI- Schnittstelle der SPS verbunden wurde, kann das Programm mit
einer Lade- Funktion in den Speicher der SPS geladen werden.

1. SPSProgramm mit STEP 7 auf PC erstellen. PC mit STEP 7 2. PC mit MPISchnittstelle der SPS verbinden. 3. Programm von PC in Speicher der SPS laden. PC Adapter

SPS S7-300

Hinweis: Der genaue Ablauf wird Schritt fr Schritt in den Kapiteln 8 bis 10 beschrieben.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 22 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

6.

AUFBAU UND BEDIENUNG DER SIMATIC S7-300 Baugruppenspektrum: Die SIMATIC S7-300 ist ein modulares Automatisierungssystem und bietet das folgende Baugruppenspektrum: Zentralbaugruppen (CPUs) mit unterschiedlicher Leistung, teilweise mit integrierten Ein /Ausgngen (z.B. CPU312IFM/CPU314IFM) oder integrierter PROFIBUS- Schnittstelle (z.B. CPU315-2DP) Stromversorgungsbaugruppen PS mit 2A, 5A oder 10A Erweiterungsbaugruppen IM fr mehrzeiligen Aufbau der SIMATIC S7-300 Signalbaugruppen SM fr digitale und analoge Ein- und Ausgnge Funktionsbaugruppen FM fr spezielle Funktionen (z.B. Schrittmotoransteuerung) Kommunikationsprozessoren CP fr Netzanbindung

Hinweis: Fr dieses Modul werden lediglich eine Stromversorgungsbaugruppe, eine beliebige CPU sowie eine Digitalein- und eine Digitalausgabebaugruppe bentigt.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 23 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Wichtige Elemente der Spannungsversorgung und der CPU:

MPI- Schnittstelle: Jede CPU besitzt eine MPI- Schnittstelle zum Anschluss der Programmierleitung (z.B. PC-Adapter). Diese befindet sich hinter einer Klappe an der Vorderseite der CPU. Betriebsartenschalter: Jede CPU besitzt einen Schlsselschalter zur Umschaltung der Betriebsarten. Je nach Stellung des Schlsselschalters sind bestimmte Programmier(PG)- Funktionen erlaubt. Folgende Betriebsarten sind mglich:

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 24 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Urlschen: Urlschen lscht alle Anwenderdaten auf der CPU und sollte vor Beginn der Programmierung einmal durchgefhrt werden. Dies geschieht in den folgenden 3 Schritten:

Schritt

Ausfhrung
Drehen Sie den Schlssel in Stellung STOP. Drehen Sie den Schlssel in Stellung MRES und halten Sie ihn in dieser Stellung (ca. 3 Sekunden) bis die STOP- Anzeige wieder leuchtet Drehen Sie den Schlssel zurck in Stellung STOP und anschlieend innerhalb von 2 Sekunden erneut in Stellung MRES

Ergebnis
Anzeige STOP leuchtet

Die STOP-Anzeige erlischt und nach ca. 3 Sekunden leuchtet sie wieder Bei neunen CPUs warten bis die STOP-Anzeige zum zweitenmal aufleuchtet. Wichtig: Zwischen Schritt 2 und Schritt 3 drfen max. 3 Sekunden vergehen. Die STOP-Anzeige blinkt fr ca. 3 Sekunden und leuchtet danach wieder: alles o.k.; CPU ist urgelscht

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 25 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

7.

BEISPIELAUFGABE Fr unser erstes STEP 7- Programm soll eine einfache Aufgabe gelst werden. Eine Presse mit Schutzeinrichtung soll nur dann mit einem START- Taster S1 ausgelst werden,
wenn das Schutzgitter geschlossen ist. Dieser Zustand wird mit einem Sensor Schutzgitter BO
berwacht.
Ist dies der Fall wird ein 5/2 Wegeventil Y0 fr den Pressenzylinder genau 10 Sekunden
angesteuert damit eine Kunststoffform gepresst werden kann.
Aus Sicherheitsgrnden soll die Presse auch wieder hochfahren, wenn der Starttaster S1
losgelassen wird oder der Sensor Schutzgitter B0 nicht mehr anspricht.
Zuordnungsliste: Adresse E 0.0 E 0.1 A 4.0 Symbol B0 S1 Y0 Kommentar Sensor Schutzgitter Start- Taster 5/2 Wegeventil fr Pressenzylinder

Starttaster S1 zum Starten des Pressvorgangs.

5/2 Wegeventil steuert den Pressenzylinder. Der Zylinder ist genau so lange ausgefahren, wie der Ausgang Y0 angesteuert wird.

Sensor B0 erkennt ob das Schutzgitter unten ist.

Schutzgitter zum Schutz vor Verletzungen des Bedienungspersonals.

Presse zum Pressen von Kuststoffformteilen.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 26 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

8.

STEP 7- PROJEKT ANLEGEN Die Dateiverwaltung erfolgt in STEP 7 mit dem SIMATIC Manager. Hier knnen z.B.
Programmbausteine kopiert oder zur Weiterbearbeitung mit anderen Werkzeugen durch Anklicken
mit der Maus aufgerufen werden. Die Bedienung entspricht den in WINDOWS
95/98/2000/ME/NT4.0 blichen Standards. (So hat man z.B. die Mglichkeit mit einem Klick der
rechten Maustaste das Auswahlmen zu jeder Komponente zu erhalten.
In den Ordnern SIMATIC 300 Station und CPU wird der Hardwareaufbau der SPS abgebildet.
Demzufolge ist ein solches Projekt auch immer hardwarespezifisch zu sehen.
In STEP 7 wird jedes Projekt in einer fest vorgegebenen Struktur angelegt. Die Programme sind in
den folgenden Verzeichnissen abgespeichert:
SIMATIC 300 Stationen: Hier werden die entsprechenden Hardwarekonfigurations 1 (Hardware/SC* )und CPU Daten abgespeichert. Quellen/SO* : Hier werden Quellen (z.B. SCL- Quellen) abgelegt, die durch bersetzen in ablauffhige Programme umgewandelt werden knnen.
1

Projekt: Dieses Verzeichnis enthlt die Hardware (z.B. SIMATIC 300 Stationen) und die Subnetze (z.B. MPI und PROFIBUS).

Bausteine/AP-off*1:
Hier werden die
Programmbausteine ( OB,
FB, FC, SFB, SFC, DB
etc. ) abgespeichert.

CPU: Hier wird das S7Programm und die vernetzten Verbindungspartner 1 (Verbindungen/CO* ) eingetragen.

S7-Programm: Hier werden die Anwenderprogramme 1 (Bausteine/AP-off* ), Symboltabellen 1 (Symbole/SY* ) und Quellen 1 (Quellen/SO* ) verwaltet.

Symbole/SY* : Hier werden die Symbollisten zur Symbolischen Adressierung gespeichert.

*1 Bezeichnungen aus STEP 7 Version 2.x

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 27 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Um ein Projekt unabhngig von der Hardwarekonfiguration zu erstellen gibt es jedoch die Mglichkeit ein Projekt anzulegen, dass diese Ordner nicht beinhaltet. Es hat dann die folgende Struktur: Projekt: Dieses Verzeichnis enthlt die Hardware (z.B. SIMATIC 300 Stationen) und die Subnetze (z.B. MPI und PROFIBUS).

Quellen/SO*1: Hier werden Quellen (z.B. SCL- Quellen) abgelegt, die durch bersetzen in ablauffhige Programme umgewandelt werden knnen.

Bausteine/AP-off*1:
Hier werden die
Programmbausteine ( OB,
FB, FC, SFB, SFC, DB
etc. ) abgespeichert.

Symbole/SY* : Hier werden die Symbollisten zur Symbolischen Adressierung gespeichert. S7-Programm: Hier werden die Anwenderprogramme 1 (Bausteine/AP-off* ), Symboltabellen 1 (Symbole/SY* ) und Quellen 1 (Quellen/SO* ) verwaltet.

*1 Bezeichnungen aus STEP 7 Version 2.x

Hinweis: Dieses Beispiel hier wird ohne Konfiguration der Hardware erstellt und somit knnen die Programme auf beliebige Konfigurationen der SIMATIC S7-300, S7-400 oder WinAC geladen werden. Lediglich die Adressen der Ein- und Ausgnge mssen von Fall zu Fall angepasst werden.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 28 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

Folgende Schritte muss der Anwender ausfhren, um ein Projekt zu erstellen, in dem dann das Lsungsprogramm geschrieben werden kann. 1. Das zentrale Werkzeug in STEP 7 ist der SIMATIC Manager, der hier mit einem Doppelklick

aufgerufen wird. ( SIMATIC Manager)

2. STEP 7- Programme werden in Projekten verwaltet . Ein solches Projekt wird nun angelegt ( Datei Neu)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 29 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

3.

Dem Projekt wird nun der Name startup gegeben. ( startup OK)

4. In dem Projekt startup wird dann ein neues S7-Programm eingefgt. ( startup Einfgen Programm S7-Programm)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 30 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5. Der Programmablauf wird in STEP 7 in sogenannten Bausteine geschrieben. Standardmig ist bereits der Organisationsbaustein OB1 vorhanden. Dieser stellt die Schnittstelle zum Betriebssystem der CPU dar und wird automatisch von diesem aufgerufen und zyklisch bearbeitet. Von diesem Organisationsbaustein aus knnen wiederum zur strukturierten Programmierung weitere Bausteine wie z.B. die Funktion FC1 aufgerufen werden. Dies dient dazu um eine Gesamtaufgabe in Teilprobleme zu zerlegen. Diese sind dann einfacher zu lsen und in ihrer Funktionalitt zu testen.

Programmstruktur des Beispiels:

Organisationsbaustein OB1 Zyklisch vom Betriebssystem aufgerufener Baustein. Hier steht der Aufruf der Funktion FC1 CALL FC1 Funktion FC1 Beinhaltet in diesem Beispiel das eigentliche Programm fr die Pressen steuerung. Wird vom OB1 aufgerufen.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 31 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

6.

Um einen weiteren Baustein FC1 in das Projekt einzufgen muss der Ordner Bausteine markiert werden. ( Bausteine)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 32 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

7. Der S7- Baustein Funktion wird nun in den Ordner Bausteine eingefgt. ( Einfgen S7 Baustein Funktion)

8. Nun kann der Name der Funktion gewhlt und noch weitere Eintrge zur Bausteindokumentation vorgenommen werden. ( FC1 OK)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 33 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

9. Im SIMATIC Manager stehen nun die beiden Bausteine OB1 und FC1 zur weiteren Programmierung zur Verfgung.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 34 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Home
Automatisierungs und Antriebstechnik- SCE

9.

STEP 7- PROGRAMM SCHREIBEN IN FUNKTIONSPLAN FUP Eine der Mglichkeiten ein STEP 7 Programm zu erstellen ist der Funktionsplan FUP, eine bildliche Darstellung der Steuerungsaufgabe durch Symbole mit Funktionskennzeichen. Auf der linken Seite des Symbols werden die Eingnge, auf der rechten Seite die Ausgnge angeordnet. 1. Als erster Baustein soll hier die Funktion FC1 bearbeitet werden. Dazu wird diese im SIMATIC Manager durch Doppelklick geffnet ( FC1)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 35 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

2. In dem nun geffneten Editor KOP/FUP/AWL wird dann auf die Ansicht fr die Programmiersprache Funktionsplan FUP umgestellt.( Ansicht FUP)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 36 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

3. Die Programmieroberflche fr die Programmierung im Funktionsplan (FUP) sieht dann folgendermaen aus: Hufig verwendete Befehle wie UND- Box, ODER- Box, Zuweisung, Binrer Eingang, Binren Eingang negieren, T-Abzweig, Verbindung ! Neues Netzwerk Baustein in einfgen ! CPU laden ! Katalog smtlicher Programmelemente

Baustein speichern !

Variablendeklarationstabelle (wird in diesem Beispiel nicht gebraucht) !

Kommentarfelder und Netzwerk bzw. Bausteintitel !

Hier kann die Steuerungsaufgabe durch Symbole mit


Funktionskennzeichen erstellt werden!

Programmelemente knnen per DRAG and DROP mit der Maus in das Netzwerk geschoben werden.
Sie mssen dann nur noch mit den
richtigen Operanden versorgt werden !

Hinweis: Die Programme in den STEP 7- Bausteinen werden in einzelnen Netzwerken programmiert. Dadurch ergibt sich die Mglichkeit einer weiteren Strukturierung und der verbesserten Dokumentation in den Netzwerkberschriften.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 37 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

4. Fr unser Beispiel bentigen wir einen Timer als Impuls. Dieser heit in STEP 7 S_IMPULS und kann in dem Katalog unter dem Punkt Zeiten.( Zeiten S_IMPULS)

Hinweis: Wenn eine Operation angewhlt wurde ist in der Fuzeile des Katalogs eine Kurzinformation zu dieser Operation angegeben.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 38 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

5.

Fr eine genaue Beschreibung jeder Operation steht unter dem Symbol ? die Online-Hilfe zur Verfgung. Diese ist umfassend und erklrt jeden Befehl mit einem ausfhrlichen Beispiel. ( ?)

Hinweis: Die Zeit als Impuls S_IMPULS, die hier eingesetzt wird, gibt genau so lange wie die Zeitvorgabe ist und am Setzeingang S eine 1 ansteht, am Ausgang Q eine 1 aus. Ist die bei TW vorgegebene Zeit abgelaufen oder der Signalpegel am Setzeingang S wieder 0, so steht am Ausgang Q wieder eine0 an.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 39 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

6. Die Operation S_IMPULS wird nun in das erste Netzwerk eingefgt, indem diese im Katalog angeklickt, die Maustaste festgehalten und dann im Netzwerk wieder losgelassen wird.( S_IMPULS)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 40 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

7. Hufig bentigte Operationen wie z.B. die UND- Verknpfung findet man in der Menleiste. Diese wird eingefgt, indem zuerst auf den Eingang S am Timer und dann auf das Symbol geklickt wird ( S )

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 41 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

8. Nun muss der Timer noch mit T1 benannt werden und der Zeitwert von 10 Sekunden in dem S5Time- Format S5t#10s eingetragen werden. Auerdem werden die Eingnge E 0.0 und E 0.1 an der UND- Verknpfung eingetragen sowie das Netzwerk und der Baustein Kommentiert. ( T1 S5T#10s E0.0 E0.1 Kommentare)

Hinweis: Um einem Timer eine Zeit vorzugeben muss die folgende Syntax eingehalten werden:

S5T# 10s
Dabei gibt S5T# einfach das Format vor und dahinter kann direkt die Zeit (hier 10 Sekunden) eingegeben werden. Es knnen auch Millisekunden (MS), Minuten (M) und Stunden (H) vorgegeben werden. Diese Einheiten knnen auch gemeinsam (z.B. S5T#3M_3S) angegeben werden.

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 42 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

9. Als nchstes wird ein weiteres Netzwerk eingetragen, indem im Men auf das Symbol geklickt wird. ( )

10. Dann wird durch einen Mausklick auf das Symbol

eine Zuweisung eingefgt (

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 43 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

11. Die Zuweisung soll hier fr den Ausgang A4.0 gelten und erfolgen solange der Timer T1 High- Signal hat. Diese beiden Operanden mssen jetzt noch eingefgt werden, bevor der FC1 gespeichert ) und in die SPS geladen werden kann. ( A4.0 T1

Hinweis:

Das Editor-Programm KOP/AWL/FUP nicht schliessen. Entweder in der Fuzeile auf den SIMATIC Manager umschalten ( Punkt 12 ) oder ber die Funktion FFNEN den OB1 aufrufen.

12. Zum Programmieren des FC- Aufrufs wird der OB1 im SIMATIC Manager mit Doppelklick geffnet ( SIMATIC Manager OB1)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7 300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 44 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

13. Die Eigenschaften des OB1 werden beibehalten und mit OK bernommen ( OK)

14. Im Editor KOP/FUP/AWL wird dann auf die Ansicht fr die Programmiersprache Funktionsplan FUP umgestellt.( Ansicht FUP)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 45 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

15. Aus dem Katalog kann hier unter dem Punkt FC Bausteine der FC1 per Doppelklick mit der Maus in Netzwerk1 vom OB1 eingetragen werden. Dann wird der OB1 gespeichert die SPS geladen . ( FC Bausteine FC1 ) und in

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 46 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

10.

STEP 7- PROGRAMM IN DER CPU TESTEN 1. Um das Programm im FC1 beobachten zu knnen muss in dem Editor KOP/FUP/AWL auf das Fenster vom FC1 umgeschaltet werden. ( Fenster FC1)

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 47 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungs und Antriebstechnik- SCE

2. Durch einen Mausklick auf das Brillensymbol kann das Programm im FC1 nun beobachtet werden. Der Ablauf des Timers wird dann ebenso dargestellt wie der Signalzustand der Ein- und Ausgnge. ( )

Vorwort Hinweise Installation Schnittstelle Was ist eine SPS? Aufbau S7-300 Beispielaufgabe Projekt Programm Testen

T I A Ausbildungsunterlage Ausgabestand: 02/2002

Seite 48 von 48

Modul A3 Startup SPS- Programmierung mit STEP 7

Automatisierungssysteme Kapitel 3: SPS Seite: 1 ______________________________________________________________________________

SPS- Speicherprogrammierbare Steuerung S5/ S7/ IEC 1131

Aufbau
Netz teil CPU Baugruppe Ausgabe Feldbus Eingabe Baugruppe Baugruoppe Baugruppe

Baugruppentrger

Programmierschnittstelle

Feldbusanschluss Profibus DP

CPU Baugruppe Programmspeicher: Steuerwerk Merker Variable Prozessabbild E/A Akku Zeitglieder/Zhler Bussystem Feldbussystem RAM batteriegepuffert oder PROM/ EPROM/ EEPROM/ FLASH
verschieden leistungsfhige Prozessoren,ASICs,Mikrocontroller
Speicher, in denen Signalzustnde zwischengespeichert werden
Speicher, in denen Signalzustnde zwischengespeichert werden
Speicherbereich zum Zwischenspeichern aller binren Ein, Ausgnge
Register zur Durchfhrung arithmetische und logischer Operationen
Speicher, in denen Zhlerzustnde und Zeitzustnde zwischengespeichert werden
Sammelleitungen zum Datenaustausch zwischen den einzelnen Einheiten
Zweidrahtanschluss fr externe Komponenten

Baugruppen
Digitale Eingnge 5/12/24 V DC, 100/220/240 V AC, 50/60 Hz, galvanisch entkoppelt
-Digitale Ausgnge 5/12/24 V DC, 100/220/240 V AC, 50/60 Hz, Transistor, Triac, Relais, galvanisch
entkoppelt Analoge Eingnge -10/+10V, -20/+20 mA, 4..20 mA, 0..20 mA, 12 Bit Analoge Ausgnge -10/+10V, -20/+20 mA, 4..20 mA, 0..20 mA, 12 Bit Regler Modems Serielle Schnittstellen Sprachausgabe Interrupteingnge Drucker-Interface Kommunikation CAN Positioniereinrichtung Zhler Zeitgeber

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 2 ______________________________________________________________________________

Die Norm IEC 1131


Teil 1: Allgemeine Informationen
Begriffsbestimmungen
Funktionsmerkmale einer SPS (z.B. zyklische Bearbeitung)
Teil 2: Betriebsmittelanforderungen und Prfungen
el. und mech. Anforderungen, Umgebungsbedingungen, Beanspruchungsklassen u.s.w. Teil 3: Programmiersprachen (deutsche Norm DIN EN 61131-3)
Richtlinie zur SPS-Programmierung (keine Vorschrift)
Die groe Menge von Festlegungen lt erwarten, da nur ein Teil realisiert wird.
Es ist zu dokumentieren, welche Teile der Norm erfllt sind und welche nicht.
In Tabellen ist vom Hersteller zu vermerken erfllt bzw. nicht erfllt.
Teil 4: Anwenderrichtlinien (User Guidelines)
Leitfaden fr den Anwender in allen Projektphasen der Automatisierung
Teil 5: Kommunikation (Messaging Services)
Kommunikation verschiedener SPSen unterschiedlicher Hersteller und mit anderen Gerten
(in Zusammenarbeit mit ISO 9506 MMS)
PLCopen Internationale Vereinigung die 1992 gegrndet wurde. Ihr gehren viele SPS-Hersteller,
Softwarehuser und unabhngige Institute an. http://www.PLCopen.org

Step 7 (Siemens) wird als ein an die IEC 1131 angelehntes Programmiersystem klassifiziert.
Matsushita FPWIN Pro ist zertifiziert

Programmiersprachen unter IEC 1131-3


- AWL - FBS - KOP - ST - AS AWL Anweisungsliste Funktionsbausteinsprache (frher: FUP Kontaktplan strukturierter Text Ablaufsprache FBS KOP ( ) Funktionsplan)

ST

U E 32.0 U E 32.1
= A 32.0

&

A:=E32.0 and E32.1

AWL = Operation und Operand


Operanden
E A PE PA M L D T Z XB,XF Eingnge
Ausgnge
Peripherie Eingnge
Peripherie Ausgnge
Merker
Lokaldaten
Daten
Timer
Zhler
Bausteine

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 3 ______________________________________________________________________________ remanent und nicht remanent!

Adressierung
BIT
BYTE
WORT
DOPPELWORT
Am Beispiel Eingang
E EB EW ED Adresse Bit 31 76543210 32.0 32 32 32 32 76543210 76543210 E 32.0 EB 32 MSB EW32 High Byte ED 32 Adressen bei der S7 33 76543210 34 76543210 35 76543210 36 76543210

LSB EW32 ED32 ED32 Low Byte ED32

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 4 ______________________________________________________________________________

PS CPU IM Ein-/ Ausgnge knnen mit dem Schlsselwort AT als Variable deklariert werden, z.B. VAR
Taster END_TYPE
Zeichen % I Q M Kein X B W D L .x Bedeutung
einleitendes Zeichen
Eingang
Ausgang
Merker
Bit
Bit (optional)
Byte
Wort
Doppelwort
Langwort
hierarchische Adresse
: BOOL AT %IX32.3
(*Symbolische Variable*)

Bei Step7 ber Symbolikdate:

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 5 ______________________________________________________________________________

Verknpfungsoperationen VKE etc


Binre Verknpfungen S7/S5 Operation U O X UN ON XN O U( O( X( UN( ON( XN( ) = S R Operand X X X X X X S5 X X X X X X X S7 X X X X X X X X X X X X X X X X X abhngig beeinflussend X X X X X X X X X X X X X X begrenzend

X X X

X X X X

X X

X X X X X X X X X X X

VKE: Verknpfungsergebnis Erstabfrage Logische Operatoren IEC 1131 AND AND( ANDN ANDN( OR OR( ORN ORN( XOR XOR( XORN XORN( LD LDN ST STN UND-Verknpfung
UND-Verknpfung
UND-NICHT-Verknpfung (AND NOT)
UND-NICHT-Verknpfung (AND NOT)
ODER-Verknpfung
ODER-Verknpfung
UND-NICHT-Verknpfung (OR NOT)
UND-NICHT-Verknpfung (OR NOT)
EXCLUSIV-ODER-Verknpfung (EXCLUSIVE OR)
EXCLUSIV-ODER-Verknpfung (EXCLUSIVE OR)
EXCLUSIV-ODER-NICHT-Verknpfung (EXCLUSIVE OR NOT)
EXCLUSIV-ODER-NICHT-Verknpfung (EXCLUSIVE OR NOT)
Lade Akkumulator
Lade Akkumulator invertiert
Speichere Akkumulator (Store)
Speichere negiert (Store NOT)

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 6 ______________________________________________________________________________

Software S7
overflow

prinzipieller Ablauf im OB1

Timer starten (Zykluszeit)

Reaktion

PAA an Ausgnge

Prozeabbild
einmalige Aktualisierung bei jedem Zyklus keine nderung whrend des Zyklus dadurch hohe Sicherheit synchrone Programmierung mit konstanter Zykluszeit Eingnge an PAE

Steuerungsprogramm Anweisung 1 Anweisung 2 .....

Steuerungsprogramm abarbeiten alle Zugriffe auf Ein- und Ausgnge geschehen im Prozeabbild

Betriebssystem

Bausteine senden empfangen Globaldaten senden empfangen

Beispiele:

Flankenauswertung Toggle FF RS Speicher

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 7 ______________________________________________________________________________ Beispiel: UND zwischen ODER E 32.0 E 32.2 A 32.0
+---] [---+---] [---+---------+---------+---------+---------+---------+--( )-

E 32.1 E 32.3
+---] [---+---] [---+

:U(
:O :O :) :U(
:O :O :) := :BE
E 32.0 E 32.1 E 32.2 E 32.3 A 32.0
01
01
01
01
01
01

Beispiel: ODER zwischen UND E 32.0 E 32.1 A 32.0


+---]/[---+---] [---+---------+---------+---------+---------+---------+--( )-

E 32.2 E 32.3
+---] [---+---]/[---+

:UN :U :O
:U :UN := :BE
E 32.0
E 32.1
E 32.2
E 32.3
A 32.0

Flankenbefehle S7
FP FN Achtung: Bit Bit Bit wird intern bentigt Bit darf nirgends sonst verwendet werden

Flankenbefehle IEC 1131


R_TRIG E_R_TRIG F_TRIG E_F_TRIG Erkennen einer steigenden Flanke
Erkennen einer steigenden Flanke mit Enable
Erkennen einer fallenden Flanke
Erkennen einer fallenden Flanke mit Enable

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 8 ______________________________________________________________________________

S7 Befehle die das VKE direkt beeinflussen


CLR SET NOT SAVE

Bistabile Elemente (RS FF) S7


S7 siehe Verknpfungsoperationen
Bistabile Funktionsbausteine IEC 1131
SR E_SR RS E_RS Bistabiler FB - vorrangig Setzen
Bistabiler FB mit Enable - vorrangig Setzen
Bistabiler FB - vorrangig Zurcksetzen
Bistabiler FB mit Enable - vorrangig Zurcksetzen

S hat Vorrang bei SR


R hat Vorrang bei RS

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 9 ______________________________________________________________________________

Zustandsmaschinen mit RS FF
Zustandsgraf Start

Schrittsymbol M(n-1) Weiterschaltbedingung

Ein (Flanke) Handbetrieb Automatikbetrieb Reset M(n)

Reaktion

Mit RS FF Reset
M(n+1) Ein (Flanke) M(n-1) Automatikbetrieb Weiterschaltbedingung Handbetrieb & >1 &

>1

M(n)

>1 S

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 10 ______________________________________________________________________________ Beispiel: Ampel einfach

M(n-1) weiter Ein (Flanke)

rot

T0

Reset

M(0)

gelb

T1

Reset

M(1)

grn Reset M(2)

T2

weiter

rot

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 11 ______________________________________________________________________________

Lade und Transferbefahle


S7 IEC 1131 LD LDN ST STN Lade Akkumulator Lade Akkumulator invertiert Speichere Akkumulator (Store) Speichere negiert (Store NOT) High Low EW0 L EW0 T AW0

L EW0 alt alt alt High Akku2 Low Akku1

alt

T AW2

High

Low

AW0

Beispiel: Zeitwert

S5
L KT 686.2
L KF
L KM
L EW
L AW
L MW

S7
L S5T#1H54M20S0MS
L EW
L AW
L DBW
L MW
L LW

Darstellung:
Akku1
31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X X X X X X X X X X X X X X b b h h h h z z z z e e e e Einer: Zehner: Hunderter: Basis: eeee zzzz hhhh bb 00 0,01 01 0,1 10 11 1 10

Basis Multiplikator Sekunden

__________________________________________________________________________________ F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 12 ______________________________________________________________________________

Timer S7
Abfrage Timer
U/UN O/ON X/XN Tn Tn Tn

Abfrage der aktuellen Zeit:


LC L Tn Tn Lade Codiert BCD Lade binr

Zeitoperationen
sechs Zeitoperationen: Sl Impuls, SV Verlngerter Impuls, SE Einschaltverzgerung, SS Speichernde Einschaltverzgerung, SA Ausschaltverzgerung und R Rcksetzen einer Zeit Operation SI Operand VKE ab. T J VKE be. N VKE bg. J Beschreibung Eine Zeit (im AKKU 1 hinterlegt) als Impuls starten (Signalbegrenzung und verlngerung) SV T J N J Eine Zeit (im AKKU 1 hinterlegt) als verlngerten Impuls starten (Signalbegrenzung und -verlngerung) SE SS SA R T T T T J J J J N N N N J J J J Eine Zeit (im AKKU 1 hinterlegt) als einschaltverzogert starten Eine Zeit (im AKKU 1 hinterlegt) speichernd einschaltverzgernd starten Eine Zeit (im AKKU 1 hinterlegt) ausschaltverzgernd starten Eine Zeit rcksetzen

__________________________________________________________________________________ F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 13 ______________________________________________________________________________

Zeitoperationen

t __________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 14 ______________________________________________________________________________

Zeitoperationen IEC 1131


TP E_TP TON E_TON TOF E_TOF Impuls-Zeitgeber
Impuls-Zeitgeber mit Enable
Einschaltverzgerung
Einschaltverzgerung mit Enable
Ausschaltverzgerung
Ausschaltverzgerung mit Enable

Beispiele:

Ein und Ausschaltverzgerung kombiniert Taktgenerator mit zwei Timern Taktgenerator mit einem Timer

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 15 ______________________________________________________________________________

Zhler S7
Abfrage Zhler
U/UN O/ON X/XN Zn Zn Zn

Abfrage des aktuellen Zhlerstandes


LC L Zn Zn Lade Codiert BCD Lade binr

Zhleroperationen
vier Zhloperationen: ZV ZR S R Vorwrtszhlen eines Zhlers
Rckwrtszhlen
Setzen eines Zhlers
Rcksetzen eines Zhlers
Operand Z Z Z Z VKE ab. J J J J VKE be. N N N N VKE bg. Beschreibung J J J J Zhler zhlt um 1 vorwrts Zhler zhlt um 1 rckwrts Zhler auf Wert von Akku1 setzen Zhler rcksetzen

Operation ZV ZR S R

Zhlerwert laden

S5
L KZ 888
L KF
L KM
L EW
L AW
L MW

S7
L C#888
L EW
L AW
L DBW
L MW
L LW

Darstellung:
Akku1
31 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 X X X X X X X X X X X X X X X X X X X X h h h h z z z z e e e e Einer: Zehner: Hunderter: eeee zzzz hhhh

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 16 ______________________________________________________________________________

Zhler IEC 1131


CTU E_CTU CTD E_CTD CTUD E_CTUD Aufwrtszhler
Aufwrtszhler mit Enable
Abwrtszhler
Abwrtszhler mit Enable
Auf-/Abwrtszhler
Auf-/Abwrtszhler mit Enable

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 17 ______________________________________________________________________________

Arithmetische Operationen S5
Operation +F Operand VKE ab. N VKE be. N VKE bg. Beschreibung N Addieren Der Inhalt von Akku 1 und der Inhalt von Akku 2 werden addiert, das Ergebnis steht in Akku1 (Akku1=Akku2+Akku1) N Subtrahieren Der Inhalt von Akku 1 wird vom Inhalt von Akku 2 werden subtrahiert, das Ergebnis steht in Akku 1(Akku1=Akku2-Akku1)

-F

S7
Seite 104 117 in Handbuch Operationsliste
Trigonometrische Funktionen
Logarithmus
Addition mit Konstanten

Vergleichsoperationen S5
Operation !=F ><F >F >=F <F <=F Operand VKE ab. N N N N N N VKE be. J J J J J J VKE bg. Beschreibung N Vergleich auf gleich VKE=1 falls Akku2=Akku1 N Vergleich auf ungleich VKE=1 falls Akku2Akku1 N Vergleich auf grer VKE=1 falls Akku2>Akku1 N Vergleich auf grer gleich VKE=1 falls Akku2Akku1 N Vergleich auf kleiner VKE=1 falls Akku2<Akku1 N Vergleich auf kleiner gleich VKE=1 falls Akku2Akku1

S7
Seite 118 123 in Handbuch Operationsliste Beispiele: Zhler Komparator Zustandsmaschinen mit Zhlern (einfache Ampel)

Variable und Konstante


Elementare Typen S7:
BOOL BYTE FALSE
B#16#AF KH
2#10101010 KM __________________________________________________________________________________
F. Graf 11.05.02 1 8

Automatisierungssysteme Kapitel 3: SPS Seite: 18 ______________________________________________________________________________ CHAR 8 A


KY WORD 16 W#16#AFBF
KM 2#10101010_10101010
KY B#(255,255)
KZ C#999
KT S5T#5S
INT 16 HF -32768
S5TIME 16 KT S5T#1h
DATE 16 D#2000-06-13
DH DWORT 32 DW#16#AFBF_CFDF
2#1
B#(255,255,255,255)
DINT 32 -60000
L#-60000
REAL 32 -0.144/ -1.44e-1
TIME 32 T#1d2h15ms
TOD 32 TOD#12:30:15:222

Zusammengesetzte Datentypen S7
DT STRING ARRAY STRUCT 64 2032 max DT#00-06-13-12:55:13.333
Strings sind Text
wie in C
wie in C
Date and Time maximal 254 Zeichen maximal 6 Dimensionen unterschiedliche Typen

IEC 1131-3 Datentypen


BOOL INT DINT REAL WORD DWORD TIME STRING ARRAY Boolescher Datentyp (1 Bit)
Ganze Zahl (16 Bit)
Doppelwort fr ganze Zahlen (32 Bit)
Reelle Zahl (32 Bit)
Wort (16 Bit)
Doppelwort (32 Bit)
Dauer (16 oder 32 Bit)
Zeichenkette variabler Lnge
Anzahl gleicher Datenelemente

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 19 ______________________________________________________________________________

Betriebssystem der S7:


Baustein OB1 OB10 - 17 OB20 - 23 OB30 - 38 OB40 - 47 OB50 - 51 OB60 OB80 - 87 OB100 - 101 OB121 - 122 Baustein OB FC FB DB SFC SFB SDB Zyklische Bearbeitung Uhrzeitalarme, lange Zeiten (z.B. alle Stunde) Verzgerungsalarme Weckalarme, kurze Zeiten (z.B. alle 1000 ms) Prozessalarme Kommunikationsalarme Mehrprozessoralarme Asynchrone Fehler Anlauf Synchronfehler anwendererstellbar X X X X

Organisationsbaustein Funktion Funktionsbaustein Datenbaustein Systemfunktion Systemfunktionsbaustein Systemdatenbaustein

Sprungbefehle
__________________________________________________________________________________ F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 20 ______________________________________________________________________________ S7


S5 SPA
SPB SPBB SPBN SPBNB SPBI SPBIN LOOP SPL SPM SPMZ SPN SPO SPP SPPZ SPS SPU SPZ SPA SPB

VKE=1
VKE=1, VKE->BIE
VKE=0
VKE=0, VKE->BIE
BIE=1
BIE=0
do while (--Akku1) {}
Sprungverteiler
Springe < 0
Springe <= 0
Sprine <> 0
Springe Overflow
Springe > 0
Springe >= 0
Springe OS=1
Springe Ungltig
Springe = 0

Achtung: Marken drfen bei S7maximal 4 Zeichen haben!

Beispiel:
U SPB mark ende :NOP E mark
1
32.0

L W#16#FFFF
:T AW 0
LOOP ende

Bausteinbefehle
S7 CALL FC/FB
CC nur ohne Parameter
UC nur ohne Parameter
AUF DBx
IEC Funktionsbausteine
Bistabile Funktionsbausteine
SR
E_SR
RS
E_RS
Flankenerkennung
R_TRIG
E_R_TRIG
F_TRIG
E_F_TRIG
Zhler
CTU
E_CTU
S5

SPB FB/SB/PB
SPA
A DBx

Bistabiler FB - vorrangig Setzen


Bistabiler FB mit Enable - vorrangig Setzen
Bistabiler FB - vorrangig Zurcksetzen
Bistabiler FB mit Enable - vorrangig Zurcksetzen
Erkennen einer steigenden Flanke
Erkennen einer steigenden Flanke mit Enable
Erkennen einer fallenden Flanke
Erkennen einer fallenden Flanke mit Enable
Aufwrtszhler
Aufwrtszhler mit Enable

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 21 ______________________________________________________________________________ CTD Abwrtszhler


E_CTD Abwrtszhler mit Enable
CTUD Auf-/Abwrtszhler
E_CTUD Auf-/Abwrtszhler mit Enable
Zeitgeber Impuls-Zeitgeber
TP Impuls-Zeitgeber mit Enable
E_TP Einschaltverzgerung
TON Einschaltverzgerung mit Enable
E_TON Ausschaltverzgerung
TOF Ausschaltverzgerung mit Enable
E_TOF

Beispiel: bedingter Addierer:


ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm"
AUTHOR: MHJTW
FAMILY: nb
NAME: nb
VERSION: 1.0
VAR_TEMP
OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME END_VAR
BEGIN
NETWORK //Nr.:1
TITLE =
U E 32.0
SPB mark
CALL FC Sum1:=EW0
Sum2:=EW2
Summe:=AW0
mark :NOP 1
1
//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
//1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
//1 (Priority of 1 is lowest)
//1 (Organization block 1, OB1)
//Reserved for system
//Reserved for system
//Cycle time of previous OB1 scan (milliseconds)
//Minimum cycle time of OB1 (milliseconds)
//Maximum cycle time of OB1 (milliseconds)
//Date and time OB1 started

END_ORGANIZATION_BLOCK
FUNCTION FC1
TITLE = <Beschreibung der FC>
AUTHOR: Graf
FAMILY: Vorlesun
NAME: Beispiel
VERSION: 1.0
VAR_INPUT
Sum1:INT
Sum2:INT
END_VAR
VAR_OUTPUT
Summe:INT
END_VAR
VAR_IN_OUT
END_VAR
VAR_TEMP
END_VAR
BEGIN
NETWORK //Nr.:1
TITLE = <berschrift von Netzwerk>
L #Sum1
L #Sum2

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 22 ______________________________________________________________________________


+I
T #Summe
END_FUNCTION

Akkubefehle und indirekte Adressierung


TAK PUSH POP BTI BTD DTR ITD ITB DTB RND + Konstante Tausche Akku
1 -> 2
2 -> 1
Akku1 von BCD nach Integer
Akku1 von BCD nach Double
Akku1 von Double nach Real
Akku1 von Integer nach Double
Akku1 von Integer nach BCD
Akku1 von Double nach BCD
Akku1 von BCD nach Double
Addition einer Konstanten

Es existieren 2 Adressregister AR1, AR2 LAR1 TAR1 Akku1 -> AR1 AR1 -> Akku1

31 Akku 1 Akku 2

31 AR 1 AR 2

Klammerstack BIE OR VKE FK 0

7 DB 1 (DB) DB 2 (DI) KLSP Klammerstackpointer

15

BIE A1 A0 OV OS OR STA VKE /ER


/ER VKE STA OR OS OV A1, A0 BIE 0= Erstverknpfung
Verknpfungsergebnis
Zustand letzter Bitoperand
Zwischenergebnis OR
Overflow speichernd
Overflow
Ergebnisbits (Vergleich, hinausgeschobene Bit etc.)
Binrergebnis (VKE zwischenspeichern, SFC, SFB Aufruf erfolgreich)

Genaueres siehe Seite 124 139 in Handbuch Operationsliste


__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 23 ______________________________________________________________________________ Indirekte Adressierung: Beispiel Datenbaustein DATA_BLOCK DB1
TITLE = <Beschreibung des DBs>
AUTHOR: MHJTW
FAMILY: nb
NAME: nb
VERSION: 1.0
STRUCT
Teile:ARRAY [0..9] of STRUCT
Nummer:INT
Laenge:REAL
end_struct
END_STRUCT
BEGIN
Teile[0].Nummer:=1
Teile[0].Laenge:=1.210000e+01
Teile[1].Nummer:=2
Teile[1].Laenge:=1.210000e+01
Teile[2].Nummer:=3
Teile[2].Laenge:=1.210000e+01
Teile[3].Nummer:=4
Teile[3].Laenge:=1.210000e+01
Teile[4].Nummer:=5
Teile[4].Laenge:=1.210000e+01
Teile[5].Nummer:=6
Teile[5].Laenge:=1.210000e+01
Teile[6].Nummer:=7
Teile[6].Laenge:=1.210000e+01
Teile[7].Nummer:=8
Teile[7].Laenge:=1.210000e+01
Teile[8].Nummer:=9
Teile[8].Laenge:=1.210000e+01
Teile[9].Nummer:=10
Teile[9].Laenge:=1.210000e+01
END_DATA_BLOCK
L DBB [AR1,P#0.0] Lade Byte aus Datenbaustein mit Adresse AR1+P

Beispiel: Alle Minute soll ein Vorgang (Abschneiden, Stanzen) ausgelst werden. Es sollen 10 verschiedene Wekstcke gefertigt werden. Die Zuordnung soll ber einen Datenbaustein mit Nummer und Lnge erfolgen.

Analoge Ein- Ausgabe


Einlesen durch Befehl: L PEWxy

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 24 ______________________________________________________________________________

Darstellung bei alten Modulen oder im Modus S5 anders!

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 25 ______________________________________________________________________________ PID Regler

Fhrungs- RegelRegelgre Stellgre gre differenz Regler Strecke w e y x

Sollwert
y(t) = KPR ( e(t) + KPR:

Istwert
1 de(t) e(t) dt + TV ) TN dt

Proportionalbeiwert

1 Ki = TN KPR KD TV = KPR

mit TN Nachstellzeit, Ti Integrierbeiwert mit TV Vorhaltezeit, KD Differenzierbeiwert

KPR e t TN
Reglerbausteine:
FB41 FB42 FB43
kontinuierlicher Regler
Schrittregler

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 26 ______________________________________________________________________________ Einbinden des PID Regler unter Simatic Manager

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungssysteme Kapitel 3: SPS Seite: 27 ______________________________________________________________________________ Aufruf durch call fb41, db41 (fb41 und db41 drfen nicht existieren)

CALL "CONT_C" , DB41 COM_RST := MAN_ON :=FALSE PVPER_ON:=TRUE P_SEL :=TRUE I_SEL :=TRUE INT_HOLD:= I_ITL_ON:= D_SEL :=TRUE CYCLE :=T#100MS SP_INT :=MD60 PV_IN := PV_PER :=PEW128 MAN := GAIN :=1.000000e+000 TI :=T#500MS TD :=T#200MS TM_LAG :=T#50MS DEADB_W := LMN_HLM :=5.923000e+001 LMN_LLM :=0.000000e+000 PV_FAC := PV_OFF := LMN_FAC :=1.000000e+000 LMN_OFF := I_ITLVAL:= DISV := LMN :=MD28 LMN_PER :=PAW256 QLMN_HLM:= QLMN_LLM:= LMN_P :=MD8 LMN_I :=MD12 LMN_D :=MD16 PV :=MD20 ER :=

//Sollwert Temperatur //Istwert Temperatur

//Verhltnis S5/S7 auf 100%

//Stellwert Temperatur

__________________________________________________________________________________
F. Graf 11.05.02

Automatisierungs und Antriebstechnik- FEA

Ausbildungsunterlage fr die durchgngige Automatisierungslsung Totally Integrated Automation (T I A) ANHANG C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

T I A Ausbildungsunterlage Ausgabestand: 08/2001

Seite 1 von 32

Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

Diese Unterlage wurde von Siemens A&D FEA (Automatisierungs und Antriebstechnik Forschungs, Entwicklungs und Ausbildungssttten) zu Ausbildungszwecken erstellt. Siemens bernimmt bezglich des Inhalts keine Gewhr. Weitergabe sowie Vervielfltigung dieser Unterlage, Verwertung und Mitteilung ihres Inhalts ist innerhalb ffentlicher Aus- und Weiterbildungssttten gestattet. Ausnahmen bedrfen der schriftlichen Genehmigung durch Siemens A&D FEA ( Hr. Knust: E-Mail: michael.knust@hvr.siemens.de). Zuwiderhandlungen verpflichten zu Schadensersatz. Alle Rechte auch der bersetzung sind vorbehalten, insbesondere fr den Fall der Patentierung oder GM-Eintragung. Wir danken der Fa. Michael Dziallas Engineering und den Lehrkrften von beruflichen Schulen sowie weiteren Personen fr die Untersttzung bei der Erstellung der Unterlage.

T I A Ausbildungsunterlage Ausgabestand: 08/2001

Seite 2 von 32

Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

SEITE: 1. 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.9.1 2.9.2 2.10 2.10.1 2.10.2 2.11 2.11.1 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.11.10 2.11.11 2.12 Vorwort ................................................................................................................. Grundlegende Programmierbefehle .................................................................. Zuweisung.............................................................................................................. UND - Verknpfung ............................................................................................... ODER - Verknpfung............................................................................................. UND - vor ODER - Verknpfung............................................................................ ODER - vor UND - Verknpfung............................................................................ Abfrage auf Signalzustand 0.................................................................................. Exklusiv - ODER - Verknpfung ............................................................................ Abfrage von Ausgngen ........................................................................................ R- S - Speicherfunktionen...................................................................................... Vorrangiges Zurcksetzen..................................................................................... Vorrangiges Setzen ............................................................................................... Flankenoperationen............................................................................................. Steigende Flanke (FP)........................................................................................... Fallende Flanke (FN) ............................................................................................. Zeitfunktionen ...................................................................................................... Zeit freigeben (FR) nur in AWL.............................................................................. Zeit starten (SI/SV/SE/SS/SA)............................................................................... Zeitwert - Vorgabe (TW) ........................................................................................ Zeit rcksetzen (R) ................................................................................................ Zeitwert abfragen (L/LC)........................................................................................ Signalzustand der Zeit binr abfragen (Q) ............................................................ Zeit als Impuls (SI) ................................................................................................. Verlngerter Impuls (SV) ....................................................................................... Einschaltverzgerung (SE) .................................................................................... Speichernde Einschaltverzgerung (SS)............................................................... Ausschaltverzgerung (SA) ................................................................................... Taktgeber.............................................................................................................. 5 6 6 6 7 7 8 9 9 10 10 11 11 12 12 13 14 14 14 15 15 15 16 16 17 18 19 20 21

T I A Ausbildungsunterlage Ausgabestand: 08/2001

Seite 3 von 32

Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

SEITE: 2.13 2.13.1 2.13.2 2.13.3 2.13.4 2.13.5 2.13.6 2.13.7 2.13.8 2.14 2.15 2.16 2.16.1 2.16.2 2.16.3 2.16.4 2.16.5 2.16.6 2.17 2.17.1 2.17.2 2.17.3 2.18 2.18.1 2.19 2.19.1 2.19.2 2.19.3 2.19.4 Zhloperationen ................................................................................................... Zhler freigeben (FR) nur in AWL ......................................................................... Vorwrtszhlen (ZV) .............................................................................................. Rckwrtszhlen (ZR) ........................................................................................... Zhler setzen (S) ................................................................................................... Zhlwert - Vorgabe (ZW) ....................................................................................... Zhler rcksetzen (R) ............................................................................................ Zhlwert abfragen (L/LC)....................................................................................... Signalzustand des Zhlers binr abfragen (Q)...................................................... Lade- und Transferoperationen (L/T) nur in AWL ............................................ Vergleichsfunktionen .......................................................................................... Programmorganisation ....................................................................................... Bausteinaufruf (CALL) ........................................................................................... Konditionierter Bausteinaufruf (CC)....................................................................... Unkonditionierter Bausteinaufruf (UC)................................................................... Datenbaustein aufschlagen (AUF) ........................................................................ Bausteinende bedingt (BEB) nur in AWL .............................................................. Bausteinende absolut (BEA) nur in AWL............................................................... Sprungoperationen.............................................................................................. Springe absolut (SPA) ........................................................................................... Springe bedingt (SPB/SPBN) ................................................................................ Programmschleife (LOOP) nur in AWL ................................................................. Nulloperationen.................................................................................................... Nulloperation 0/1 (NOP0/NOP1) nur in AWL......................................................... Bearbeitung des VKE .......................................................................................... Negieren des VKE (NOT) nur in AW72 ................................................................. Setzen des VKE (SET) nur in A72......................................................................... Rcksetzen des VKE (CLR) nur 72 AWL .............................................................. Sichern des VKE (SAVE) nur in 72L ..................................................................... 22 22 22 22 23 23 23 23 24 25 26 27 27 27 28 28 28 29 30 30 30 31 31 31 32 32 32 32 32

T I A Ausbildungsunterlage Ausgabestand: 08/2001

Seite 4 von 32

Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

1.

VORWORT Anhang C wird bei der Bearbeitung smtlicher Module bentigt. Grundlagen der STEP 7- Programmierung 2 - 3 Tage Modul 1-7

Weiterfhrende Funktionen der STEP 7- Programmierung 2- 3 Tage Modul 8-12

Industrielle Feldbussysteme 2- 3 Tage Modul 13-23 Lernziel:

Schrittkettenprogrammierung 2- 3 Tage Modul 13

Prozessvisualisierung 2- 3 Tage Modul 24-26

Der Leser erhlt mit diesem Anhang eine Sammlung der wichtigsten Programmierbefehle, die zur Lsung der Programmieraufgaben in den Modulen 1-26 bentigt werden.

Voraussetzungen: Damit die Befehle und die Programmierweise verstanden werden kann wird folgendes Wissen vorausgesetzt: Grundlagen der SPS- Programmierung (z.B. Anhang A Grundlagen zur SPS - Programmierung mit SIMATIC S7-300)

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 5 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.

GRUNDLEGENDE PROGRAMMIERBEFEHLE Die folgenden Programmierbefehle sind fr die Grundlagen der Programmierung ausreichend. Dies ist jedoch keine vollstndige Auflistung aller Befehle. Information zu weiteren Befehlen in KOP/FUP/AWL finden Sie in den Handbchern oder am besten in der Online-Hilfe unter dem Stichpunkt Sprachbeschreibung KOP, FUP bzw. AWL.

2.1

ZUWEISUNG Die Zuweisung (=) kopiert das Verknpfungsergebnis (VKE) der vorhergehenden Operation und weist es dem nachfolgenden Operanden zu. Eine Verknpfungskette kann durch eine Zuweisung abgeschlossen werden.
KOP E 0.0 A0.0 AW L

||
FUP

( )

U E0.0 = A0.0

A 0.0 E 0.0

2.2

UND - VERKNPFUNG Die UND - Verknpfung entspricht einer Reihenschaltung von Kontakten im Stromlaufplan. Am Ausgang A 0.0 erscheint Signalzustand 1, wenn alle Eingnge gleichzeitig den Signalzustand 1 aufweisen. Wenn einer der Eingnge den Signalzustand 0 aufweist, bleibt der Ausgang im Signalzustand 0.
KOP
E 0.0 E 0.1

AWL ||
A 0.0

||

()

U E 0.0 U E 0.1 = A 0.0

FUP
A 0.0 E 0.0 E 0.1

&

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 6 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.3

ODER - VERKNPFUNG Die ODER - Verknpfung entspricht einer Parallelschaltung von Kontakten im Stromlaufplan. Am Ausgang A 0.1 erscheint der Signalzustand 1, wenn mindestens einer der Eingnge den Signalzustand 1 aufweist. Nur wenn alle Eingnge den Signalzustand 0 aufweisen, bleibt der Signalzustand am Ausgang auf 0.
KOP
E 0.2

AWL
A 0.1

|| ||

()

E 0.3

O E 0.2 O E 0.3 = A 0.1

FUP
E 0.2 E 0.3

A 0.1

>1

2.4

UND - VOR ODER - VERKNPFUNG Die UND- vor ODER- Verknpfung entspricht einer Parallelschaltung mehrerer in Reihe geschalteter Kontakte im Stromlaufplan. Bei diesen aus Reihen- und Parallelschaltung zusammengesetzten Zweigen fhrt der Ausgang 0.1 den Signalzustand 1, wenn in mindestens einem Zweig alle in Reihe geschalteten Kontakte geschlossen sind (den Signalzustand 1 haben). UND- vor ODER- Verknpfungen werden in der Darstellungsart AWL ohne Klammern programmiert, es mssen jedoch die parallelgeschalteten Zweige durch die Eingabe des Zeichens O (ODERFunktion) voneinander getrennt werden. Dabei werden zuerst die UND- Funktionen bearbeitet und aus Ihren Ergebnissen das Ergebnis der ODER- Funktion gebildet. Die erste UND- Funktion (E 0.0, E 0.1) wird von der zweiten UNDFunktion (E 0.2, E 0.3) durch das einzelne O (ODER- Funktion) getrennt.

KOP
E 0.0

FUP
E 0.1

AWL & >1


A 0.1 U U O U U = E 0.0 E 0.1 E 0.2 E 0.3 A 0.1

||

|| ||

A 0.1

E 0.0 E 0.1

()

E 0.2

||

E 0.3

E 0.2 E 0.3

&

UND- Verknpfungen haben Vorrang und werden damit immer vor den ODER- Verknpfungen bearbeitet.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 7 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.5

ODER - VOR UND - VERKNPFUNG Die ODER- vor UND- Verknpfung entspricht einer Reihenschaltung mehrerer parallelgeschalteter Kontakte im Stromlaufplan. Bei dieser aus Reihen- und Parallelschaltung zusammengesetzten Verknpfung hat der Ausgang 1.0 nur dann den Signalzustand 1, wenn in jedem der beiden Parallelzweige mindestens einer der Kontakte den Signalzustand 1 aufweisen.

KOP

FUP
E 1.0

AWL >1 &


U( O O ) U( O O ) = E 1.0 E 1.1 E 1.2 E 1.3 A 1.0

E 1.0

E 1.2

A 1.0

||
E 1.1

||
E 1.3

()

E 1.1

A 1.0

||

||

E 1.2 E 1.3

>1

Damit ODER- Verknpfungen Vorrang vor UND- Verknpfungen haben mssen sie durch Klammern zusammengefat werden.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 8 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.6

ABFRAGE AUF SIGNALZUSTAND 0 Die Abfrage auf Signalzustand 0 entspricht in einer kontaktbehafteten Schaltung einem ffner und ist in den Verbindungen UND NICHT (UN), ODER NICHT (ON) und EXKLUSIV ODER NICHT (XN) realisiert. Beispiel einer ODER NICHT - Verknpfung:

KOP
E 0.2

AW L A 0.1 O E 0.2 ON E 0.3 = A 0.1

||

()

E 0.3

|/|

FP U
E 0.2 E 0.3

A 0.1 >1 =

2.7

EXKLUSIV - ODER - VERKNPFUNG Die Schaltung zeigt eine Exklusiv- ODER- Verknpfung (X), bei der der Ausgang 1.0 nur dann eingeschaltet ist (Signalzustand 1), wenn nur einer der Eingnge den Signalzustand 1 aufweist. In einer kontaktbehafteten Schaltung kann dies nur mit ffnern und Schlieern realisiert werden.

KOP
E 1.0

AWL
E 1.1

||

|/|

A 1.0

()

E 1.0

|/|

E 1.1

||

X X =

E 1.0 E 1.1 A 1.0

FUP

E 1.0 E 1.1

XOR

A 1.0

Hinweis: Die Exklusiv- ODER- Verknpfung darf nur mit genau zwei Eingngen verwendet werden.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 9 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.8

ABFRAGE VON AUSGNGEN Fr das Einschalten der Ausgnge A 1.0 und A 1.1 gelten unterschiedliche Bedingungen. In diesen Fllen mu fr jeden Ausgang ein eigener Strompfad bzw. ein eigenes Verknpfungssymbol vorgesehen werden. Da das Automatisierungsgert nicht nur den Signalzustand von Eingngen, sondern auch den von Ausgngen, Merkern usw. abfragen kann, wird in der UND- Verknpfung fr den Ausgang A 1.1 der Ausgang A 1.0 abgefragt.
FUP
A 1.0 E 1.0 E 1.1

AWL

&

A 1.1 A 1.0 E 1.2

=
=

U U = U U =

E 1.0 E 1.1 A 1.0 A 1.0 E 1.2 A 1.1

&

KP O
E 1.0

||

E 1.1

|| ||

A 1.0

()

A A 1 1 0 ) || (1
2.9 R - S - SPEICHERFUNKTIONEN Nach DIN 40900 und DIN 19239 wird eine R-S- Speicherfunktion als Rechteck mit dem Setzeingang S und dem Rcksetzeingang R dargestellt. Kurzzeitiger Signalzustand 1 am Setzeingang S setzt die Speicherfunktion. Kurzzeitiger Signalzustand 1 am Rcksetzeingang R fhrt zum Rcksetzen der Speicherfunktion. Signalzustand 0 an den Eingngen R und S verndert den vorher eingestellten Zustand nicht. Sollte an beiden Eingngen R und S der Signalzustand 1 gleichzeitig anstehen, wird vorrangig gesetzt oder zurckgesetzt. Dieses vorrangige Rcksetzen oder Setzen mu bei der Programmierung bercksichtigt werden.

E 1.2

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 10 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.9.1

VORRANGIGES ZURCKSETZEN
KOP(1)
E 1.1 A 2.0

AWL (S)
A 2.0 U S U R E 1.1 A 2.0 E 1.0 A 2.0

||
E 1.0

|| KOP(2)
E 1.1

(R)

A 2.0

FUP
A 2.0

A 2.0

||
E 1.0

SR S R Q

()

E 1.1

S
A 2.0

||

E 1.0

Die zuletzt programmierten Anweisungen werden von der Steuerung mit Vorrang bearbeitet. Im Beispiel wird zunchst die Setzoperation ausgefhrt; der Ausgang A 2.0 wird wieder zurckgesetzt und bleibt fr den Rest der Programmbearbeitung zurckgesetzt. Dieses kurzzeitige Setzen des Ausgangs wird nur im Prozeabbild durchgefhrt. Der Signalzustand auf der dazugehrigen Peripheriebaugruppe wird whrend der Programmbearbei-tung nicht beeinflut. 2.9.2 VORRANGIGES SETZEN Gem Abschnitt 4.10.1. wird der Ausgang A 2.1 in diesem Beispiel mit Vorrang gesetzt.
KOP(1)
E 1.1 A 2.1

AWL (R)
A 2.1 U R U S E 1.1 A 2.1 E 1.0 A 2.1

||
E 1.0

|| KOP(2)
E 1.1

(S)

A 2.1

FUP
A 2.1

A 2.1

||
E 1.0

RS R S Q

()

E 1.1

R
A 2.1

||

E 1.0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 11 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.10

FLANKENOPERATIONEN Die Flankenoperationen erfassen im Gegensatz zu einem statischen Signalzustand "0" und "1" die Signalnderung, z.B. eines Eingangs. Das Programm einer Flankenoperation entspricht einem flankenerkennenden Kontakt in einem Relaisschaltkreis.

2.10.1

STEIGENDE FLANKE (FP) Ist eine steigende (positive) Flanke (Wechsel von 0auf 1) an E 0.2 erkannt, so wird A 4.0 fr einen OB1-Zyklus auf 1 gesetzt. Dieser Ausgang kann wiederum verwendet werden um z.B. einen Merker zu setzen. Eine steigende Flanke wird erkannt, indem das Automatisierungssystem das VKE, das die Operation U geliefert hat, im Flankenmerker M 2.0 speichert, und es mit dem VKE des vorhergehenden Zyklus vergleicht. Der Vorteil der zweiten Darstellungsart in KOP/FUP ist, da hier am Eingang der Flankenoperation auch Verknpfungen stehen knnen.

KOP/FUP
E 0.2
POS A

AWL
A 4.0

( )

U FP =

E 0.2 M 2.0 A 4.0

M 2.0

M_BIT

oder:
M 2.0 E 0.2 P A 4.0 ()

Signalzustandsdiagramm

E 0.2 M 2.0 A 4.0 OB1-Zyklus 1 2 3 4 5 6 7 8 9 10 11 12

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 12 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.10.2

FALLENDE FLANKE (FN) Ist eine fallende (negative) Flanke (Wechsel von 1auf 0) an E 0.2 erkannt, so wird A 4.0 fr einen OB1-Zyklus auf 1 gesetzt. Dieser Ausgang kann wiederum verwendet werden um z.B. einen Merker zu setzen. Eine fallende Flanke wird erkannt, indem das Automatisierungssystem das VKE, das die Operation U geliefert hat, im Flankenmerker M 2.0 speichert, und es mit dem VKE des vorhergehenden Zyklus vergleicht. Der Vorteil der zweiten Darstellungsart in KOP/FUP ist, da hier am Eingang der Flankenoperation auch Verknpfungen stehen knnen.

KOP/FUP
E 0.2
NEG A

AWL
A 4.0

( )

U FN =

E 0.2 M 2.0 A 4.0

M 2.0

M_BIT

oder:
M 2.0 E 0.2 N A 4.0 ()

Signalzustandsdiagramm

E 0.2 M 2.0 A 4.0 OB1-Zyklus 1 2 3 4 5 6 7 8 9 10 11 12

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 13 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11

ZEITFUNKTIONEN Fr die Realisierung von Steuerungsaufgaben mssen sehr hufig verschiedene Zeitfunktionen eingesetzt werden. Die Zeitfunktionen sind in der Zentralbaugruppe des Automatisierungsgerts integriert. Die Einstellung der gewnschten Laufzeit und das Starten der Zeitfunktion mu ber das Anwenderprogramm erfolgen. Die SIMATIC - Automatisierungsgerte stellen Ihnen eine bestimmte Anzahl von Zeitgliedern ( CPU abhngig ) mit unterschiedlichen Zeitfunktionen zur Verfgung. Jedem der Zeitglieder ist ein 16-BIT-WORT zugeordnet. Folgende Funktionen knnen bei einer Zeit programmiert werden:

2.11.1

ZEIT FREIGEBEN (FR) NUR IN AWL Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) gibt eine Zeit frei. Zum Starten oder fr die normale Funktion einer Zeit wird die Freigabe nicht bentigt. Die Freigabe wird lediglich dazu verwendet, eine laufende Zeit nachzutriggern, d.h. sie wieder anlaufen zu lassen. Dieser Wiederanlauf ist nur dann mglich, wenn die Startoperation weiterhin mit dem VKE 1 bearbeitet wird.

Die Operation Freigabe (FR) existiert nur in der Darstellungsart AWL.

2.11.2

ZEIT STARTEN (SI/SV/SE/SS/SA) Bei Signalwechsel am Starteingang ( positive Flanke ) wird das Zeitglied gestartet. Um eine Zeit zu starten, fgen Sie drei Anweisungen in Ihrem AWL- Programm ein:

Abfragen eines Signalzustandes Laden einer Startzeit in AKKU 1 Startoperation (wahlweise SI, SV, SE, SS oder SA)

z.B.: U E 0.0 L S5T#2S SE T5

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 14 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.3

ZEITWERT - VORGABE (TW) Ein Zeitglied soll immer eine bestimmte Zeit ablaufen. Die Zeitdauer TW kann entweder als vordefinierte Konstante im Programm fest vergeben werden oder als Eingangswort EW, als Ausgangswort AW, als Datenwort DBW/DIW, als Lokaldatenwort LW oder als Merkerwort MW vorgegeben werden. Das Aktualisieren der Zeit vermindert den Zeitwert um jeweils eine Einheit in einem Intervall, das von der Zeitbasis festgelegt wurde. Einen vordefinierten Zeitwert knnen Sie mit folgender Syntax laden:

L W#16#abcd - mit: a = Zeitbasis binr- codiert(d.h. Zeitintervall oder Auflsung; siehe unten) - bcd = Zeitwert im BCD- Format L S5T#aH_bbM_ccS_dddMS - mit: a = Stunden, bb = Minuten, cc = Sekunden und ddd = Millisekunden - Die Zeitbasis wird automatisch gewhlt

Zeitbasis: Die Zeitbasis definiert das Intervall, in dem der Zeitwert um eine Einheit vermindert wird. Werte die keine genaue Vielfache des Zeitintervalls sind werden abgeschnitten. Werte, deren Auflsung fr den gewnschten Bereich zu gro ist, werden abgerundet. Zeitbasis 10ms 100ms 1s 10s 2.11.4 Binrcode 00 01 10 11 Zeitbereich 10MS bis 9S_990MS 100MS bis 1M_39S_900MS 1S bis 16M_39S 10S bis 2H_46M_30S

ZEIT RCKSETZEN (R) Ein Signal am Rcksetzeingang beendet die Bearbeitung des Zeitgliedes. Der aktuelle Zeitwert wird gelscht, der Ausgang Q der Zeitzelle zurckgesetzt.

2.11.5

ZEITWERT ABFRAGEN (L/LC) Ein Zeitwert ist in einem Zeitwort binr- codiert gespeichert. Der im Zeitwort stehende Wert kann als Dualzahl (DUAL) oder als BCD- Zahl (DEZ) in den AKKU geladen und von dort in andere Operanden - bereiche transferiert werden. Bei der AWL-Programmierung haben Sie die Wahl zwischen L T1 fr die Abfrage der Dualzahl und LC T1 fr die Abfrage der BCD- Zahl.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 15 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.6

SIGNALZUSTAND DER ZEIT BINR ABFRAGEN (Q) Eine Zeit kann auf ihren Signalzustand (0 oder 1) abgefragt werden. Die Signalzustnde knnen - wie gewohnt - mit U T1, UN T1, ON T1,etc... abgefragt und fr weitere Verknpfungen verwandt werden. Sie knnen unter fnf verschiedenen Zeiten auswhlen:

2.11.7

ZEIT ALS IMPULS (SI) Der Ausgang eines Zeitglieds, das als Impulsglied gestartet wird, fhrt nach dem Starten Signalzustand 1 (1). Der Ausgang wird zurckgesetzt, wenn die programmierte Zeitdauer abgelaufen ist (2), wenn das Startsignal auf Null zurckgesetzt wird (3) oder wenn am Rcksetzeingang des Zeitglieds Signalzustand 1 ansteht (4). Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) startet die Zeit neu (5). Dieser Wiederanlauf ist nur dann mglich, wenn die Startoperation weiterhin mit dem VKE 1 bearbeitet wird.
AWL
T1 S_IMPULS E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0 U E 0.2 FR T1 U L SI U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Freigabe der Zeit T1 (nur in AWL) Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1

FUP

KOP
T1 E0.0 S5T#2S E0.1 S TW R S_IMPULS Q DUAL DEZ A 4.0 () MW0 MW2

Signalzustandsdiagramm mit Freigabe (FR) E 0.2 E 0.0 E 0.1 A 4.0


1

1 0 1 0 1 0 1 0

-T2 3 4

-T5

-T-

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 16 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.8

VERLNGERTER IMPULS (SV) Der Ausgang eines Zeitglieds, das als verlngerter Impuls gestartet wird, fhrt nach dem Starten Signalzustand 1 (1). der Ausgang wird zurckgesetzt, wenn die vorgegebene Zeitdauer abgelaufen ist (2) oder der Rcksetzeingang der Zeitfunktion eingeschaltet wird (5). Ein Ausschalten des Starteingangs bewirkt, whrend die Zeit luft, kein Rcksetzen des Ausgangs (Selbsthaltung) (3). Tritt - whrend die Zeit noch luft - ein erneuter Signalwechsel auf 1 am Starteingang auf, wird das Zeitglied neu gestartet ( nachgetriggert ) (4).

FUP
T1 S_VIMP E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0

AWL
U L SV U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1

KOP
T1 E0.0 S5T#2S E0.1 S TW R S_VIMP Q DUAL DEZ A 4.0 () MW0 MW2

Signalzustandsdiagramm

E 0.0 E 0.1 A 4.0


1

-T2

-T3 4

-T5

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 17 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.9

EINSCHALTVERZGERUNG (SE) Der Ausgang eines Zeitgliedes, das als Einschaltverzgerung gestartet wird, fhrt nach dem Starten erst dann Signalzustand 1, wenn die programmierte Zeit abgelaufen ist und das VKE 1 am Starteingang noch ansteht (1). Das Einschalten des Starteingangs bewirkt also ein um die vorgegebene Zeitdauer verzgertes Einschalten des Ausgangs Q. Der Ausgang wird zurckgesetzt, wenn der Starteingang ausgeschaltet wird (2) oder wenn am Rcksetzeingang des Zeitgliedes Signalzustand 1 ansteht (3). Der Ausgang Q wird nicht eingeschaltet, falls noch whrend die Zeit luft der Starteingang ausgeschaltet wird, oder Signalzustand 1 am Rcksetzeingang des Zeitglieds anliegt.

FUP
T1 S_EVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0

AWL
U L SE U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1

KOP
T1 E0.0 S5T#2S E0.1 S TW R S_EVERZ Q DUAL DEZ A 4.0 () MW0 MW2

Signalzustandsdiagramm

E 0.0 E 0.1 A 4.0 -T1 2

-T-

-T3

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 18 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.10

SPEICHERNDE EINSCHALTVERZGERUNG (SS) Der Ausgang eines Zeitglieds, das als Speichernde Einschaltverzgerung gestartet wird, fhrt nach dem Starten erst dann Signalzustand 1, wenn die programmierte Zeit abgelaufen ist (1). Die Funktion bentigt nach dem Starten am Starteingang kein VKE 1 mehr, dieser kann also ausgeschaltet werden (Selbsthaltung) (3). Der Ausgang wird nur dann zurckgesetzt, wenn der Rcksetzeingang der Zeitfunktion eingeschaltet wird (2). Ein Aus- und erneutes Einschalten des Starteingangs bewirkt, solange die Zeit luft, da die Zeitfunktion neu gestartet (nachgetriggert) wird (4).

FUP
T1 S_SEVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0

AWL
U L SS U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1

KOP
T1 E0.0 S5T#2S E0.1 S TW R S_SEVERZ Q DUAL DEZ A 4.0 () MW0 MW2

Signalzustandsdiagramm

E 0.0 E 0.1 A 4.0 -T1 2

-T3 4

-T-

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 19 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.11.11

AUSSCHALTVERZGERUNG (SA) Bei einem Signalwechsel (positive Flanke) am Starteingang eines Zeitglieds, das als Ausschaltverzgerung gestartet wird, wird der Ausgang Q der Zeitfunktion eingeschaltet (1). Wird der Starteingang ausgeschaltet, liefert der Ausgang noch solange Signalzustand 1, bis die programmierte Zeit abgelaufen ist (2). Das Ausschalten des Starteingangs (fallende Flanke) bewirkt also ein, um die vorgegebene Zeitdauer, verzgertes Ausschalten des Ausgangs. Der Ausgang des Zeitglieds wird auch ausgeschaltet, wenn am Rcksetzeingang Signalzustand 1 ansteht (4). Ein erneutes Einschalten der Zeitfunktion bewirkt, whrend die Zeit luft, da die ablaufende Zeit angehalten und erst beim nchsten Ausschalten des Starteingangs neu gestartet wird (3). Fhren sowohl der Start- als auch der Rcksetzeingang der Zeitfunktion Signalzustand 1, wird der Ausgang des Zeitglieds erst gesetzt, wenn das dominierende Rcksetzen ausgeschaltet ist (5).

FUP
T1 S_AVERZ E0.0 S5T#2S E0.1 S TW R DUAL DEZ Q MW0 MW2 A 4.0

AWL
U L SA U R L T LC T U = E 0.0 S5T#2S T1 E 0.1 T1 T1 MW0 T1 MW2 T1 A 4.0 Lade Startzeit (2s) in AKKU 1 Starte Zeit T1 als Impuls Setze Zeit T1 zurck Lade Zeit T1 binr-codiert Lade Zeit T1 BCD-codiert Abfrage der Zeit T1

KOP
T1 E0.0 S5T#2S E0.1 S TW R S_AVERZ Q DUAL DEZ A 4.0 () MW0 MW2

Signalzustandsdiagramm

E 0.0 E 0.1 A 4.0


1

-T2 3

-T4 5

1 0 1 0 1 0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 20 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.12

TAKTGEBER Taktgeber werden fr unterschiedliche Kontroll-, berwachungs- und Steuerungsaufgaben eingesetzt. In der Digitaltechnik werden sie als astabile Kippschaltungen bezeichnet. Hufig bentigt man in der Praxis fr Betriebs- oder Strmeldungen eine Blinkfrequenz.

In der CPU S7-300 existiert ein parametrierbarer Taktmerker, der mit dem Tool S7 Configuration eingestellt werden kann.

Taktmerker parametrieren: Taktmerker sind Merker innerhalb eines Taktmerkerbytes. Ein beliebiges Merkerbyte der CPU wird durch Parametrierung (Im Tool Configuration auf die Zeile CPU doppelklicken!) zum Taktmerkerbyte. Ein Taktmerker ndert seinen binren Wert periodisch. Wenn Sie Taktmerker aktivieren ( Kreuz im Kontrollkstchen ist sichtbar), dann mssen Sie auch die Nummer des Merkerbytes bestimmen. Das gewhlte Merkerbyte kann nicht fr die Zwischenspeicherung von Daten genutzt werden.

Periodendauer von Takten: Jedem Bit des Taktmerkerbytes ist eine Periodendauer/Frequenz zugeordnet. Es gilt folgende Zuordnung: Bit: Periodendauer (s): Frequenz (Hz): 7 2 0,5 6 1,6 0,625 5 1 1 4 0,8 1,25 3 0,5 2 2 0,4 2,5 1 0,2 5 0 0,1 10

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 21 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.13

ZHLOPERATIONEN In der Steuerungstechnik werden fr das Erfassen von Stckzahlen oder Impulsen, zur Auswertung von Zeiten und Entfernungen Zhlfunktionen bentigt. Bei der SIMATIC S7 sind Zhler bereits in der Zentralbaugruppe integriert. Diese Zhler besitzen einen eigenen reservierten Speicherbereich. Der Bereich des Zhlwertes liegt zwischen 0 und 999. Folgende Funktionen knnen bei einem Zhler programmiert werden:

2.13.1

ZHLER FREIGEBEN (FR) NUR IN AWL Ein positiver Flankenwechsel ( von 0 auf 1 ) im Verknpfungsergebnis der Operation Freigabe (FR) gibt einen Zhler frei. Weder fr das Setzen eines Zhlers, noch fr normale Zhloperationen wird eine Zhlerfreigabe bentigt. Will man jedoch ohne steigende Flanke vor der entsprechenden Zhloperation ( ZV, ZR oder S ) einen Zhler setzen bzw. Vorwrts - oder rckwrtszhlen , so kann dies mit einer Freigabe erfolgen. Dies ist jedoch nur mglich, wenn das VKE- Bit vor der entsprechenden Operation ( ZV, ZR oder S ) den Signalzustand 1 hat.

Die Operation Freigabe (FR) existiert nur in der Darstellungsart AWL.

2.13.2

VORWRTSZHLEN (ZV) Der Wert des adressierten Zhlers wird um 1 erhht. Die Funktion wird nur bei einem positiven Flankenwechsel der vor ZV programmierten Verknpfung wirksam. Erreicht der Zhlwert die obere Grenze 999, wird er nicht mehr erhht. ( Ein bertrag wird nicht gebildet! )

2.13.3

RCKWRTSZHLEN (ZR) Der Wert des adressierten Zhlers wird um 1 verringert. Die Funktion wird nur bei einem positiven Flankenwechsel der vor ZR programmierten Verknpfung wirksam. Erreicht der Zhlwert die untere Grenze 0, wird er nicht mehr verringert. ( Nur positive Zhlwerte! )

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 22 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.13.4

ZHLER SETZEN (S) Um einen Zhler zu setzen, fgen Sie drei Anweisungen in Ihrem AWL- Programm ein: Abfragen eines Signalzustandes Laden eines Zhlwertes Setzen eines Zhlers mit dem geladenen Zhlwert Diese Funktion wird nur bei einem positiven Flankenwechsel der Abfrage bearbeitet. z.B.: U E 2.3 L C#5 S Z1

2.13.5

ZHLWERT - VORGABE (ZW) Wird ein Zhler gesetzt, so wird der Inhalt von AKKU 1 als Zhlwert verwendet. Sie haben die Mglichkeit den Zhlwert entweder binr- codiert oder BCD- codiert einzuladen. Als Operanden sind mglich: Eingangswort Ausgangswort Merkerwort Datenwort Lokaldatenwort Konstanten EW .. AW .. MW .. DBW/DIW .. LW .. C#5,

2#...etc.

2.13.6

ZHLER RCKSETZEN (R) Bei VKE 1 wird der Zhler auf Null gesetzt (rcksetzen). Bei VKE 0 bleibt der Zhler unbeeinflut. Das Rcksetzen eines Zhlers wirkt statisch. Bei erfllter Rcksetzbedingung kann weder gesetzt noch gezhlt werden.

2.13.7

ZHLWERT ABFRAGEN (L/LC) Ein Zhlwert ist in einem Zhlerwort binr- codiert gespeichert. Der im Zhler stehende Wert kann als Dualzahl (DU) oder als BCD- Zahl (DE) in den AKKU geladen und von dort in andere Operandenbereiche transferiert werden. Bei der AWL- Programmierung haben Sie die Wahl zwischen L Z1 fr die Abfrage der Dualzahl und LC Z1 fr die Abfrage der BCD- Zahl.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 23 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.13.8

SIGNALZUSTAND DES ZHLERS BINR ABFRAGEN (Q) Der Zhler kann auf seinen Signalzustand abgefragt werden. Hierbei bedeutet: Signalzustand 0 Signalzustand 1 = = Zhler steht auf Wert 0; Zhler arbeitet, d.h. ist zhlbereit.

Die Signalzustnde knnen - wie gewohnt - mit U Z1, UN Z1, ON Z1,etc... abgefragt und fr weitere Verknpfungen verwandt werden.
FUP
E0.0 E0.1 E0.2 C#5 E0.3

Z1 ZAEHLER ZV ZR S ZW R Z1 ZAEHLER ZV Q ZR S ZW R DUAL DEZ AW2 AW4 A 0.0 () DUAL DEZ Q AW2 AW4 A 0.0

AWL
U FR U ZV U ZR U L S U R L T LC T U = E 0.7 Z1 E 0.0 Z1 E 0.1 Z1 E 0.2 C#5 Z1 E 0.3 Z1 Z1 AW2 Z1 AW4 Z1 A 0.0 Freigabe (nur in AWL)

Vorwrts zhlen Rckwrts zhlen Vorgabewert fr Zhler laden Zhler mit Vorgabewert setzen Setze Zhler Z1 zurck Lade Zhler Z1 binr-codiert Lade Zhler Z1 BCD-codiert Abfrage des Zhlers Z1

KOP
E0.0 E0.1 E0.2 C#5 E0.3

Signalzustandsdiagramm:
FR

ZV

ZR

A 0.0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 24 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.14

LADE - UND TRANSFEROPERATIONEN (L/T) NUR IN AWL In der Programmiersprache STEP7 ermglichen Lade- und Transferoperationen den byte-, wort-, bzw. doppelwortweisen Austausch von Informationen zwischen Ein- und Ausgabebaugruppen, dem Prozeabbild der Ein- und Ausgnge, den Zeit-, Zhler - und Merkerspeichern sowie den Datenbausteinen. Dieser Informationsaustausch erfolgt nicht direkt, sondern immer ber den Akkumulator 1 (AKKU 1). Der AKKU 1 ist ein Register im Prozessor und dient als Zwischenspeicher. Der Informationsflu ist richtungsgebunden: LADEN: vom Quellspeicher in den AKKU 1 TRANSFERIEREN: vom AKKU in den Zielspeicher LADEN
QUELLSPEICHER 31

AKKU 1
16 15 0

TRANSFERIEREN
ZIELSPEICHER

Beim Laden wird der Inhalt des angesprochenen Quellspeichers kopiert und in den AKKU 1 geschrie-ben. Der bisherige Akkuinhalt wird dabei in ein AKKU 2 bertragen. Beim Transferieren wird der Inhalt von AKKU 1 kopiert und in den angesprochenen Zielspeicher geschrieben. Da der Akkuinhalt nur kopiert wurde, steht er fr weitere Transferoperationen zur Verfgung.

AWL: : L EW : T AW : L +5 : T AW : BE
*1: Prozeabbild der Eingnge *2: Prozeabbild der Ausgnger

0 4 PAE

(*1)

EW 0

AKKU AKKU

AW 4

PAA

(*2)

Konstante

+5

AW 6

PAA

Laden und Transferieren sind unbedingte Operationen, die unabhngig vom Verknpfungsergebnis in jedem zyklischen Umlauf ausgefhrt werden.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 25 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.15

VERGLEICHSFUNKTIONEN Die Programmiersprache STEP7 bietet Ihnen die Mglichkeit, zwei Zahlenwerte direkt zu vergleichen und das Ergebnis des Vergleichs ( VKE ) sofort weiterzuschalten. Voraussetzung dafr ist , da beide Zahlen dasselbe Zahlenformat haben. Folgende Paare von Zahlenwerten knnen verglichen werden:

zwei Ganzzahlen ( 16 Bit zwei Ganzzahlen ( 32 Bit zwei Realzahlen ( Gleitpunktzahlen 32 Bit,

Symbol: I ) Symbol: D ) Symbol: R )

Sie knnen unter sechs verschiedenen Vergleichen auswhlen:

Ist der Wert der Zahl Z 1 ( im Akku 2)

gleich ungleich grer oder gleich grer kleiner oder gleich kleiner

== <> >= > <= <

dem Wert der Zahl Z 2 ? ( im Akku 1 )

Mit den Vergleichsfunktionen werden zwei Werte, die in den AKKU s 1 und 2 stehen, direkt miteinander verglichen. Mit der ersten Ladeoperation wird der erste Operand (z.B. EW 0) in den AKKU 1 geladen. Mit der zweiten Ladeoperation wird zunchst der erste Operand vom AKKU 1 in den AKKU 2 umgeladen und dann der zweite Operand (z.B. EW 2) in den AKKU 1 geladen. Danach werden die in beiden Akkumulatoren stehenden Zahlenwerte im Arithmetikbaustein bitweise miteinander verglichen. Das Ergebnis des Vergleichs ist binr. Ist der gewnschte Vergleich erfllt, wird das Verknpfungsergebnis 1. Ist der gewnschte Vergleich nicht erfllt, so wird das VKE 0.

FUP / KOP
CMP >I

A 4.7

AWL
L EW 0 L EW 2 >I = A 4.7

AKKU 1 EW 0

AKKU 2 *** EW 0

( )

EW 0 EW 2

IN 1 IN 2

EW 2

Arithmetikbaustein VKE

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 26 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.16 2.16.1

PROGRAMMORGANISATION BAUSTEINAUFRUF (CALL) Mit dem Bausteinaufruf CALL knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Gleichzeitig knnen Parameter transferiert, bzw. Variablen beschrieben sowie der dem FB oder SFB zugehrige lokale Datenbaustein geffnet werden (Siehe: Weiterfhrende Funktion Variablendeklaration in Codebausteinen). Sind in dem aufgerufenen Baustein keine Variablen deklariert, so entspricht dieser Befehl dem Befehl UC.

AWL CALLFB1, DB20 ZAHL := AUS := TEST := KOP/FUP EW 1 ZAHL (Formalparameter) wird EW 1 (Aktualparameter) zugeordnet. AUS (Formalparameter) wird kein Parameter zugeordnet. TEST (Formalparameter) wird kein Parameter zugeordnet.

2.16.2

KONDITIONIERTER BAUSTEINAUFRUF (CC) Mit dem Bausteinaufruf CC knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Sie knnen jedoch keine Parameter transferieren bzw. Variablen beschreiben. Der Aufruf wird nur ausgefhrt, wenn das Verknpfungsergebnis 1 betrgt.
KOP/FUP
E 0.0 FC 1

AWL
U CC E 0.0 FC 1

| |

(CALL)

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 27 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.16.3

UNKONDITIONIERTER BAUSTEINAUFRUF (UC) Mit dem Bausteinaufruf UC knnen Sie Funktionen (FCs) und Funktionsbausteine (FBs) sowie Systemfunktionen (SFCs) und Systemfunktionsbausteine (SFBs) aufrufen. Sie knnen jedoch keine Parameter transferieren bzw. Variablen beschreiben. Der Aufruf wird unabhngig vom Verknpfungsergebnis ausgefhrt.
KOP/FUP
FC 1

AWL
UC FC 1

(CALL)

2.16.4

DATENBAUSTEIN AUFSCHLAGEN (AUF) Mit der Operation Aufschlagen Datenbaustein (AUF) knnen Sie einen Datenbaustein (DB) oder Instanz - Datenbaustein (DI) ffnen, um auf die enthaltenen Daten zugreifen zu knnen ( z.B. mit Lade- und Transferoperationen ).
KOP/FUP
DB 1

AWL ( OPN )
AUF L T DB 1 DBW 0 MW 1

2.16.5

BAUSTEINENDE BEDINGT (BEB) NUR IN AWL Abhngig vom Verknpfungsergebnis beendet diese Operation die Bearbeitung des aktuellen Bausteins und springt zurck in den Baustein, der den gerade Beendeten aufgerufen hat. Diese Operation erfolgt nur, wenn das Verknpfungsergebnis 1 betrgt.
AWL
U BEB E 0.0

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 28 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.16.6

BAUSTEINENDE ABSOLUT (BEA) NUR IN AWL Diese Operation beendet die Bearbeitung des aktuellen Bausteins und springt zurck in den Baustein, der den gerade Beendeten aufgerufen hat. Diese Operation erfolgt unabhngig vom Verknpfungsergebnis.
AWL
...(beliebige Anweisungen) BEA

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 29 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.17 2.17.1

SPRUNGOPERATIONEN SPRINGE ABSOLUT (SPA) Die Operation SPA unterbricht den normalen Ablauf des Programms und springt zu der, im Operanden angegebenen, Sprungmarke. Der Sprung erfolgt unabhngig vom Verknpfungsergebnis.

KOP/FUP
Netzwerk 1 SUP

AWL
Netzwerk 1

( JMP )
Netzwerk 4 SUP E 1.1 A 4.1

...(beliebige Anweisungen) SPA SUP

| |

Netzwerk 4 E 1.1 SUP: U SUP: S A 4.1

2.17.2

SPRINGE BEDINGT (SPB/SPBN) Die bedingten Sprungoperationen unterbrechen den normalen Ablauf des Programms und initiieren einen Sprung zu der, im Operanden angegebenen, Sprungmarke. Der Sprung erfolgt in Abhngigkeit vom Verknpfungsergebnis. Folgende bedingte Sprungoperationen knnen Sie ausfhren:

SPB : SPBN :
KOP/FUP
Netzwerk 1 E 0.0 SUP1

Springe, wenn VKE = 1 Springe, wenn VKE = 0


AWL
Netzwerk 1 U E 0.0 SPB SUP1 (Wenn VKE = 1) U E 0.0 SPBN SUP2 (Wenn VKE = 0)

| |

( JMP )
SUP2

(JMPN)
Netzwerk 4 SUP1 E 0.1 A 4.1

SUP1:

SUP1:

Netzwerk 4 U E 0.1 S A 4.1 Netzwerk 8 U E 0.2 S A 4.2

| |
Netzwerk 8 SUP2 E 0.2

SUP2:

SUP2:

A 4.2

| |

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 30 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.17.3

PROGRAMMSCHLEIFE (LOOP) NUR IN AWL Mit einer Programmschleife (LOOP) knnen Sie einen Programmteil mehrmals hintereinander bearbeiten. Dazu mssen Sie eine Konstante in das niederwertige Wort von AKKU 1 laden. Diese Zahl wird dann durch die Operation LOOP um 1 vermindert. Danach wird der Wert dieser Zahl auf <>0 berprft. Betrgt er nicht 0, dann wird ein Sprung zur Marke der Operation LOOP ausgefhrt; andernfalls wird die nchste Operation ausgefhrt. L NEXT:T 5 MB 10

L MB 10 LOOP NEXT

Die Programmschleife (LOOP) existiert nur in der Darstellungsart AWL.

2.18 2.18.1

NULLOPERATIONEN NULLOPERATION 0 / 1 (NOP0/NOP1) NUR IN AWL Diese Operationen fhren keine Funktion aus und beeinflussen den Inhalt des Statuswortes nicht. Der bersetzer bentigt die Nulloperationen fr die Rckbersetzung, z.B. von AWL in den KOP.

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 31 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Automatisierungs und Antriebstechnik- FEA

2.19

BEARBEITUNG DES VKE In STEP7 gibt es Operationen mit denen das Verknpfungsergebnis (VKE) verndert werden kann. Da dabei das VKE direkt beeinflut wird, besitzen diese Operationen keine Operanden.

2.19.1

NEGIEREN DES VKE (NOT) NUR IN AWL Sie knnen mit der Operation NOT in ihrem Programm das aktuelle VKE negieren (umkehren). Ist das aktuelle VKE 0, dann ndert die Operation NOT es in 1; ist das aktuelle VKE 1, dann ndert NOT es in 0.

2.19.2

SETZEN DES VKE (SET) NUR IN AWL Sie knnen mit der Operation SET in ihrem Programm das VKE- Bit unkonditioniert auf 1 setzen.

2.19.3

RCKSETZEN DES VKE (CLR) NUR IN AWL Sie knnen mit der Operation CLR in ihrem Programm das VKE- Bit unkonditioniert auf 0 rcksetzen.

2.19.4

SICHERN DES VKE (SAVE) NUR IN AWL Sie knnen mit der Operation SAVE in ihrem Programm das VKE fr einen zuknftigen Gebrauch im Statusbit (BIE) des Statuswortes sichern. Das Statuswort enthlt Bits, auf die Sie im Operanden der Bit- und Wortverknpfungsoperationen zugreifen knnen. BIE z.B.: Bit8 A1 Bit7 A0 Bit6 OV Bit5 OS Bit4 OR Bit3 STA Bit2 VKE Bit1 /ER Bit0

Anweisungsliste: SET = M 1.0 = E 0.0 CLR = M 1.0 = E 0.0 NOT SAVE

Signalzustand: 1 1

Verknpfungsergebnis(VKE): 1

0 0 0 1 1 sichern im BIE- Bit im Statuswort

Vorwort T I A Ausbildungsunterlage Ausgabestand: 08/2001 Seite 32 von 32

Programmierbefehle Anhang C Grundlegende Programmierbefehle KOP/FUP/AWL in STEP 7

Heinrich-HertzBerufskolleg Dsseldorf

Automatisierungstechnik

SpA00201
Wagener, OStR
Mgliche Operanden AB, EB, AW, EW, AD, ED, K

AWL Befehlsliste SPS A 120


Mgliche Operanden A, E, AB, EB, AW, EW, K A, E A, E, AB, EB, AW, EW, K A, E

VERKNPFUNGEN
Code U UN U( UN( O ON O( ON( X XN X( XN( ) Erluterung UND UND negiert UND mit VKE aus Klammer UND negiert mit VKE aus Klammer ODER

VERGLEICHS-Operationen
Code > >= == < <= <> Code SHL SHR ROL ROR Erluterung Grsser Grsser oder Gleich Gleich Kleiner Kleiner oder Gleich Ungleich

Code Erluterung Mgliche Operanden NOP Leeroperation FREI SPEICHER, ZHLER, ZEITGLIEDER = Zuweisung Code Erluterung Mgliche Operanden *** Netzwerkende S Setzeingang (Zhler, Flipflop, Timer) A, M, T, Z BE Bausteinende R Rcksetzeingang (Zhler, FF, Timer) A, M, T, Z BEB Bausteinende bedingt bei log. 1 FL Flankenerkennung BEZ Bausteinende bedingt bei log. 0 FLP Flankenerkennung positiv Operanden-Bereiche FLN Flankenerkennung negativ Code Bedeutung Verfgbar ZV Zhler vorwrts E Eingang Bit E1.1...E18.16 ZR Zhler rckwrts EB Eingang Byte EB1.1...EB18.16 ZVR Vor-/Rckwrts-Zhler EW Eingang Wort EW1.1...EW18.16 SI Zeitglied Impuls ED Eingang Doppelwort ED1.1...ED18.16 SV Zeitglied Verlngerter Impuls A Ausgang Bit A1.1...A18.16 SE Einschaltverzgerung AB Ausgang Byte AB1.1...AB18.16 SS Speichernde Einschaltverzgerung AW Ausgang Wort AW1.1...AW18.16 SA Ausschaltverzgerung AD Ausgang Doppelwort AD1.1...AD18.16 SPRNGE, BAUSTEINAUFRUFE M Merker Bit M1.1...M125..2 *) Code Erluterung Mgliche Operanden MB Merker Byte MB1...MB3970 SP Unbedingter Sprung MW Merker Wort MW1...MW1985 SPB Bedingter Sprung bei log. 1 MD Merker Doppelwort MD1...MD992 SPZ Bedingter Sprung bei log. 0 SM Systemmerker Bit SM1...SM50 BA Unbedingter Baustein-Aufruf E/A-Peripherie SM1.1...SM18.1 BAB Bedingter Baustein-Aufruf bei log. 1 SMB Systemmerker Byte SMB1...SMB20 BAZ Bedingter Baustein-Aufruf bei log 0 E/A-Peripherie SMB1.1...SMB18.1 LADE-/TRANSFER-Befehle SMW Systemmerker Wort SMW1...SMW10 Code Erluterung Mgliche Operanden SMD Systemmerker Doppelwort SMD1...SMD5 L Ladeanweisung K Konstante (dez.) K-32768...K32768 LBW Lade Bitspur Wort KO Konstante (oktal) KO100000...KO77777 TBW Transferiere Bitspur Wort KH Konstante (hexadez.) KH18000...KH7FFF LBB Lade Bitspur Byte T Timer T1...T567 TBB Transferiere Bitspur Byte TIW Timer-Istwert TIW1...TIW567 DBB Definiere Bitspur-Breite TSW Timer-Sollwert TSW1...TSW567 ANZ Anzahl der Bits Z Zhler Z1...Z794 LLD Lade Low Data ZIW Zhler-Istwert ZIW1...ZIW794 LHD Lade High Data ZSW Zhler-Sollwert ZSW1...ZSW794 TLD Transferiere Low Data THD Transferiere High Data *) 1.1 ... 1.32, 2.1 ... 2.32 etc.

ODER negiert ODER mit VKE aus Klammer ODER negiert mit VKE aus Klammer EXCLUSIV - ODER A, E, AB, EB, AW, EW, K EXOR negiert A, E EXOR mit VKE aus Klammer EXOR negiert mit VKE aus Klammer Abschlu Klammeroperation

SCHIEBE-/ROTATIONS-Befehle
Erluterung Schiebe nach links Schiebe nach rechts Rotiere nach Links Rotiere nach rechts

SONSTIGE

Mgliche Operanden K K K K

ARITHMETIK-Operationen
Code ADD SUB MUL DIV DEC INC Erluterung Addiere Subtrahiere Multipliziere Dividiere Erniedrige um 1 Erhhe um 1

Mgliche Operanden Je Programm AB, EB, AW, EW, AD, ED, K Je Baustein Je Netzwerk

Grenzwerte

genau ein Organisations-Baustein max. 499 Pbs oder Fbs (PB1...PB999 bzw. FB1...FB999) 2000 Netzwerke max. 999 Netzwerke max. 255 AWL-Zeilen, max. 24 Sprungmarken max. 13 geffnete Klammern

Heinrich-HertzBerufskolleg Dsseldorf

Automatisierungstechnik

SpA00301
Wagener, OStR
EingangsSignal Zeitablauf ResetSignal AusgangsSignal

Zeitglieder der SPS A120


E2.1

Zeitfunktion Impuls (TI)


AWL U SI DZB L U R = E2.1 T1 100MS K30 E2.2 T1 A3.2 FUP T1 E2.1 100MS K30 E2.2 1^ ZB SW R

Zeit E2.2

A3.2

A3.2

Zeitfunktion Verlngerter Impuls (TV)


= Retriggerbares Monoflop
AWL U SV DZB L U R = E2.1 T1 100MS K30 E2.2 T1 A3.2
E2.1

FUP T1 E2.1 100MS K30 E2.2 1^V ZB SW R


Zeit E2.2

EingangsSignal Zeitablauf ResetSignal AusgangsSignal

A3.2

A3.2

Zeitfunktion Speichernde Einschaltverzgerung (TS) E2.1


AWL U SS DZB L U R = E2.1 T1 100MS K30 E2.2 T1 A3.2 FUP T1 E2.1 100MS K30 E2.2 Ts ZB SW R
Zeit E2.2

EingangsSignal Zeitablauf ResetSignal AusgangsSignal

A3.2

A3.2

Zeitfunktion Einschaltverzgerung (TE)


AWL U SE DZB L U R = E2.1 T1 100MS K30 E2.2 T1 A3.2 FUP T1 E2.1 100MS K30 E2.2 T0 ZB SW R

E2.1 Zeit E2.2

EingangsSignal Zeitablauf ResetSignal AusgangsSignal

A3.2

A3.2

Zeitfunktion Ausschaltverzgerung (TA)


AWL U SA DZB L U R = E2.1 T1 100MS K30 E2.2 T1 A3.2 FUP T1 E2.1 100MS K30 E2.2 0T ZB SW R

E2.1 Zeit E2.2

EingangsSignal Zeitablauf ResetSignal AusgangsSignal

A3.2

A3.2

Die Zeitglieder werden fortlaufend numeriert (T1, T2, T3, ...). Die Zeitbasis 100 MS kann verndert werden (10 oder 1000 MS). Der Sollwert kann statt durch eine Konstante (z. B. K30 =30 x 100 ms =3 s) auch durch ein Merkerwort, Ausgangswort usw. eingestellt werden.

Beispiel "Strung"

Aufgabenstellung: 1. Drei Pumpen bilden eine Wasserversorgung. Wenn eine ausfllt soll Alarm gegeben werden. 2. Aufgrund einer betrieblichen Umstellung ist es nun notwendig, da erst Alarm ausgelst wird wenn zwei Pumpen
ausgefallen sind.

Lsung:
Aufgabe 1: NETZWERK 1 Stoerungsanzeige bei einem Ausfall 0000 :ON E 33.0 0001 :ON E 33.1 0002 :ON E 33.2 0003 := A 33.0 0004 :BE

Aufgabe 2: NETZWERK 1 Stoerungsanzeige bei zwei Ausfaellen 0005 :O( 0006 :UN E 32.0 0007 :UN E 32.1 0008 :U E 32.2 0009 :) 000A :O(

000B :UN E 32.0 000C :U E 32. 000D :UN E 32.2 000E :) 000F :O( 0010 :U E 32.0 0011 :UN E 32.1 0012 :UN E 32.2 0013 :) 0014 := A 32.0 0015 :BE

<<Zurck

Beispiel "Pumpensteuerung"

Das Programm:
NETZWERK 1 0000 :O( 0001 :UN E 32.0 0002 :UN E 32.1 0003 :U E 32.2 0004 :U E 32.3 0005 :) 0006 :O( 0007 :UN E 32.0 0008 :U E 32.1 0009 :U E 32.2 000A :U E 32.3 000B :) 000C :O( 000D :U E 32.0 000E :UN E 32.1 000F :U E 32.2 0010 :U E 32.3 0011 :) 0012 :O( 0013 :U E 32.0 0014 :U E 32.1 0015 :UN E 32.2

0016 :U E 32.3 0017 :) 0018 :O( 0019 :U E 32.0 001A :U E 32.1 001B :U E 32.2 001C :U E 32.3 001D : 001E := M 1.0

NETZWERK 2 0020 :UN M 1.0 0021 := A 32.0 0022 :BE

<<Zurck

Beispiel: Flankenauswertung und Toggle FF Flankenauswertung Eine positive Flanke am Eingang 32.0 soll abgefragt werden. Der Ausgang 32.0 soll fr einen Zyklus auf 1 gesetzt werden, falls die positive Flanke kommt. Toggle FF Mit diesem Ausgang 32.0 soll nun ein Toggle FF angesteuert werden, dessen Ausgang auf 32.7 liegt

ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: Graf FAMILY: Flankenauswertung und RS FF NAME: Vorlesung VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = Flankenauswertung S5 U E 32.0 UN M 32.0 = A 32.0 UN E 32.0 UN M 32.1 = A 32.1

//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started

U = UN =

E M E M

32.0 32.0 32.0 32.1

U S R U S R

A A A A A A

32.0 32.2 32.3 32.1 32.3 32.2

NETWORK //Nr.:2 TITLE= Toggle FF S5 U A U A R M U UN S U = A A M M A

32.0 32.7 32.7 32.0 32.7 32.7 32.7 32.7

NETWORK //Nr.:3

TITLE =

Flankenauswertung S7 E M A E M A A A A A A A 33.0 0.0 33.0 33.0 0.1 33.1 33.0 33.2 33.3 33.1 33.3 33.2

U FP = U FN = U S R U S R

NETWORK //Nr.:4 TITLE= Toggle FF U A U A R M U UN S U = A A M M A

S7 33.0 33.7 33.7 33.0 33.7 33.7 33.7 33.7

END_ORGANIZATION_BLOCK

Beispiel: RS Speicher fr Pumpensteuerung mit Vorrang und Verriegelung 3 Pumpen sollen mit 6 Tastern ein und ausgeschaltet werden. Aus hat jeweils Vorrang. Pumpe 2 und 3 sollen gegeneinander verriegelt sein. Pumpe 1 (A0.0) Pumpe 1 (A0.2) Pumpe 1 (A0.4) Ein Aus Ein Aus Ein Aus (E0.0) (E0.1) (E0.2) (E0.3) (E0.4) (E0.5)

ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: MHJTW FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = U E 0.0 S A 0.0 U E 0.1 R A 0.0 U UN S U R U UN S U R E A A E A E A A E A 0.2 0.4 0.2 0.3 0.2 0.4 0.2 0.4 0.5 0.4

//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started

//Pumpe 1

//Pumpe 2

//Pumpe 3

END_ORGANIZATION_BLOCK

Beispiel: kombinierte Ein- Ausschaltverzgerung Eine kombinierte Ein- Ausschaltverzgerung soll programmiert werden. Ausgang 0.0 wird mit Eingang 0.0 ein und ausgeschaltet, und zwar beim Einschalten um 2s und beim Ausschalten ebenfalls um 2s verzgert.

ORGANIZATION_BLOCK OB1
TITLE = "Ein und Ausschaltverzgerung kombiniert" AUTHOR: Graf FAMILY: SS 2000 NAME: einaus VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1:BYTE //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY:BYTE //1 (Priority of 1 is lowest) OB1_OB_NUMBR:BYTE //1 (Organization block 1, OB1) OB1_RESERVED_1:BYTE //Reserved for system OB1_RESERVED_2:BYTE //Reserved for system OB1_PREV_CYCLE:INT //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE:INT //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert laden L S5T#2S NETWORK //Nr.:2 TITLE= Einschaltverzgerung U E 0.0 SE T 0 U T 0 = M 0.0 NETWORK //Nr.:3 TITLE= Auschaltverzgerung der Einschaltverzgerung U M 0.0 SA T 1 U T 1 = A 0.0 END_ORGANIZATION_BLOCK

Beispiel: Taktgenerator mit einem Timer Ein Taktgenerator soll programmiert werden, der den Ausgang 0.0 mit einer Frequenz f = 1Hz ansteuert. Der Takt soll mit dem Eingang 0.0 ein- und ausgeschaltet werden knnen. Programmieren Sie den Taktgenerator mit 2 Timern. ORGANIZATION_BLOCK OB1
TITLE = "Taktgenerator mit 2 Timern" AUTHOR: Graf FAMILY: SS 2000 NAME: takt_2t VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1:BYTE //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY:BYTE //1 (Priority of 1 is lowest) OB1_OB_NUMBR:BYTE //1 (Organization block 1, OB1) OB1_RESERVED_1:BYTE //Reserved for system OB1_RESERVED_2:BYTE //Reserved for system OB1_PREV_CYCLE:INT //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE:INT //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert laden L S5T#500MS NETWORK //Nr.:2 TITLE= Timer 0 starten wenn Timer 1 =0 und Ein U E 0.0 UN T 1 SI T 0 NETWORK //Nr.:3 TITLE= Timer 1 starten wenn Timer 0 = 0 UN A 0.0 SI T 1 NETWORK //Nr.:4 TITLE= Timer 0 ausgeben U T 0 = A 0.0 END_ORGANIZATION_BLOCK

Beispiel: Taktgenerator mit 2 Timern Ein Taktgenerator soll programmiert werden, der den Ausgang 0.0 mit einer Frequenz f = 1Hz ansteuert. Der Takt soll mit dem Eingang 0.0 ein- und ausgeschaltet werden knnen. Programmieren Sie den Taktgenerator mit 1 Timer. ORGANIZATION_BLOCK OB1
TITLE = "Taktgenerator mit einem Timer" AUTHOR: Graf FAMILY: SS 2000 NAME: takt_1t VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT

//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds)

OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started T_Merker:BOOL //Timer Merker ist alle S = 0 Toggle_Merker:BOOL //Toggle Merker END_VAR BEGIN NETWORK //Nr.:1 TITLE = Zeitwert setzen L S5T#1S NETWORK //Nr.:2 TITLE= T_Merker alle s fuer einen Zyklus auf 0 U E 0.0 UN #T_Merker SV T 0 U T 0 = #T_Merker NETWORK //Nr.:3 TITLE= Ruecksetzen falls Ausgang 1 U A 0.0 UN #T_Merker U E 0.0 R #Toggle_Merker NETWORK //Nr.:4 TITLE= Setzen falls Ausgang 0 UN A 0.0 UN #T_Merker U E 0.0 S #Toggle_Merker NETWORK //Nr.:5 TITLE= Ausgang je nach Togglemerker U #Toggle_Merker = A 0.0 END_ORGANIZATION_BLOCK

Beispiel: Ampel als Zustandsmaschine mit RS FF Eine vereinfachte Ampelanlage soll gesteuert werden. Die Zustnde sind Rot (3s), Gelb (1s) und Grn (2s). Ein Reset ist vorzusehen, bei dem alle Zustnde auf Aus gehen. Mit einem Ein Taster geht die Ampel in den Zustand Rot. Die einfache Ampel ist als Zustandsmaschine mit RS FF auszufhren. Es soll symbolisch programmiert werden. Symbolic Datei
Einschalter Restschalter Rot Merker Gelb Merker Gruen Merker Rot Gelb Gruen Timer Rot Timer Gelb Timer Grn E E M M M A A A T T T 0.0 0.1 0.0 0.1 0.2 0.0 0.1 0.2 0 1 2 BOOL BOOL BOOL BOOL BOOL BOOL BOOL BOOL TIMER TIMER TIMER Ein Reset Merker Rot Merker Gelb Merker Gelb Rot Gelb Grn Timer Rot Timer Gelb Timer Grn

ORGANIZATION_BLOCK OB 100
TITLE = "Complete Restart" AUTHOR: Graf FAMILY: Ampel einfach NAME: Vorlesungsbeispiel VERSION: 1.0 VAR_TEMP OB100_EV_CLASS:BYTE logged in diagnostic buffer OB100_STRTUP:BYTE OB100_PRIORITY:BYTE OB100_OB_NUMBR:BYTE OB100_RESERVED_1:BYTE OB100_RESERVED_2:BYTE OB100_STOP:WORD OB100_STRT_INFO:DWORD OB100_DATE_TIME:DATE_AND_TIME END_VAR BEGIN NETWORK //Nr.:1 TITLE = SET R "Rot Merker" R "Gruen Merker" R "Gruen Merker" BE END_ORGANIZATION_BLOCK

//16#13, Event class 1, Entering event state, Event //16#81/82/83/84 Method of startup //27 (Priority of 1 is lowest) //100 (Organization block 100, OB100) //Reserved for system //Reserved for system //Event that caused CPU to stop (16#4xxx) //Information on how system started //Date and time OB100 started

//Merker Rot //Merker Gelb //Merker Gelb

ORGANIZATION_BLOCK OB1
TITLE = "Zyklisches Hauptprogramm" AUTHOR: Graf FAMILY: Ampel einfach NAME: Vorlesungsbeispiel VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT

//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds)

OB1_MAX_CYCLE:INT //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME:DATE_AND_TIME //Date and time OB1 started Ein_Flankenmerker:BOOL END_VAR BEGIN NETWORK //Nr.:1 TITLE = Flankenerkennung U "Einschalter" //Ein FP M 1.0 = #Ein_Flankenmerker NETWORK //Nr.:2 TITLE= Rot L S5T#3S O "Restschalter" //Reset O "Gelb Merker" //Merker Gelb R "Rot Merker" //Merker Rot O #Ein_Flankenmerker O( U "Gruen Merker" //Merker Gelb UN "Timer Grn" //Timer Grn ) S "Rot Merker" //Merker Rot SV "Timer Rot" //Timer Rot NETWORK //Nr.:3 TITLE= Gelb L S5T#1S O "Restschalter" //Reset O "Gruen Merker" //Merker Gelb R "Gelb Merker" //Merker Gelb U "Rot Merker" //Merker Rot UN "Timer Rot" //Timer Rot S "Gelb Merker" //Merker Gelb SV "Timer Gelb" //Timer Gelb NETWORK //Nr.:4 TITLE= Grn L S5T#2S O "Restschalter" //Reset O "Rot Merker" //Merker Rot R "Gruen Merker" //Merker Gelb U "Gelb Merker" //Merker Gelb UN "Timer Gelb" //Timer Gelb S "Gruen Merker" //Merker Gelb SV "Timer Grn" //Timer Grn NETWORK //Nr.:5 TITLE= Anzeige U "Rot Merker" //Merker Rot S "Rot" //Rot R "Gelb" //Gelb R "Gruen" //Grn U R S R U R R S "Gelb Merker" "Rot" "Gelb" "Gruen" "Gruen Merker" "Rot" "Gelb" "Gruen" //Merker Gelb //Rot //Gelb //Grn //Merker Gelb //Rot //Gelb //Grn //Merker Rot //Merker Gelb //Merker Gelb //Rot //Gelb //Grn

UN "Rot Merker" UN "Gelb Merker" UN "Gruen Merker" R "Rot" R "Gelb" R "Gruen" END_ORGANIZATION_BLOCK

Beispiel: Ampel als Zustandsmaschine mit Zhlern Eine vereinfachte Ampelanlage soll gesteuert werden. Die einfache Ampel ist als Zustandsmaschine mit Zhler auszufhren. Die Zustnde sind Rot (6s, A0.0), Gelb (1s, A0.1) und Grn (3s, A0.2). Ein Reset (E0.1) ist vorzusehen, bei dem die Ampel in den Zustand Rot geht und dort verharrt. Mit einem Ein Taster (E0.0) geht die Ampel ebenfalls in den Zustand Rot, jedoch wird zustzlich der Zhler gestartet. Es soll symbolisch programmiert werden. Die Zhlergrenzen sind als Variable auszufhren, damit eine nderung leicht erfolgen kann. Smbolic Datei
Start Stop Timer0 Timer1 Zhler0 rot gelb gruen Zaehlerwert E E T T Z A A A AB 0.0 0.1 0 1 0 0.0 0.1 0.2 1 BOOL BOOL TIMER TIMER COUNTER BOOL BOOL BOOL BYTE Starttaste Stoptaste Timer 0 Timer 1 Zhler 0 rot gelb gruen Zaehlerwert

ORGANIZATION_BLOCK OB1
TITLE = "einfache Ampel mit Zhler AUTHOR: Graf FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP OB1_EV_CLASS:BYTE OB1_SCAN_1:BYTE OB1_PRIORITY:BYTE OB1_OB_NUMBR:BYTE OB1_RESERVED_1:BYTE OB1_RESERVED_2:BYTE OB1_PREV_CYCLE:INT OB1_MIN_CYCLE:INT OB1_MAX_CYCLE:INT OB1_DATE_TIME:DATE_AND_TIME Takt:BOOL rot_grenze:INT gruen_grenze:INT reset_wert:INT END_VAR BEGIN NETWORK //Nr.:1 TITLE= Grenzen setzen L 5 T #rot_grenze L 7 T #gruen_grenze L 10 T #reset_wert NETWORK //Nr.:2 TITLE = Takt L S5T#500MS U UN SI UN SI "Start" "Timer1" "Timer0" #Takt "Timer1" //Starttaste //Timer 1 //Timer 0 "

//Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) //1 (Priority of 1 is lowest) //1 (Organization block 1, OB1) //Reserved for system //Reserved for system //Cycle time of previous OB1 scan (milliseconds) //Minimum cycle time of OB1 (milliseconds) //Maximum cycle time of OB1 (milliseconds) //Date and time OB1 started //Taktvariable //bis hier rot //ab hier grn //ab hier Zhler rcksetzen

//Timer 1

U "Timer0" = #Takt NETWORK //Nr.:3 TITLE= zhlen U #Takt ZV "Zhler0" NETWORK //Nr.:4 TITLE= rot L "Zhler0" L #rot_grenze <=I = "rot" NETWORK //Nr.:5 TITLE= gelb L "Zhler0" L #rot_grenze >I U( L "Zhler0" L #gruen_grenze <I ) = "gelb" NETWORK //Nr.:6 TITLE= grn L "Zhler0" L #gruen_grenze >=I = "gruen" NETWORK //Nr.:7 TITLE= Zhler rcksetzen L "Zhler0" L #reset_wert ==I R "Zhler0" NETWORK //Nr.:8 TITLE= Anzeige Zhlerwert L "Zhler0" T "Zaehlerwert" END_ORGANIZATION_BLOCK

//Timer 0

//Zhler 0

//Zhler 0

//rot

//Zhler 0

//Zhler 0

//gelb

//Zhler 0

//gruen

//Zhler 0

//Zhler 0

//Zhler 0 //Zaehlerwert

Beispiel: Pulsgenerator mit OB33 und Netzausfallanzeige Ein Pulsgenerator soll ber den OB33 programmiert werden. Ausgang A0.0 soll im Takt von 1Hz ein und ausgeschalten werden. Ausgang A0.7 soll anzeigen fals die Spannung ausgefallen ist.

OB101
ORGANIZATION_BLOCK OB 101 TITLE = "Restart" BEGIN NETWORK //Nr.:1 TITLE = SET S A 0.7 END_ORGANIZATION_BLOCK

OB100
ORGANIZATION_BLOCK OB 100 TITLE = "Complete Restart" BEGIN NETWORK //Nr.:1 TITLE = SET R A 0.7 END_ORGANIZATION_BLOCK

OB33
ORGANIZATION_BLOCK OB 33 TITLE = "Cyclic Interrupt" BEGIN NETWORK //Nr.:1 TITLE = UN A 0.0 = A 0.0 END_ORGANIZATION_BLOCK

Beispiel: Analogeingabe, Wandlung und Anzeige der Spannung als BCD Wert Auf dem ersten Steckplatz soll ein Analogeingangsmodul gesteckt werden. Der erste Kanal soll eingelesen werden. Die Konfiguration ist 10 V. Auf Ausgang AW0 soll der Analogwert als 4 Digit BCD Wert dargestellt werden. Negative Werte sollen durch Ausgang A2.0 dargestellt werden
ORGANIZATION_BLOCK OB1 TITLE = "Zyklisches Hauptprogramm" AUTHOR: MHJTW FAMILY: nb NAME: nb VERSION: 1.0 VAR_TEMP . // negativ:BOOL END_VAR BEGIN NETWORK //Nr.:1 TITLE = U #negativ R #negativ L PEW 256 L W#16#9000 <D POP SPB pos INVI S #negativ pos :NOP 1 DTR L 2.764800e+04 /R L *R T L *R RND DTB T U =

lokale Variable //Bit ob Analogwert positiv oder negativ

//falls vorher negativ //vorbelegt positiv //Analogwert einlesen //kleister negativer Wet //positiv //Analogwert zurck in Akku1 //weitere Bearbeitung //1 Komplement Akku1_L //negativ merken //double to real //6C00 = 10V = 27648 //93FF = -10V //normieren auf 1

1.000000e+01 //Real Darstellung 10V = 10 MD 0 1.000000e+02 //Real Darstellung 10V = 1000 //Real nach Double //Double nach BCD AW #negativ A 0 //positiv oder negativ 2.0

END_ORGANIZATION_BLOCK

You might also like