s7kurs2000

  • Upload
    ww01

  • View
    387

  • Download
    5

Embed Size (px)

Citation preview

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

Programmieren mit STEP7

EinfhrungDieses 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

HomeDipl.Ing. Norbert Heinlein

nchsteFH Frankfurt, Labor fr Automatisierungstechnik

Inhalt1 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

nchsteDipl.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 Programmierumgebung1.1 ProgrammiergertAls 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 STEP72.1 ProgrammstrukturSTEP7-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

nchsteDipl.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.

Priorittniedrigste

OB-NrOB1 OB10 OB35 OB40 OB80 OB100 OB122

NameZyklus Uhrzeitalarm Weckalarm Prozessalarm Zykluszeitfehler Anlauf Baugruppenfehler

Systemereignisam 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 DatentypenJeder 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:

TypBOOL BYTE WORD DWORD CHAR INT DINT REAL TIME DATE TOD S5TIME

Anzahl Beschreibung Bit1 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:

WertebereichTRUE, 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 ANYANY 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 VariablennamenBei 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 SymboltabelleDamit 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 ArtSymbol 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

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

2.6.3 Globale VariableGlobale 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 DeklarationLokale 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: Typin out in_out temp

BeschreibungEingangsparameter 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

Zugrifflesen schreiben lesen, schreiben lesen, schreiben

zulssig inFB, 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 DatentypenMit den Schlsselnamen ARRAY, STRUCT, STRING lassen sich Variable deklarieren, die aus elementaren Datentypen zusammengesetzt sind.

2.6.5.1 ARRAYEin 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 STRUCTEine 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 STRINGEine 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.SpeicherbereichPAE Prozeabbild der Eingnge

Zugriff ber Einheiten der folgenden GreEingang (Bit) EingangsByte EingangsWort EingangsDoppelwort

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

BeschreibungPAE 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 IFME0.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 RemanenzNormalerweise 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 AdressierungIst 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 AdressierungBei 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 PointerVariablen 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 DatentypByte 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, DoppelwortEs 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

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

3 Beispiele in FUP/KOP und AWL3.1 Logische VerknpfungDie 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 = 0..999 Neben dem Rckwrtszhler Vorwrtsund wrtszhler. dargestellten gibt es auch Vorwrts/Rck

3.5

Arithmetische Operation

Addition zweier Integerzahlen.

3.6

BausteinaufrufGezeigt 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 CPU4.1 Betriebszustnde und bergngeDie 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 AnwenderprogrammsProgramm-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 NetzausfallBatteriepufferung 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-Arbeitsplatz5.1 Ein STEP7 Programm erstellenFr 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 startenSie 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 erzeugenLegen 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 parametrierenDie 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

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

5.1.6 Erstellen einer SymboltabelleSinn 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. SymbolZhlen Reset Zeit1 Zeit2 Zhl_Dual Zhl_BCD Zhl_Q

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

DatentypBOOL BOOL WORD WORD WORD WORD BOOL

KommentarZhlerstand 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 EditierenSie 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

nchsteDipl.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 CPUBevor 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 bertragenIm 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 startenBringen 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 ManagerSIMATIC 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 TesthilfeHierbei 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 SteuernSie 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 DeklarationsteilDie 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 AWLAnweisungsteil 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 FunktionAufruf 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 SchrittDiese 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 ffnenVorteil 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