Grundlagenpraktikum: Versuch Nr. 27. Einführung in die SPS-Programmierung



Ähnliche Dokumente
J. Prof. Dr.-Ing. Georg Frey Juniorprofessur Agentenbasierte Automatisierung. Laborunterlagen zum Themengebiet Steuerungstechnik. zusammengestellt von

Artikel Schnittstelle über CSV

Urlaubsregel in David

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Folgeanleitung für Fachlehrer

Text-Zahlen-Formatieren

Mediator 9 - Lernprogramm

Übung -- d002_ampelsteuerung

Folgeanleitung für Klassenlehrer

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Stammdatenanlage über den Einrichtungsassistenten

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Kapitel 3 Frames Seite 1

V o r w o r t. A n l e i t u n g

Eigenen Farbverlauf erstellen

Arbeiten mit UMLed und Delphi

3. GLIEDERUNG. Aufgabe:

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Dokumentation IBIS Monitor

Handbuch B4000+ Preset Manager

Erzherzog Johann Jahr 2009

12. Dokumente Speichern und Drucken

Einkaufslisten verwalten. Tipps & Tricks

3 ORDNER UND DATEIEN. 3.1 Ordner

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Newsletter. 1 Erzbistum Köln Newsletter

Produktschulung WinDachJournal

Anleitungen zum KMG- -Konto

Datensicherung. Beschreibung der Datensicherung

32.4 Anpassen von Menüs und Symbolleisten 795i

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Informatik 1 Tutorial

PDF-Erzeugung mit PDFCreator (nur für Windows, installiert universellen PDF-Druckertreiber) v11/01

Seriendruck mit der Codex-Software

Überprüfung der digital signierten E-Rechnung

SANDBOXIE konfigurieren

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Die Erstellung eigener Strukturprofile

Inhalt. Inhalt Voraussetzungen Liegenschaften und Adressen auswählen Abgleich mit Internet-Office Dokumente...

Seite Wo finde ich die Landingpage Auswahl? Seite Wie aktiviere ich eine Landingpage? Seite

Anleitung zur Verwendung der VVW-Word-Vorlagen

Anleitung zur Einrichtung eines Netzwerkes für den Gebrauch von GVService unter Windows 7

Bauteilattribute als Sachdaten anzeigen

OWA Benutzerhandbuch. Benutzerhandbuch Outlook Web App 2010

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz

LPT1 Anschluss mit PCMCIA Karte

Refresh vom Vortag. Kommunikation zur SPS (2) Hardwaretest Variablenfenster

tentoinfinity Apps 1.0 EINFÜHRUNG

OS Anwendungsbeschreibung

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

efa elektronisches Fahrtenbuch im Berliner Ruder-Club

Microsoft Access 2013 Navigationsformular (Musterlösung)

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

Erstellen von Mailboxen

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Hilfe zur Dokumentenverwaltung

Dokumentation: Balanced Scorecard

TopKontor - Kurzleitfaden

Netzwerk einrichten unter Windows

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

S7-Hantierungsbausteine für R355, R6000 und R2700

Zahlen auf einen Blick

Professionelle Seminare im Bereich MS-Office

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Klicken Sie mit einem Doppelklick auf das Symbol Arbeitsplatz auf Ihrem Desktop. Es öffnet sich das folgende Fenster.

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Informatik I Tutorial

1. Einführung. 2. Die Abschlagsdefinition

Registrierung am Elterninformationssysytem: ClaXss Infoline

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

Programme im Griff Was bringt Ihnen dieses Kapitel?

Aufrufen des Konfigurators über eine ISDN- Verbindung zur T-Eumex 628. Eine neue ISDN-Verbindung unter Windows XP einrichten

Zwischenablage (Bilder, Texte,...)

Erstellen einer digitalen Signatur für Adobe-Formulare

Grundlagen der Theoretischen Informatik, SoSe 2008

Handbuch. ECDL 2003 Professional Modul 3: Kommunikation. Signatur erstellen und verwenden sowie Nachrichtenoptionen

Tutorial -

Inbetriebnahme Profinet mit Engineer. Inhaltsverzeichnis. Verwendete Komponenten im Beispiel:

Outlook 2000 Thema - Archivierung

Kommunikations-Management

Allgemeine USB Kabel Installation und Troubleshooting

Eltako FVS. Verwendung von Systemfunktionen. Grenzenlose Flexibilität und Komfort in der Gebäudeinstallation

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

1. Allgemeines. Mit der Vertragsverwaltung können u.a.

Einfügen von Bildern innerhalb eines Beitrages

6 Das Kopieren eines bereits bestehenden Inhaltselements

Pascal-Compiler für den Attiny

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

Anleitung für das Content Management System

Transkript:

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Grundlagenpraktikum: Versuch Nr. 27 Einführung in die SPS-Programmierung Durchführungsort: 2.145 Weitere Infos und Unterlagen unter www.ias.uni-stuttgart.de/glp IAS Universität Stuttgart Pfaffenwaldring 47 D-70550 Stuttgart Telefon (0711) 685-67301 Telefax (0711) 685-67302 ias@ias.uni-stuttgart.de www.ias.uni-stuttgart.de Teilnehmerunterlagen

Institut für Automatisierungs- und Softwaretechnik 2 0 Inhaltsverzeichnis 0 INHALTSVERZEICHNIS... 2 1 EINFÜHRUNG... 3 1.1 Speicherprogrammierbare Steuerungen (SPS)... 3 1.2 Die SPS Siemens SIMATIC S7... 4 1.3 Programmieransätze nach Norm DIN EN 61131... 5 1.3.1 Anweisungsliste (AWL)... 5 1.3.2 Kontaktplan (KOP)... 5 1.3.3 Funktionsplan (FUP)... 5 1.3.4 Strukturierter Text (ST)... 6 1.3.5 Ablaufsprache (AS)... 6 1.4 Die Entwicklungsumgebung STEP7... 7 1.5 Die Umsetzung der Programmieransätze in STEP7... 8 1.5.1 Der Editor für AWL, KOP und FUP... 8 1.5.2 S7-GRAPH... 8 2 VERSUCHSTERMIN... 9 2.1 Ansteuerung eines Lichts... 9 2.2 Erweiterung auf die ganze Ampel... 13 2.3 Einsatz von Schaltzeiten... 13 2.4 Außer-Betrieb-Setzen der Ampel... 15 3 ANHANG... 20 3.1 Definition der Steuerung... 20 3.2 Programmiersprachen in STEP7 - Befehle und Syntax... 20 3.2.1 AWL... 20 3.2.2 S7-GRAPH... 21 3.3 Abbildungsverzeichnis... 22 3.4 Literaturhinweise... 22

Institut für Automatisierungs- und Softwaretechnik 3 1 Einführung Dieser Umdruck sollte vor dem Versuchsbeginn durchgearbeitet werden. Er enthält Informationen, Beispiele, Anleitungen und begleitende Aufgaben für die Versuchsdurchführung. Die VORBEREITUNGSFRAGEN müssen vor dem Versuchstermin beantwortet bzw. bearbeitet werden. Die AUFGABEN sind während der Versuchsdurchführung zu bearbeiten. Ziel des Versuchs ist die Realisierung der Steuerung einer Lichtzeichenanlage, die den Verkehr auf einer Straßenkreuzung regeln soll. 1.1 Speicherprogrammierbare Steuerungen (SPS) Das Einsatzgebiet speicherprogrammierbarer Steuerungen (SPS) reicht von der einfachen Steuerung eines automatischen Tores mit wenigen Signalein- und -ausgängen bis zu komplexen Fertigungsanlagen mit einer großen Anzahl von Ein- und Ausgängen. Gegenüber einer Kontaktsteuerung mit fest verdrahteter Ablauflogik beschränkt sich der Verdrahtungsaufwand bei einer SPS auf den Anschluß der Sensoren und Aktoren. Die Verdrahtung der logischen Funktionen entfällt und wird durch das Programm der SPS ersetzt. Durch Verändern des Programms lässt sich eine SPS leicht an geänderte Betriebsbedingungen anpassen. In Abbildung 1-1 ist der prinzipielle Aufbau einer SPS dargestellt. Eine SPS besteht mindestens aus der Stromversorgung, einer Kerneinheit mit CPU und Speicher, und einem Ein- und / oder Ausgangsmodul. Dieser minimale Aufbau zusammen mit der Programmierperipherie und den Lichtsignalanlagen bilden den Aufbau in diesem Versuch. Abbildung 1-1: Prinzipieller Aufbau einer SPS

Institut für Automatisierungs- und Softwaretechnik 4 1.2 Die SPS Siemens SIMATIC S7 Die im Versuch verwendete Siemens SIMATIC S7-300 ist eine Kompakt-SPS, in die ein Modul mit 24 digitalen Eingängen, 16 digitalen Ausgängen und verschiedenen analogen Einund Ausgängen integriert ist. Sie wird über einen PC programmiert. Das fertige Programm wird auf die SPS kopiert und dort ausgeführt. Zur komfortablen Programmierung der SPS dient die im späteren Verlauf beschriebene Entwicklungsumgebung STEP7. Mit ihr ist eine Programmierung in den Programmiersprachen AWL, KOP, FUP, SCL und einer Ablaufsprache (AS) namens S7- GRAPH möglich. Die einzelnen Programmiersprachen und STEP7 werden in den folgenden Kapiteln kurz vorgestellt. Die Zustände der digitalen Ein- und Ausgänge der S7 sind in einem Speicherabschnitt abgebildet. Die Einteilung der Ein- und Ausgänge erfolgt deshalb Byteweise, das heißt immer 8 Ein- oder 8 Ausgänge bilden jeweils einen Block, der dann sehr einfach binär auf dem Speicher abgebildet werden kann. Jeder Ein- beziehungsweise Ausgang wird durch ein Bit repräsentiert, wobei eine 0 für die Abstinenz und eine 1 für die Existenz eines Signals steht. Die Adressierung der Ein- und Ausgänge in einem Programm besteht aus einem E für Eingang beziehungsweise A für Ausgang mit nachgestellter Byte- und einer durch einen Punkt getrennten Bitnummer innerhalb des Bytes. Byte- und Bitnummerierung beginnen bei 0. Beispiel: Der dritte Ausgang im zweiten Byte würde mit A1.2 adressiert Der erste Eingang im ersten Byte würde mit E0.0 adressiert. Auf der SPS sind alle Angaben auf Englisch, das heißt E ist DI ( Digital input ) und A ist DO ( Digital output ). Abbildung 1-2 zeigt die Draufsicht auf die Kerneinheit der SPS. Rechts sieht man die integrierten Steckereinschübe, an die die Ein- und Ausgangsleitungen angeschlossen sind. Man erkennt auch die byteweise Gruppierung der Ein- und Ausgänge. Die seitlich integrierten LEDs zeigen den aktuellen Schaltzustand an. Abbildung 1-2: Draufsicht auf die SPS-Kerneinheit mit integrierten Modulen

Institut für Automatisierungs- und Softwaretechnik 5 1.3 Programmieransätze nach Norm DIN EN 61131 In diesem Kapitel sollen die einzelnen genormten Programmieransätze anhand eines kleinen Beispiels einer UND-Verknüpfung kurz vorgestellt werden. 1.3.1 Anweisungsliste (AWL) Die Anweisungsliste kann als Assemblersprache der SPS-Programmierung angesehen werden. Sie wirkt recht kryptisch und unübersichtlich. Eine Programmierung größerer Anwendungen in AWL ist daher nicht empfehlenswert. In Abbildung 1-3 ist die Realisierung des Beispiels in AWL zu sehen. Ein vorgestelltes U markiert die UND-verknüpften Adressen, = bedeutet eine Zuweisung des Ergebnisses der vorangehenden Anweisung(en) an die nachgestellte Adresse. Abbildung 1-3: UND-Verknüpfung in AWL 1.3.2 Kontaktplan (KOP) Im Kontaktplan werden die Ein- und Ausgänge durch Schalter und Schütze symbolisiert. Man sieht auf der linken und rechten Seite jeweils eine Stromlaufschiene, zwischen die die Schaltelemente platziert werden. Wird nun ein Eingang (Schalter) geschlossen fließt durch selbigen Strom, der je nach Schaltung einen Ausgang (Schütz) durchsteuert oder andere Prozesse in Gang setzt. In den Abbildungen 1-4 ist das Beispiel in KOP umgesetzt. Abbildung 1-4: UND in KOP 1.3.3 Funktionsplan (FUP) Ein Funktionsplan besteht aus verschiedenen Funktionsblöcken mit Eingängen und Ausgängen. Im Funktionsplan wird anhand von logischen Schaltungen (im binären Fall), wie in der Technischen Informatik programmiert. In den Abbildungen 1-5 sind die Beispiele in einem Funktionsplan realisiert. Abbildung 1-5: UND als Funktionsplan

Institut für Automatisierungs- und Softwaretechnik 6 1.3.4 Strukturierter Text (ST) Strukturierter Text ist wie AWL eine textuelle Programmiersprache. ST ähnelt aber eher den frühen Hochsprachen wie BASIC oder PASCAL. Es gibt komplexere Sprachelemente wie zum Beispiel Schleifen oder Bedingungen um den Programmfluss zu steuern. Abbildung 1-6 zeigen die kurzen Codefragmente für die Beispiele. Abbildung 1-6: UND in Strukturiertem Text 1.3.5 Ablaufsprache (AS) Ablaufsprachen beruhen auf dem Modell der Petri-Netze. Sie sind aufgebaut aus sogenannten STELLEN, TRANSITIONEN und KANTEN. Eine Stelle im Modell ist vergleichbar mit einem Zustand in der Realität. Transitionen hingegen kennzeichnen Ereignisse, die zum Zustandsübergang führen, sind also Weiterschaltbedingungen. Stellen und Transitionen sind über Kanten miteinander verbunden, und zwar so, dass eine Kante immer genau eine Stelle mit einer Transition verbindet (siehe Abbildungen 1-7). KANTE STELLE TRANSITION Abbildung 1-7: Einfachstes Petri Netz Ist eine Stelle aktiviert, so erhält sie im Modell ein Token (Markierung, hier durch einen Punkt gekennzeichnet). Sind alle zum Weiterschalten erforderlichen Bedingungen erfüllt, so schaltet die Transition. Dabei werden alle unmittelbar vor der Transition liegenden Stellen deaktiviert und alle unmittelbar nachfolgenden Stellen aktiviert. Ein Beispiel: vorher nachher Abbildung 1-8: Zustand des Petri Netzes vor und nach Durchschalten der Transition

Institut für Automatisierungs- und Softwaretechnik 7 1.4 Die Entwicklungsumgebung STEP7 Die Entwicklungsumgebung STEP7 wird zur Erstellung der SPS-Programme verwendet. Sobald das Programm gestartet wurde erscheint ein Assistent um ein neues Projekt anzulegen. Der Assistent hilft die erforderlichen Grundeinstellungen festzulegen. So muss zum Beispiel der richtige CPU, in unserem Fall der CPU314C-2 DP, eingestellt werden und dem Projekt muss einen Namen gegeben werden. Nach Fertigstellung des Assistenten erscheint der Projektexplorer, welcher das zentrale Element der Entwicklungsumgebung ist. Er funktioniert wie die meisten Datei-Explorer. Abbildung 1-9: Der Projektexplorer Wenn man den Baum einmal komplett expandiert kann man die Grundstruktur eines Projekts in STEP7 erkennen. Der Wurzelknoten ist immer das Projekt selbst. Innerhalb des Projekts kann es mehrere verschiedene Stationen geben (In unserem Fall gibt es nur eine Station). Jeder Station ist eine CPU zugeordnet. Innerhalb der CPU befindet sich die Anwendung beziehungsweise ein Programm. Ein Programm wiederum besteht aus Quellen und Bausteinen. In den Menüs gibt es eine Vielzahl an verschiedenen Optionen und Konfigurationsmöglichkeiten, deren genauere Beschreibung im Rahmen dieses Grundlagenpraktikums nicht vorgenommen werden kann. Bevor man mit der Programmierung loslegen kann muss man noch einige Einstellungen durchführen. Diese Konfigurationen müssen jedes Mal, wenn ein neues Projekt erstellt wird an die verwendete Hardware angepasst werden. Nachdem alles korrekt eingestellt ist speichert man die Konfiguration und schließt die Konfigurationsanwendung. Die Konfiguration muss jetzt nur noch auf die SPS geladen werden. Zuerst muss die CPU urgelöscht werden, das heißt alle Daten und Konfigurationen bis auf die systemeigenen Daten werden zurückgesetzt. Dazu wird der Betriebszustandsschalter an der eingeschalteten SPS auf STOP gestellt. Man markiert den Stationsknoten im Projektexplorer und wählt aus dem Menu > Zielsystem > Urlöschen. Danach muss man die Konfiguration laden. Man markiert wieder den Stationsknoten und wählt dieses Mal aus dem Menu > Zielsystem > Laden aus. Jetzt kann mit der Programmierung begonnen werden.

Institut für Automatisierungs- und Softwaretechnik 8 1.5 Die Umsetzung der Programmieransätze in STEP7 Die Programmierung einer SPS basiert in STEP7 ausschließlich auf Bausteinen beziehungsweise Quellen. Es gibt verschiedene Typen von Bausteinen, je nachdem was für eine Funktion sie erfüllen. Man erkennt den Typ an ihrem Namen, der mit der eindeutigen Abkürzung für den Bausteintyp beginnt. Für das Praktikum wichtige Bausteintypen sind Organisationsbausteine (OB), Funktionsbausteine (FB), Funktionen (FC) und Datenbausteine (DB). Manche Bausteine können nur in bestimmten Programmiersprachen erstellt werden. Andere Bausteine hängen von einem mit ihnen assoziierten Baustein eines bestimmten Typs ab. Diese Fälle werden in den folgenden Kapiteln und wenn sie für das Praktikum relevant sind an entsprechender Stelle erklärt. Die im Namen auf die Typbezeichnung folgende Nummer dient der genauen Identifizierung der Bausteine. Sie wird bei der Erstellung neuer Bausteine einfach inkrementiert. Der Urbaustein in dem die Programmabarbeitung beginnt ist immer der Baustein OB1. Man kann das Programm direkt in diesem Baustein implementieren oder erstellt eigene Bausteine, die aus OB1 heraus aufgerufen werden. In OB1 kann nur in AWL, KOP und FUP programmiert werden. Im Anhang befindet sich ein Überblick zur Syntax und zu den Befehlen der einzelnen, hier beschriebenen Programmiersprachen in STEP7. 1.5.1 Der Editor für AWL, KOP und FUP Wenn man im Projektexplorer im Knoten Bausteine auf einen Baustein doppelt klickt, der in AWL, KOP oder FUP erstellt wurde, öffnet sich der Editor in Abbildung 1-10. Abbildung 1-10: Der Editor für AWL, KOP und FUP Im Menü > Ansicht kann zwischen den drei Programmiersprachen hin- und hergeschaltet werden. Im Hauptfenster in der Mitte des Anwendungsbereiches wird das Programm erstellt. In AWL werden die Anweisungen einfach zeilenweise in den Bereich unter dem Kommentarfeld des Netzwerks eingegeben. In KOP werden die Programmelemente eingefügt indem man die Stelle markiert an der das Element eingefügt werden soll und in der Funktionsleiste auf der linken Seite oder im Menü > Einfügen das entsprechende Elemente auswählt. Gleiches gilt für die Programmiersprache FUP. 1.5.2 S7-GRAPH S7-GRAPH setzt das Prinzip einer Ablaufsprache um. Man programmiert mit Schritten und Transitionen. Zu jedem Schritt gehört ein Aktionsblock, der die Aktionen enthält, die während des Schrittes abgearbeitet werden. Die Programmierung der Aktionen erfolgt in einer

Institut für Automatisierungs- und Softwaretechnik 9 textuellen Sprache nach festen Regeln, deren Einzelheiten im Anhang und den entsprechenden Stellen näher beschrieben sind. Abbildung 1-11: Der Editor für S7-GRAPH-Bausteine Die Bedingungen für die Transitionen können nur in KOP oder FUP programmiert werden. Zwischen den beiden Programmiersprachen kann im Menü > Ansicht umgeschaltet werden. In der Funktionsleiste am linken Rand sind, je nachdem welchen Typ das gerade ausgewählte Element hat, unterschiedliche Schaltflächen aktiv, über die man zusätzliche Elemente einfügen kann. Wenn man ein fertig gestelltes Programm speichert, wird es sofort übersetzt. 2 Versuchstermin Dieser Abschnitt befasst sich mit der Einführung in die Bedienung und Programmierung der SPS. Zunächst wird die Steuerung einer einzelnen Ampel programmiert. Dabei werden die nötigen Schritte nacheinander beschrieben und die Möglichkeiten erläutert, die die Programmierung mit STEP7 zur Umsetzung der Forderungen bietet. 2.1 Ansteuerung eines Lichts Nachdem mit dem Assistenten ein neues Projekt angelegt wurde mit dem Namen Gruppe<Gruppennummer>Termin<Terminnummer>, alle Einstellungen vorgenommen wurden und der Programmknoten noch in Ampelprogramm umbenannt wurde kann mit dem programmieren angefangen werden. In einem ersten Schritt wird die Ampel so programmiert, dass lediglich das rote Licht dauernd leuchtet. Der mit diesem Licht verbundene Ausgang hat die Nummer 0.0. Um das Programm von vornherein gut lesbar zu gestalten, wird zunächst ein Name, in STEP7 auch Symbol genannt, für diesen Ausgang definiert. Dazu dient die Symboltabelle im Programmknoten des Projektbaums.

Institut für Automatisierungs- und Softwaretechnik 10 Bei einem Doppelklick auf das Icon Symbole erscheint ein Editor. Die Symbole müssen eindeutig sein. Jeder Adresse darf nur ein Symbol zugewiesen werden. In unserem Fall heißt das Symbol RotLicht. Im Adressfeld muss A0.0 eingetragen werden (A steht für Ausgang, 0.0 für erstes Bit im ersten Byte im Ausgangsadressbereich). Der Datentyp wird automatisch ausgefüllt. Die Tabelle sollte dann wie Abbildung 2-1 aussehen. Abbildung 2-1: Die Symboltabelle Nachdem man die Symboltabelle gespeichert und den Editor geschlossen hat geht es an die Programmierung des ersten Programms. Zuerst muss man einen Baustein in das Projekt einfügen. Dies macht man allgemein indem man im Projekt-explorer den Baustein- knoten auswählt und diesen mit der rechten Maustaste anklickt um das Kontextmenü zu öffnen. Abbildung 2-2: Das Kontextmenü zum Bausteinknoten In GRAPH ist es nur möglich Funktionsbausteine zu schreiben. Eine genauere Erklärung hierzu erfolgt später. Man wählt also im Kontextmenü Neues Objekt einfügen > Funktionsbaustein. Es öffnet sich ein Dialog in dem man die Bausteineigenschaften einstellen kann. Der Name des Bausteins wird, wie in Kapitel 1.4 beschrieben, automatisch vergeben. Er muss hier auch nicht verändert werden. Im Feld Symbolischer Name wird Ampelsteuerung eingetragen. In der Auswahlliste Erstellsprache wird GRAPH eingestellt. Die restlichen Einstellungen können beibehalten werden. Der Dialog wird mit OK bestätigt. Abbildung 2-3: Die Bausteineigenschaften von Funktionsbausteinen

Institut für Automatisierungs- und Softwaretechnik 11 Da die Erstellsprache auf GRAPH eingestellt ist, öffnet sich bei einem Doppelklick auf FB1 automatisch der S7-GRAPH-Editor. Mit seiner Hilfe wird der Baustein erstellt. Die Ampel nimmt während der gesamten Laufzeit nur einen einzigen Zustand an. Prinzipiell sind also alle Elemente, die für dieses Beispiel benötigt werden, beim Starten des Editors schon vorhanden. Es gibt einen Initialschritt (der Schritt mit einem doppelten Rand), der den Startpunkt für den Programmablauf innerhalb eines GRAPH-Bausteins darstellt, mit zugehörigem Aktionsblock und einer Transition mit einer leeren Bedingung. Die Elemente müssen nur noch richtig benannt und mit Leben gefüllt werden. Der Schritt wird ZeigeRot genannt, die Transition WechselZuRot. Um einen zyklischen Verlauf zu bekommen muss am Ende der Schrittkette, an die Transition WechselZuRot, noch ein Sprung auf den Startknoten eingefügt werden. Dazu muss man die Transition auswählen. Im oberen Bereich der Funktionsleiste auf der linken Seite sollten dann die Symbole für das Einfügen von Schritt und Transition, Sprung und Kettenende aktiviert sein. Man klickt auf die Schaltflache für Sprung und wählt als Sprungziel den Initialschritt ZeigeRot durch einen einfachen Klick mit der Maus auf den Schritt. Jetzt fehlt nur noch die Aktion, die während ZeigeRot ausgeführt werden soll. Um eine Aktion in den Aktionsblock einzufügen, macht man einen Rechtsklick auf den Aktionsblock. Im ersten Eingabefeld wird die Aktion, die ausgeführt werden soll, genauer spezifiziert. Jeder Aktionstyp hat ein Abkürzungssymbol, das im ersten Feld eingetragen wird. Je nachdem was für ein Aktionstyp gewählt wurde, muss in dem zweiten Feld ein entsprechender Operand eingegeben werden auf den die Operation angewendet wird. Die wichtigsten dieses Aktionstypen sind im Anhang näher beschrieben. Wir müssen in unserem Programm eine der grundlegendsten Operationen durchführen der Ausgang soll solange aktiv sein, wie das Programm im Schritt ZeigeRot ist. Die Abkürzung für diesen Befehl ist ein N, das man in das erste Feld einträgt. Man kann mit dieser Aktion beliebige boolesche Variablen setzten, solange der zugehörige Schritt aktiv ist auf true beziehungsweise ein Bit auf 1. In unserem Fall ist diese boolesche Variable der Ausgang A0.0, also das erste Bit im ersten Byte des Ausgangsspeicherabbildes, den wir oben mit RotLicht bezeichnet hatten. Man kann in das zweite Feld nun die absolute Adresse A0.0 oder, einfach aus Gründen der Übersichtlichkeit und Verständlichkeit, den symbolischen Namen RotLicht eintragen. Das N steht für nicht speichernd, das heißt sobald der Schritt nicht mehr aktiv ist, wird auch die Variable zurückgesetzt. Der fertige Ablauf sollte dann etwa so aussehen, wie in Abbildung 2-4 dargestellt. Da die Transition immer durchschaltet, wechselt das Programm während des Ablaufs immer vom Schritt ZeigeRot in den Schritt selbst, weshalb die Ampel folglich immer Rot zeigt. im S7-GRAPH-Editor als Petri-Netz Schritt ZeigeRot Transition WechselZuRot Abbildung 2-4: Das erste Programm

Institut für Automatisierungs- und Softwaretechnik 12 Der Baustein muss nun nur noch gespeichert werden. Wenn man einen GRAPH-Baustein speichert wird er direkt übersetzt. Wenn man sich die Ansicht des Knotens Bausteine jetzt einmal näher ansieht bemerkt man, dass einige Bausteine automatisch hinzugefügt wurden. Dazu gehören einige Systembausteine und ein Datenbaustein DB1. Zu jedem Funktionsbaustein in GRAPH gehört ein Datenbaustein ohne den er nicht lauffähig wäre. Im Datenbaustein sind alle wichtigen Informationen über den Funktionsbaustein gespeichert. Dieser Datenbaustein ist auch für den nächsten Schritt wichtig. Da der Programmablauf immer im Organisationsbaustein OB1 beginnt muss man aus diesem Baustein heraus den Funktionsbaustein mit unserem gerade erstellten Programm aufrufen. Mit einem Doppelklick auf OB1 öffnet sich der Editor. In den Programmierbereich des Editors schreibt man die Zeile CALL FB1, DB1 und drückt die Eingabetaste. Daraufhin wird FB1 durch den symbolischen Namen Ampelsteuerung ersetzt und es erscheint eine Reihe von Eingabeparametern (die übrigens auch im Datenbaustein DB1 gespeichert sind). Für uns sind diese Parameter momentan noch nicht von Bedeutung. Man kann den OB1, wenn er wie in Abbildung 2-5 aussieht abspeichern und den Editor schließen. Abbildung 2-5: Der Aufruf des Funktionsbausteins aus OB1 heraus Die Konfiguration und das Programm, also die Bausteine, müssen jetzt nur noch auf die SPS geladen werden. Dazu stellt man zuerst den Betriebszustandsschalter der eingeschalteten SPS (siehe Abbildung 1-2) auf STOP. Dann wählt man im Projektexplorer den Knoten Bausteine aus und öffnet mit einem Rechtsklick auf den Knoten das Kontextmenü. In diesem Menü wählt man Zielsystem > Laden. Vorbereitungsfrage 1: Erstellen sie für die für die Programmieransätze AWL, FUP, KOP und ST jeweils eine ODER-Verknüpfung mit zwei Eingängen. Aufgabe 1: Erstellen Sie das Projekt und die Ressourcen wie oben beschrieben. Laden Sie das Programm auf die SPS. Stellen Sie den Betriebszustandsschalter auf RUN und beobachten und diskutieren Sie das Ergebnis.

Institut für Automatisierungs- und Softwaretechnik 13 2.2 Erweiterung auf die ganze Ampel In einem zweiten Schritt wird nun die Steuerung auf die ganze Ampel ausgedehnt. Das Vorgehen soll völlig analog zur vorigen Aufgabe sein. Anstatt ein neues Projekt anzulegen, wird das bestehende Projekt aber nur erweitert. Vorbereitungsfrage 2: Bitte erstellen Sie auf einem getrennten Blatt die zu dieser Aufgabenstellung passende Schrittkette mit vier Schritten (wie die Ampelphasen einer realen Ampel). Benutzen Sie analoge Bezeichnungen (Gelblicht, GruenLicht). (Hinweis Petri-Netz) Bemerkung: In einem Aktionsblock können mehrere Aktionen stehen (zum Beispiel zwei Lichter, die gleichzeitig leuchten sollen). Weitere Aktionen werden einem Aktionsblock durch gleiches Vorgehen, wie bei der ersten Aktion hinzugefügt. Die Aktionen werden dann in einer einfachen Liste unter dem Aktionsblock angezeigt. Vorbereitungsfrage 3: Was wird die Ampel vermutlich anzeigen, wenn sie mit diesem Programm in Betrieb genommen wird? Woran liegt das? Aufgabe 2: Ergänzen Sie die Symboltabelle mit den Einträgen für die neuen Ausgänge. Das gelbe Licht ist an Ausgang A0.1, das grüne Licht an Ausgang A0.2 angeschlossen. Erstellen Sie die von Ihnen im Vorfeld erarbeitete Schrittkette im GRAPH-Editor, indem Sie den vorhandenen Baustein FB1 um die neuen Schritte und Transitionen ergänzen. Nehmen Sie das Programm in Betrieb und diskutieren Sie auch hier das Ergebnis. (Vergessen sie das Urlöschen nicht!) 2.3 Einsatz von Schaltzeiten Um einen Zustand für eine bestimmte Zeitdauer zu halten, bevor die Transition schalten kann, muss zuerst die Zeitdauer festgelegt werden. Um allgemein Daten zu speichern benötigt man einen Datenbaustein. Jeder Funktionsbaustein hat einen solchen Datenbaustein um seinen inneren Zustand zu speichern. Wir stellen die Variablen einfach in einem separaten globalen DB zur Verfügung. Dazu muss man zunächst einen Datenbaustein erstellen. Es erscheint ein Konfigurationsdialog. In diesem Dialog müssen nur zwei Änderungen gemacht werden. Zum einen wird der Name des Bausteins in DB4 geändert, zum anderen vergeben wir den symbolischen Namen GLOBALS um zu kennzeichnen, dass der Datenbaustein globale Variablen enthält. Die restlichen Eigenschaften können unverändert bleiben Abbildung 2-6: Der Dialog Eigenschaften von Datenbausteinen

Institut für Automatisierungs- und Softwaretechnik 14 Ein Doppelklick auf den Datenbaustein öffnet den Editor. Hier müssen einfache Variablen vom Typ TIME, denen wir einen konstanten Anfangswert zuweisen, eingetragen werden. Ein Wert beginnt mit einem T# gefolgt vom einer Zeitangabe im Format ymzs. y und z sind aus der Menge der natürlichen Zahlen von 0 bis 59, wobei man eine 0 nicht angeben muss (siehe Abbildung 2-7). M und S bedeuten Minuten und Sekunden. Beispiel: T#2M44S ist eine Zeitspanne von 2 Minuten und 44 Sekunden Abbildung 2-7: Die Tabelle eines Datenbausteins Wenn die Eintragungen gemacht wurden kann der Baustein gespeichert und der Editor geschlossen werden. Als nächstes öffnen wir wieder den Baustein FB1. Um die Schaltzeiten zum Einsatz zu bringen sollte man als Aktionstyp den nicht-speichernden Typ wählen, da man mit der Schaltzeit die Zeitdauer angibt, für die der Schritt aktiv ist. Abbildung 2-8: Schritt und Transition mit Schaltzeit als Bedingung Wie in Abbildung 2-8 zu sehen ist, muss man außerdem die Transitionen der einzelnen Schritte mit Leben füllen. Die Bedingungen für die Transitionen lassen sich in der Programmiersprache KOP sehr anschaulich realisieren. Man verwendet Schließer, Öffner und Vergleicher. Anschaulich kann man sagen, sobald Strom fließen kann schaltet die Transition. Wenn also an einem Schließer der Wert 1 beziehungsweise true an einem Öffner der Wert 0 beziehungsweise false liegt oder der Vergleich das Ergebnis 1 beziehungsweise true liefert, schaltet die daran angeschlossene Transition. Prinzipiell ist ein Öffner die Negation, ein Schließer eine einfache Weiterleitung des daran anliegenden logischen Signals und ein Vergleicher, wie der Name schon sagt, der Vergleich zweier boolescher Werte. In Abbildung 2-8 wird das KOP-Element Vergleicher ( Cmp ) benutzt um die vorgegebene Zeit GLOBALS.RotZeit mit der seit Aktivierung des Schritts vergangenen Zeit zu vergleichen. Die Transition soll schalten sobald der Schritt mindestens die vorgegebene Zeit aktiv war.

Institut für Automatisierungs- und Softwaretechnik 15 Um die Programmierung der Bedingungen in KOP vorzunehmen wechselt man mit Menü > Ansicht > KOP in die Programmiersprache KOP. Das Einfügen der Öffner, Schließer und Vergleicher geschieht über die Schaltflächen in der Funktionsleiste ganz unten. Man markiert die Stromlaufschiene an der Bedingung auf der linken Seite und betätigt dann die gewünschte Schaltfläche. Die Verknüpfungen sehen in GRAPH wie in den folgenden Abbildungen aus: Abbildung 2-9: UND- und ODER-Verknüpfung in GRAPH Wie man in Abbildung 2-9 sieht kann man mehrere Bedingungen auf die oben beschriebene Weise einfügen. Man kann die UND- und ODER-Verknüpfungen bei entsprechender Vorgehensweise auch kombinieren. Aufgabe 3: Hinweis: Bitte ändern Sie die Aktionsblöcke im Funktionsbaustein FB1, so dass die einzelnen Phasen mit den entsprechend benannten Schaltzeiten geschaltet werden. Die Phase ZeigeRotGelb soll dabei die Dauer GelbZeit haben. Ändern Sie die Transitionen wie oben besprochen und nehmen Sie das Programm erneut in Betrieb. Um die Schreibarbeit etwas zu reduzieren kann man die automatische Korrektur in STEP7 nutzen. Man kann zum Beispiel anstatt GLOBALS.RotZeit auch globals.rotzeit schreiben. STEP7 korrigiert den Ausdruck nach Betätigen der Returntaste automatisch. In Schrittketten kann man mit gleicher Vorgehensweise auch die Schrittbezeichner anstatt die Schrittnamen zur Formulierung der Bedingungen verwenden, d.h. man schreibt zum Beispiel S1.T anstatt ZeigeRot.T (siehe Abbildung 2-8). STEP7 ergänzt auch diesen Ausdruck automatisch. 2.4 Außer-Betrieb-Setzen der Ampel Als letzte Entwicklungsstufe soll die Ampel per Schalter außer Betrieb gesetzt werden können. Nach dem Einschalten und nach dem Ausschalten durch einen Schalter soll das gelbe Licht der Ampel jeweils dreimal blinken, bevor die normale Funktion der Ampel beginnt, bzw. sie außer Betrieb geht. Dazu verwenden wir zwei zusätzliche Funktionsbausteine und zwei Funktionen (Eine Funktion ist ebenfalls ein Bausteintyp). Wir haben ab diesem Punkt also mehrere verschiedene Abläufe / Schrittketten, die zu verschiedenen Zeitpunkten ablaufen sollen. Man könnte dies bestimmt durch irgendwelche zusätzlichen Bedingungen, Sprünge oder andere Verzweigungen in GRAPH realisieren. Dies wäre aber eine sehr unübersichtliche und unsaubere Sache. Anschaulicher und sinnvoller ist es die Steuerung des Wechsels zwischen den verschiedenen Modi, also die Organisation der Funktionsbausteine, in einem Organisationsbaustein zu lösen.

Institut für Automatisierungs- und Softwaretechnik 16 Um das Prinzip des Ablaufs eines SPS-Programms auf der S7 näher zu verstehen ist es essentiell wichtig die unterschiedlichen Bausteintypen und ihre Eigenschaften zu kennen. Organisationsbausteine dienen der Organisation der anderen Bausteine wie zum Beispiel Funktionen. Funktionen sind im Prinzip die Arbeiter des Programms. Sie erledigen bei jedem Aufruf die gleiche Arbeit. Man kann zum Beispiel eine bestimmte Menge von Ausgängen setzen, Berechnungen durchführen oder Bedingungen prüfen um die Organisation modularer zu gestalten. Die Funktionen besitzen im Gegensatz zu Funktionsbausteinen kein Gedächtnis, das heißt sie merken sich keine Ergebnisse oder bestimmte Rechenschritte, sie führen immer die gleichen Operationen durch. Funktionsbausteine haben ein Gedächtnis in Form eines Datenbausteins, der bei ihrem Aufruf immer mit angegeben werden muss. Im Datenbaustein stehen alle Übergabewerte, der innere Zustand des Bausteins und die Position die gerade bearbeitet wird. Bei GRAPH- Funktionsbausteinen heißt das anschaulich, dass im Datenbaustein der aktuelle Schritt, aktive und deaktivierte Schritte und der Zustand von Transitionen gespeichert sind. Durch dieses Gedächtnis ergibt sich aber ein Problem. Wir können an verschiedenen Stellen nicht den selben Funktionsbaustein verwenden, da er sich an seinen Zustand erinnert und bei seinem zweiten Aufruf nicht von vorne beginnt, sondern an der Stelle weiter macht, an der er bei seinem letzten Aufruf unterbrochen wurde. Man benötigt also zwei separate Funktionsbausteine oder zumindest separate Datenbausteine. Datenbausteine sind einfach eine Möglichkeit Daten in Variablen zu speichern. Sie besitzen keine operative Funktionalität. Innerhalb der Bausteine gibt es die Möglichkeit so genannte Netzwerke anzulegen. Jedes Netzwerk repräsentiert dabei ein unabhängig ablaufendes Programm. Diese Programme werden quasi-parallel abgearbeitet. In Abbildung 2-10 ist der prinzipielle Ablauf des zu erstellenden Programms dargestellt und soll jetzt Schritt für Schritt beginnend mit einer kurzen Einführung in das allgemeine Ablaufverhalten von SPS-Programmen erklärt werden. Abbildung 2-10: Prinzipielle Struktur des Programms

Institut für Automatisierungs- und Softwaretechnik 17 Das SPS-Betriebssystem beginnt mit dem Aufruf des benötigten Einsprungpunktes, in unserem Fall der OB1. Im OB1 werden andere Bausteine aufgerufen oder Anweisungen ausgeführt. Sobald alle Zeilen im OB1 durchlaufen wurden wird wieder an das Betriebsystem zurückgegeben, das jetzt die Ausgänge und Eingänge mit dem Speicherabbild abgleicht, verschiedene Systemfunktionen bearbeitet, die Flankenmerker der Variablen setzt und dann wieder den OB1 aufruft. OB1 wird also immer zyklisch aufgerufen. Der zyklische Aufruf ist sehr wichtig, denn nur so kann das Programm mehrere tausend Map pro Sekunde aufgerufen werden, und sichert so eine hohe Reaktionsfähigkeit des Systems auf veränderte, äußere und innere Bedingungen. Das gleiche gilt auch für den Aufruf von Bausteinen. Jede Bedingung, also auch eine Transition in einer Schrittkette, wird mehrere tausend Mal pro Sekunde überprüft. Sollte eine Bedingung wahr sein wird die bedingte Aktion, bei Schrittketten das Weiterschalten in den nächsten Schritt ausgeführt. Wenn eine Bedingung also wahr ist wird, die daraus resultierende Aktion nicht nur ein einziges Mal, sondern bei jedem Zyklusdurchlauf erneut ausgeführt. Man kann jetzt also nicht mehr einfach nur eine Bedingung formulieren und eine bestimmte Reaktion auf diese Bedingung, da eine Bedingung auch zu einem Zeitpunkt erfüllt sein kann zu dem die Reaktion nicht wünschenswert ist oder sogar fatale Folgen haben kann. Um ein System richtig organisieren zu können muss man immer den gesamten Systemzustand im Auge behalten und Bedingungen eindeutig definieren. Wenden wir uns nun also unserem Problem zu. Zuerst folgt ein kurzer Überblick über das Programm und die fehlenden Komponenten. Danach wird Schritt für Schritt durch die Erstellung des Programms geführt. Dort werden die einzelnen Bausteine dann näher erläutert. Wie in Abbildung 2-10 dargestellt benötigen wir zwei zusätzliche Funktionsbausteine, einen um das Blinken vor dem Normalbetrieb der Ampel und einen um das Blinken nach dem Normalbetrieb zu realisieren. Im ersten Schritt dieser Bausteine werden alle Lichter durch den Aufruf der Funktion AlleAus ausgeschalten. Diese Funktion muss auch noch erstellt werden. Die Steuerung des Ampelsystems übernimmt die noch zu erstellende Funktion Systemsteuerung. Außerdem müssen noch einige Änderungen am OB1 vorgenommen werden. Wir fangen am besten damit an alle benötigten Variablen und Symbole anzulegen. In unserem Fall sind das: - Alle Symbole für Lichter, also die Ausgänge der SPS. (Diese Symbole müssten in den vorherigen Aufgaben schon erstellt worden sein) - Die Symbole Schalter und Taster, also die Eingänge der SPS. (Es müsste eigentlich nur noch das Symbol für den Schalter fehlen. Der Schalter ist an Eingang E0.1 angeschlossen.) - Die Variablen für die Schaltzeiten. (Müssten auch schon vorhanden sein) - Die Variablen zur Steuerung des Ablaufs. Man benötigt für jeden Funktionsbaustein zwei Kontrollvariablen über deren Flankenmerker die Schrittketten gesteuert werden. Man nennt die Variablen zum Beispiel Start<Bausteinname> und Stop<Bausteinname>. (In unserem Fall sind es 6 Kontrollvariablen) - Eine Variable Init, um zu überprüfen, ob das System schon initialisiert wurde. Die Initialisierung sind alle Einstellungen, die beim ersten Start des Systems vorgenommen werden müssen. - Eine Variable Weiter, um zu überprüfen, ob der Baustein BlinkenAn schon dreimal geblinkt hat, bevor man den Baustein Normalbetrieb startet.

Institut für Automatisierungs- und Softwaretechnik 18 Die Erstellung der Bausteine beginnt man am besten in der Aufrufhierarchie ganz unten. Bei uns wäre das die Funktion AlleAus. Funktionen fügt man, wie alle Bausteine, über das Kontextmenü des Bausteinknotens im Projektexplorer hinzu. Ein Doppelklick öffnet den Editor. Man muss in dieser Funktion einfach für jedes Licht eine Zeile in folgender Form eintragen, wobei noch der Name des Lichts (z.b. RotLicht) ergänzt werden muss: R NameDesLichts Wenn man fertig ist speichert man und schließt den Editor. Als nächstes müssen die Schrittketten für die Funktionsbausteine, die für das Blinken zuständig sind erstellt werden. Die Bausteine bestehen aus sieben beziehungsweise acht Schritten. Im ersten Schritt wird die Funktion AlleAus mit der Aktion CALL aufgerufen. Auf diesen ersten Schritt folgen sechs Schritte, die das gelbe Licht abwechselnd an und aus Schalten. In den Schritten, während denen das gelbe Licht aus ist, wird einfach keine Aktion eingetragen. Der Vergleicher der darauf folgenden Transition darf aber trotzdem nicht fehlen, da sonst direkt zum nächsten Schritt, in dem das gelbe Licht leuchtet geschalten wird. Jetzt kommt der einzige Unterschied der beiden Schrittketten. In der Schrittkette, die vor dem Normalbetrieb kommt, muss ein zusätzlicher Schritt eingefügt werden, in dem die Variable Weiter gesetzt wird, um dem Steuerprogramm zu signalisieren, dass mit dem Normalbetrieb begonnen werden kann. Abschließend fügt man beiden Ketten ein Kettenende hinzu, da beide Bausteine nicht zyklisch verlaufen, sondern nach dem dritten Blinken beendet werden sollen. Anschließend implementiert man die Funktion Systemsteuerung. Um die Übersichtlichkeit zu verbessern legt man am besten für jede Steueraufgabe ein eigenes Netzwerk an. Also jeweils ein Netzwerk für BlinkenAn, für Ampelsteuerung und für BlinkenAus. Ein neues Netzwerk legt man an, indem man im Menü > Einfügen > neues Netzwerk auswählt. In den einzelnen Netzwerken der Systemsteuerung sollten die folgenden Bedingungen und die daraus resultierenden Anweisungen wie folgt umgesetzt werden. Im Netzwerk Steuerung BlinkenAn : - Die Variable GLOBALS.StartBlinkenAn hat immer den gleichen Zustand, wie der Schalter - Die Variable GLOBALS.StopBlinkenAn hat immer den umgekehrten Zustand, wie der Schalter - Wenn der Schalter ausgeschaltet ist muss die Variable GLOBALS.Weiter zurückgesetzt werden. Im Netzwerk Steuerung Ampelsteuerung : - Die Variable GLOBALS.StartAmpelsteuerung hat immer den gleichen Zustand, wie der Schalter, sobald die Variable GLOBALS.Weiter in BlinkenAn gesetzt wurde. - Die Variable GLOBALS.StopAmpelsteuerung hat immer den umgekehrten Zustand, wie der Schalter Im Netzwerk Steuerung BlinkenAus :

Institut für Automatisierungs- und Softwaretechnik 19 - Die Variable GLOBALS.StartBlinkenAus hat immer den umgekehrten Zustand, wie der Schalter, aber erst, wenn die Initialisierung durchgeführt, also GLOBALS.Init gesetzt wurde. (siehe hierzu auch die Beschreibung zu OB1 auf der nächsten Seite) - Die Variable GLOBALS.StopBlinkenAus hat immer den gleichen Zustand, wie der Schalter Die benötigten Anweisungen in AWL können dem Kapitel 3.2.1 im Anhang entnommen werden. Bemerkung: Es werden die Bitverknüpfungen U und UN benötigt, um die Bedingungen zu formulieren. Für die resultierenden Anweisungen werden S, R, und = verwendet. (siehe Kapitel 3.2.1 im Anhang) In Abbildung 2-11 sieht man die Umsetzung in AWL am Beispiel des Netzwerks Steuerung BlinkenAus. ( BlinkenAus entspricht hier Blinken2 ) Abbildung 2-11: Netzwerk Steuerung Blinken2 in der Funktion Systemsteuerung Man kann erkennen, dass die vorher in Klartext formulierten Bedingungen umgesetzt wurden. Als nächstes ergänzt man den OB1. Zuerst wird im OB1 die Systemsteuerung mit dem CALL-Befehl aufgerufen. Darauf folgen die Initialisierungsanweisungen. Beim ersten Start des Programms sind alle Bausteine initialisiert. Wenn der Schalter aus ist, sollen aber beim ersten Start alle Bausteine deaktiviert sein. Die Bausteine BlinkenAn und Ampelsteuerung werden dadurch deaktiviert, dass der Schalter aus ist (wie in den zuvor festgelegten Bedingungen beschrieben). Der Baustein BlinkenAus muss separat deaktiviert werden, da er, da der Schalter aus ist, ausgeführt würde. Die Initialisierung in OB1 besteht also darin, den Baustein BlinkenAus zu deaktivieren und der Systemsteuerung mitzuteilen, wann das System durch umlegen des Schalters das erste mal aktiviert wurde. Man kann folgende Bedingungen formulieren, die dann in den ersten Zeilen des OB1 in AWL umgesetzt werden müssen: - Wenn noch nicht initialisiert wurde muss BlinkenAus gestoppt werden, also die Variable GLOBALS.StopBlinkenAus gesetzt werden. - Wenn der Schalter eingeschaltet ist wird die Variable GLOBALS.Init gesetzt. Zuletzt müssen in OB1 nur noch alle restlichen Bausteinaufrufe einfach untereinander eingetragen werden. Bei den Funktionsbausteinen muss der zugehörige Datenbaustein immer mit angegeben werden. Außerdem muss man die Kontrollvariablen in die entsprechenden Parameterfelder eintragen (also die Startvariablen bei INIT_SQ und die Stopvariablen bei OFF_SQ).

Institut für Automatisierungs- und Softwaretechnik 20 Vorbereitungsfrage 4: Entwickeln Sie auf einem getrennten Blatt die Schrittkette für die Bausteine BlinkenAnfang, BlinkenEnde und die Anweisungsliste für die Bausteine AlleAus, Systemsteuerung und OB1 (Bei Bausteinaufrufen müssen nur die benutzten Parameter angegeben werden) Aufgabe 4: Führen Sie alle beschriebenen Implementierungen und Änderungen durch. Testen Sie, ob die Ampel erwartungsgemäß funktioniert. 3 Anhang 3.1 Definition der Steuerung Nach DIN 19226 ist eine Steuerung durch einen offenen Wirkungsweg gekennzeichnet. Eine Steuerung kann daher nur solchen Störgrößen entgegenwirken, für die sie ausgelegt wurde. Der Wirkungsweg besteht aus einer Steuereinrichtung (Automatisierungsgerät) und einer Steuerstrecke (Technischer Prozess). Bei elektrischen Steuerungen unterscheidet man Kontaktsteuerungen, kontaktlose Steuerungen und frei programmierbare Steuerungen. Das Unterscheidungsmerkmal ist dabei die technische Realisierung der Steuereinrichtungen. Kontaktsteuerungen sind mittels Relaisund Schütztechnik aufgebaut. Bei der kontaktlosen Steuerung kommen Halbleiterschaltungen in integrierter und diskreter Form zum Einsatz. Bei der speicherprogrammierbaren Steuerung wird die Steuerlogik durch ein in einem Mikrorechner ablaufendes Programm realisiert. 3.2 Programmiersprachen in STEP7 - Befehle und Syntax In den nächsten Kapiteln soll kurz auf die wichtigsten Befehle und Sprachelemente der verwendeten Programmiersprachen aus STEP7 und deren Syntax eingegangen werden. 3.2.1 AWL In AWL gibt es viele verschiedene Befehle. Hier sollen aber nur die grundlegensten Befehle kurz erläutert werden. Bitverknüpfüngen sind einfache boolesche Operationen auf Bits beziehungsweise Wahrheitswerten (Werte aus dem Wertebereich [TRUE, FALSE]). U und UN und nicht O oder Anweisungen zur Formulierung ON oder nicht von Bedingungen X exklusives oder XN exklusives oder nicht = Zuweisung S Setzen (auf TRUE, also 1) Beenden einen Bedingungsblock R Rücksetzen (auf FALSE, also 0) Syntax:

Institut für Automatisierungs- und Softwaretechnik 21 Beispiel 1: O DB10.Var1 ON E0.4 R DB10.Var2 Die Variable Var2 im Datenbaustein DB10 wird zurückgesetzt (DB10.Var2 = FALSE ), wenn entweder DB10.Var1 FALSE ist oder E0.4 ausgeschaltet ist. Der Befehl CALL ruft einen Baustein auf. Es können Funktionen, Organisationsbausteine und Funktionsbausteine aufgerufen werden. Bei Funktionsbausteinen ist darauf zu achten, dass der Instanzdatenbaustein mit angegeben wird. Syntax: Beispiel: CALL <Baustein>, [<Instanzdatenbaustein>(bei FBs)] CALL FB1, DB1 3.2.2 S7-GRAPH Die Programmiersprache GRAPH besteht im Wesentlichen aus Schritten und Transitionen. Die Transitionen werden vorzugsweise in KOP geschrieben. Die Aktionen, die in den Schritten durchgeführt werden sind in einer AWL-ähnlichen Sprache geschrieben. Die Befehle setzen sich aus einem Befehlszeichen und einem oder mehreren Operanden zusammen. Für das Befehlszeichen, sowie jeden einzelnen Operanden steht ein Eingabefeld zur Verfügung. Hier werden kurz die wichtigsten Befehlszeichen und ihre Operanden beschrieben. N S R D L Nicht speicherndes Setzen. Der Operand wird nur während der Schritt aktiv ist gesetzt. Nach Deaktivieren des Schritts wird der Operand zurückgesetzt. Setzen. Der Operand wird auf TRUE gesetzt. Rücksetzen. Der Operand wird auf FALSE gesetzt Verzögertes Setzen (Delayed). Nach Ablauf einer bestimmten Zeit, nach Aktivierung des Schritts wird der Operand gesetzt. Limitiertes Setzen. Der Operand wird für eine bestimmte Zeit gesetzt und dann wieder zurückgesetzt. CALL Aufruf eines Bausteins. Man sollte in GRAPH aber keine anderen Funktionsbausteine aufrufen, da dann kein zuverlässiger Ablauf sichergestellt werden kann.

Institut für Automatisierungs- und Softwaretechnik 22 3.3 Abbildungsverzeichnis Abbildung 1-1: Prinzipieller Aufbau einer SPS... 3 Abbildung 1-2: Draufsicht auf die SPS-Kerneinheit mit integrierten Modulen... 4 Abbildung 1-3: UND-Verknüpfung in AWL... 5 Abbildung 1-4: UND in KOP... 5 Abbildung 1-5: UND als Funktionsplan... 5 Abbildung 1-6: UND in Strukturiertem Text... 6 Abbildung 1-7: Einfachstes Petri Netz... 6 Abbildung 1-8: Zustand des Petri Netzes vor und nach Durchschalten der Transition... 6 Abbildung 1-9: Der Projektexplorer... 7 Abbildung 1-10: Der Editor für AWL, KOP und FUP... 8 Abbildung 1-11: Der Editor für S7-GRAPH-Bausteine... 9 Abbildung 2-1: Die Symboltabelle... 10 Abbildung 2-2: Das Kontextmenü zum Bausteinknoten... 10 Abbildung 2-3: Die Bausteineigenschaften von Funktionsbausteinen... 10 Abbildung 2-4: Das erste Programm... 11 Abbildung 2-5: Der Aufruf des Funktionsbausteins aus OB1 heraus... 12 Abbildung 2-6: Der Dialog Eigenschaften von Datenbausteinen... 13 Abbildung 2-7: Die Tabelle eines Datenbausteins... 14 Abbildung 2-8: Schritt und Transition mit Schaltzeit als Bedingung... 14 Abbildung 2-9: UND- und ODER-Verknüpfung in GRAPH... 15 Abbildung 2-10: Prinzipielle Struktur des Programms... 16 Abbildung 2-11: Netzwerk Steuerung Blinken2 in der Funktion Systemsteuerung... 19 3.4 Literaturhinweise Göhner, Peter: Skript zur Vorlesung Prozessautomatisierung I. Stuttgart: Universität Stuttgart, IAS, 2002. Petry, Jochen: Speicherprogrammierbare Steuerungen. Heidelberg: Hüthig Verlag, 1988. Lauber, Rudolf; Göhner, Peter: Prozessautomatisierung 1, 3. neubearbeiteteauflage-1999. Berlin-Heidelberg-New York: Springer-Verlag, 1999. Lauber, Rudolf; Göhner, Peter: Prozessautomatisierung 2. Berlin-Heidelberg-NewYork: Springer-Verlag, 1999. Mit dem Thema SPS-Programmierung befassen sich auch die Vorlesungen und Übungen des IAS Prozessautomatisierung I und II.