Vollständiger STF-Umdruck
Transcription
Vollständiger STF-Umdruck
Hochschule Bremerhaven Unterlagen zur Lehrveranstaltung Steuerungs- und Feldbustechnik [ STF ] Teil 1: Steuerungstechnik --- SPS (Siemens Step 7) --- IEC1131-3 --- Logische Funktionen --- Ablaufsteuerungen --- Signalverarbeitung Teil 2: Bussysteme in der Automatisierungstechnik --- Ethernet --- Profibus Revision: V0.2f (minor) Datum: Dezember 2014 K. Müller, HS Bremerhaven Prof. Dr.-Ing. Kai Müller Hochschule Bremerhaven Institut für Automatisierungs- und Elektrotechnik An der Karlstadt 8 D---27568 Bremerhaven Tel: FAX: +49 471 48 23 --- 415 +49 471 48 23 --- 418 E---Mail: [email protected] Steuerungs- und Feldbustechnik 1 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven I Einleitung I.I Umdruck zur Vorlesung Über die Homepage der Vorlesung <http://www1.hs---bremerhaven.de/kmueller/> werden aktualisierte oder korrigierte Unterlagen im Verlauf der Vorlesung zur Verfügung gestellt. I.II Steuerungs- und Feldbustechnik Industrielle Anlagen werden heute überwiegend mit elektronischen Steuerungen versehen, um steigende Anforderungen an Genauigkeit und Geschwindigkeit erfüllen zu können. Durch ihre Programmierbarkeit sind diese Steuerungen sehr flexibel und universell einsetzbar. Sehr verbreitet ist die Speicherprogrammierbare Steuerung (SPS oder PLC), die im Rahmen dieser Veranstaltung ausführlich behandelt wird. Im Bereich der Vernetzung laufen ähnliche Entwicklungen ab wie in der Informationstechnik. Die unterschiedlichen Busse, die ursprünglich im Bereich der Steuerungstechnik eingesetzt wurden (sogenannte Feldbusse), haben sich mittlerweile im Wesentlichen auf das Ethernet reduziert, das bei geringen Kosten die höchste Übertragungsrate bietet. Daneben spielen CAN (Car Area Network) und Profibus noch ein geringe, aber nicht zu vernachlässigende Rolle. Ich wünsche allen Hörern der Veranstaltung “Steuerungs- und Feldbustechnik” viel Freude an dem faszinierenden Fachgebiet. Bremerhaven, April 2010 Kai Müller <kmueller@hs ---bremerhaven.de> Tel: (0471) 4823 --- 415 Steuerungs- und Feldbustechnik I Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven II Inhalt 1 Steuerung von Anlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 SPS (PLC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Programmierung von Steuerungen nach IEC 61131-3 . . . . . . . . . . . . . . 3 2.2 Aufbau einer SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 Organisation eines SPS-Programms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4 Logische Funktionen und Automaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1 Logische Signale und Funktionen (Gatter) . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Elementare Gatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.2.1 Inverter (Negation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.2 Konjunktion (AND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.3 Disjunktion (OR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2.4 NAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.2.5 NOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.2.6 Antivalenz (exklusiv ODER, XOR) . . . . . . . . . . . . . . . . . . . . . . . 10 4.2.7 Äquivalenz (XNOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.3 Vorrangregeln für boolsche Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.4 Funktionen für eine Variable (UNARY OPERATORS) . . . . . . . . . . . . 12 4.5 Funktionen für zwei Variablen (BINARY OPERATORS) . . . . . . . . . . . 12 4.6 Übung: Aufstellen einer Wahrheitstabelle . . . . . . . . . . . . . . . . . . . . . . . . 12 4.7 Rechenregeln für eine Variable und eine Konstante . . . . . . . . . . . . . . . . 14 4.8 Verwirklichung einfacher Gatterfunktionen durch mechanische Schalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Programmierung einer Steuerung mit SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.1 Operationen zur Signalverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2 Operanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.3 Programmorganisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.4 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6 Übung 1: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 7 Verknüpfungsoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 8 Schützschaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 8.1 21 5 Übung 2: Umsetzung einer Schützschaltung mit symbolischen Namen Steuerungs- und Feldbustechnik II Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 9 Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 22 Übung 3: Programmieren ein RS-Flip-Flop mit Setz- und Rücksetzdominanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 10 Ablaufsteuerungen (Automaten) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 10.1 Beispiel: Ampelsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 10.1.1 Next-State-Logic (Eingangslogik) F(u, x) . . . . . . . . . . . . . . . . . . 26 10.1.2 Output-Logic (Ausgangslogik) G(x) (Moore-Maschine) . . . . . 26 10.1.3 State-Memory (Zustandsspeicher) . . . . . . . . . . . . . . . . . . . . . . . . 26 Zustandsdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 11 Verwirklichung mit SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 10.2 11.1 Übung: Erweiterung der Ampelsteuerung um die Funktion “Blinken des gelben Lichts” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 12 Zeiten und Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 12.1 Zeiten (Timer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 12.2 Beispiel für den Einsatz von Timern: Rechteckgenerator . . . . . . . . . . . 33 12.3 Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 12.4 Übung: Vorwärts-/Rückwärtszähler mit Anzeige . . . . . . . . . . . . . . . . . . . 34 13 Steuerung einer Ofenanlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 14 CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 15 Prozesse in einer SPS-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 16 Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 17 Logische Operationen auf Wortebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 18 Algebraische Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18.1 Auswertung algebraischer Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . 46 18.2 Konversion zwischen Zahlensystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 19 Beispiel: Einlesen von Temperaturdaten und Darstellung auf Siebensegmentanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 20 Beispiel: Berechnung von Scheinleistung und Blindleistung aus gemessenen Werten von Strom und Wirkleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 21 Regelungen mit SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 21.1 Schaltende Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Steuerungs- und Feldbustechnik III Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 21.1.1 Übung: Temperaturregelung (schaltender Regler) . . . . . . . . . . 52 22 Dynamische Regler-Übertragungsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 22.1 Integrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 22.2 PI-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 23 PID-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 23.1 Beispiel: D-Glied mit kd = 1, t* = 0.333333 und der Abtastperiode T = 0.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 24 Berechnung des D-Glieds mit der SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 25 The Real Thing --- Konfiguration und Programmierung einer „echten” SPS . . 68 26 Vernetzung von SPS-Geräten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 26.1 RS-485 (MPI/Profibus) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 26.2 CSMA/CD und Token-Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 26.2.1 CSMA/CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 26.2.2 Token-Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 27 Konfigurieren einer Siemenst-SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 28 Automatisierung einer Tankfüllanlage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 28.1 Übung: Verwirklichung der Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 29 Ampelsteuerung mit Belegungserkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 29.1 Strategien zur Kodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 29.2 Übung: Kodierung der Ampelsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . 84 30 Diskrete Regelung (PI-Regler) mit einer SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 30.1 Übung: Umsetzung als SPS-Programm . . . . . . . . . . . . . . . . . . . . . . . . . . 87 31 Vergleich der Algorithmen des SIEMENSt-PI-Reglers (FB41) und der bilinearen Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 32 Einsatz des PID-Moduls der SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 32.1 Verwendung des PID-Moduls der Siemens-SPS (FB41) . . . . . . . . . . . . . 97 32.2 Übung: PID-Regelung mit FB41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 33 Structured Text (ST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 33.1 ST Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 33.1.1 Ausdrücke (Expressions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Steuerungs- und Feldbustechnik IV Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 33.1.2 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 33.1.3 Schlüsselworte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 33.1.4 Unterprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 34 Vergleich zwischen ST und IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 35 Labor #01: AWL, FUP und KOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 36 Labor #02: Elementare Logikfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 37 Labor #03: Zustandsdiagramme für Automaten und für eine Ablaufsteuerung der SPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 38 Labor #04: Ampelsteuerung (Verwirklichung mit AWL und FUP) . . . . . . . . 116 39 Labor #05: Industrie-Spülmaschine (Ablaufsteuerung durch Kodierung der Zustände und durch Kodierung der Übergänge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 40 Labor #06: Berechnung numerischer Ausdrücke mit der SPS . . . . . . . . . . . . . 118 41 Labor #07: Numerische Lösung einer Gleichung durch Iteration mit der SPS 119 42 Labor #08: Digitales Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 43 Labor #09: Digitales Filter 2. Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 44 Labor #10: PID-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 45 Labor #11: Füllstandsregelung (solide & einfach) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 46 Labor #12: Füllstandsregelung (vollständig) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 47 Labor #13: Graphische Bedienung der Füllstandsregelung mit WinCCt (HMI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 48 Labor #14: PI-Regelung einer Tiefpassstrecke mit SPS . . . . . . . . . . . . . . . . . . 127 49 Labor #15: Zweipunkt- und PI-Regelung einer Tiefpassstrecke mit SPS . . . . 129 60 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Steuerungs- und Feldbustechnik 1 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 1 Steuerung von Anlagen Einfache Anlagen mit wenigen Steuereingriffen lassen sich “von Hand” bedienen. Wenn jedoch viele Signale zu beachten sind und eine Anlage über viele Steuereingriffe verfügt, bietet sich eine Automatisierung an. Gleichzeitig kann damit auch eine Fehlbedienung vermieden werden, so dass automatisierte Anlagen eine größere Betriebssicherheit aufweisen. Elektronische Steuerungen reagieren im Bereich von Mikrosekunden oder Millisekunden, so dass die Produktivität automatisierter Anlagen gewöhnlich höher ist, als dies mit einer manuellen Bedienung möglich ist. Man unterscheidet folgende Strukturen zur Automatisierung von Anlagen: Offene Steuerung: Eine Steuerungsgerät erzeugt eine festgelegten Satz von Signalen an einen Prozess (z.B. Ampelsteuerung). Geschlossene Steuerung: Aus dem Prozess werden zusätzlich Signale zurückgeführt, die die Steuersignale beeinflussen. Ein Beispiel wäre eine Positioniereinrichtung mit Endschaltern. Sobald ein Endschalter betätigt wird, muss der Positioniervorgang beendet werden. Regelung: Durch ständige Messung von Prozessgrößen werden die Ansteuersignale (in den Prozess) verändert. Sowohl bei der geschlossenen Steuerung als auch bei der Regelung spricht man von rückgekoppelten Systemen. Steuergerät Bild 1.1: Offene Steuerung Steuergerät Bild 1.2: Prozess Prozess Geschlossene Steuerung und Regelung Der Unterschied zwischen geschlossenen Steuerungen und Regelung besteht in der Natur der Signale. Bei Regelungen handelt es sich um kontinuierliche Signale (Messwerte von Steuerungs- und Feldbustechnik 2 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Temperatur, Druck, Geschwindigkeit, Strom usw., während es sich bei Steuerungen im diskrete Signale handelt. In den meisten Fallen handelt es dabei im boolsche Signale, d.h. das Signal nimmt nur zwei Zustände an. Die logischen Zustände werde mit “0” und “1” bezeichnet. Damit lassen sich verschiede physikalische Sachverhalte beschreiben. Beispiele: “0”: “1”: Prozesstemperatur im gewünschten Bereich Prozesstemperatur zu hoch “0”: “1”: Motor steht Motor läuft “0”: “1”: Spannung aus Spannung an Zu Zuordnung von logischen Werten zu physikalischen Sachverhalten erfolgt rein willkürlich. Man könnte also auch den Wert “0” dem Sachverhalt “Motor läuft” zuordnen, was aber die Lesbarkeit von Programmcode für eine Prozesssteuerung nicht gerade erhöht. Wir werden uns im Rahmen dieser Veranstaltung nur mit Steuerungen befassen (der Großteil der Anwendungen). Regelung werden in einer späteren Vorlesung behandelt. 2 SPS (PLC) Die verbreitetste Form von Anlagensteuerungen ist die SPS (Speicherprogrammierbare Steuerung oder PLC = programmable logic controller). Die SPS hat inzwischen viele Entwicklungsstufen durchlaufen, da sich die Anforderungen bei komplexer werdenden Anlagen ständig erhöhen. Um eine herstellerunabhängige Programmierung zu ermöglicht, wurde der Standard IEC1131-3 (IEC = Internationl Electrotechnical Commission) ins Leben gerufen, der jedoch von den meisten Herstellern nicht besonders gepflegt wird. Dadurch bleibt die Bindung von Kunden an einen bestimmten Hersteller erhalten. Im Rahmen der Veranstaltung soll jedoch neben der SIEMENS Step 7-Programmierung auch auf den herstellerunabhängigen IEC-Standard eingegangen werden. Die IEC-Norm ist im wesentlichen aus der PLCopen Group hervorgegangen, ein Zusammenschluss von SPS-Herstellern. Unter einer SPS versteht man einen speziellen Computer mit mehreren (in der Regel) digitalen Ein-/Ausgängen, der logische Verknüpfungen (programmierbar) zwischen den Ein- und Ausgängen herstellt. Steuerungs- und Feldbustechnik 3 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Im Prinzip können Steuerungsaufgaben auch von ganz normalen PCs erfolgen. Entsprechende Software (Soft-SPS für PCs) ist für diesen Zweck auch verfügbar. Von Standpunkt der Programmierung ist es unerheblich, auf welchem System die SPS-Funktion umgesetzt wird. Dennoch werden Steuerungen überwiegend auf speziellen SPS-Computern verwirklicht. Folgende Gründe sprechen für den Einsatz spezieller SPS-Geräte: Zuverlässigkeit: Ein spezielles Steuergerät mit wenigen Komponenten ist zuverlässiger als ein universeller Computer mit vielen Komponenten mit beschränkter Lebensdauer (z.B. Festplatten in rauher Industrieumgebung). “Absturzfreudige” PC-Betriebssysteme sind i.a. für Anlagen mit Personengefährdung (z.B. Medizintechnik, Aufzüge) nicht geeignet. Echtzeitfähigkeit: Eine SPS gewährleistet definierte Reaktionszeiten. SPS besitzen eine “Firmware”, die Echtzeit gewährleistet. Sofern man Computer zur Steuerung einsetzt, müssen diese über ein Echtzeit-Betriebssystem verfügen. 2.1 Programmierung von Steuerungen nach IEC 61131-3 Die IEC (International Electrotechnical Commission) sieht folgende Programmiersprachen bzw. grafische Entwurfswerkzeuge vor (die Siemens-Bezeichnungen, die natürlich nicht mit den IEC-Bezeichnungen übereinstimmen, werden in Klammern angegeben): LD = Ladder Diagram (KOP = Kontaktplan) IL = Instruction List (AWL = Anweisungsliste) ST = Structured Text (SCL = Structured Command Language) FBD = Function Block Diagram (FUP = Funktionsplan) SFC = Sequential Function Chart (AS = Ablaufsprache) CFC = Continous Function Chart (CFC) nicht Teil von IEC 61131-3 Keine diese Entwicklungsstandards können als dem Stand der Informationstechnik entsprechendes Werkzeug aufgefasst werden (z.B. C++ / Java, embedded Java). Steuerungs- und Feldbustechnik 4 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 2.2 Aufbau einer SPS digitale Eingänge digitale Ausgänge VerarbeitungsEinheit . . . Umsetzung physikalisch ---> logisch Mikrocomputer mit Umsetzung logisch ---> physikalisch SPS-Firmware . . . Porgrammierschnittstelle (meist seriell) licensed Software Bild 1.3: Aufbau einer SPS (EVA-Prinzip) Wir wollen uns zunächst nur auf digitale Ein-/Ausgänge beschränken. Eine SPS kann häufig durch andere Schnittstellen (analog und digital) erweitert werden. SPS-Systeme können mit nahezu beliebig vielen Ein- und Ausgängen bestellt werden. Physikalisch wird eine Signal in Normalfall durch eine Spannung von 24V bzw. 0V dargestellt (hohe Störsicherheit). Die Nennspannung von 24V hat historische Ursachen, da mit diesem Spannungspegel Relais und Schütze angesteuert werden. Umsetzer an den Einund Ausgängen erzeugen das intern verwendete Format. Die Signale werden innerhalb der SPS als logische “0”/“1”-Signale behandelt. Die Verarbeitungseinheit besteht aus einer CPU mit einem speziellen Programm (=Firmware), so dass der Entwickler meint, eine spezielle --- für Steuerungsaufgaben geeignete --- Hardware zur Verfügung zu haben (=Programmiermodell). Wir können zur Programmierung der SPS tatsächlich annehmen, dass eine Hardware gemäß Bild 1.4 vorhanden ist. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 5 K. Müller, HS Bremerhaven Verarbeitungseinheit Speicher Steuerwerk Merker Prozessabbild Akku Bild 1.4: Speicher: Zeitglieder Zähler Datenbus Programmiermodell der Verarbeitungseinheit Der Speicher enthält das SPS-Programm und besteht aus FLASH oder EPROM (nichtflüchtig) sowie RAM (zur Speicherung von Variablen und veränderlichen Daten). Steuerwerk: Das Steuerwerk übernimmt die Initialisierung (Nullsetzen aller Zähler, Zeitglieder und Merker sowie Akku). Die Hauptaufgabe besteht in der sequentiellen Abarbeitung der Anweisungen, die im Speicher abgelegt sind. Merker: Dienen zur Speicherung von Signalzuständen = Gedächtnis der SPS. Prozessabbild: Eine SPS rechnet nicht direkt mit den digitalen Ein- und Ausgängen, sondern mit dem sogenannten Prozessabbild. Das Prozessabbild ist der konsistente Satz von Ein- und Ausgangsgrößen zu einem bestimmten Zeitpunkt. Falls sich Eingangsgrößen während eines Berechnungszyklusses ändern, so hat dies keinen Einfluss auf des Berechnungsergebnis. Es wird also stets mit den Signalwerten gerechnet, die zu Beginn eines Berechnungszyklusses eingelesen wurden. In gleicher Weise ändern sich auch nur die Ausgänge am Ende des Berechnungszyklusses, da erst dann das Prozessabbild an die Ausgänge transferiert wird. Akku: Der Akku ist der Zwischenspeicher, in dem Berechnungen ausgeführt werden. Der Akku ist vergleichbar mit der Anzeige eines einfachen Taschenrechners ohne Klammerebenen. Zeitglieder: Mit Hilfe von Zeitgliedern lasen sich Ergebnisse zu bestimmten Zeitpunkten auslösen. Viele Anlagen erfordern nicht nur bestimmte Schalthandlungen, Steuerungs- und Feldbustechnik 6 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven sondern es müssen zusätzlich Zeitbedingungen eingehalten werden (z.B. Ampel). Zähler: Zähler ermöglichen ein Zählen von Ereignissen. Datenbus: Der Datenbus verbindet alle Elemente der SPS und ermöglicht den Datenaustausch zwischen allen Komponenten. 3 Organisation eines SPS-Programms Die Programmierung einer SPS hat viele Entwicklungsstufen hinter sich. Dennoch merkt man der SPS-Programmierung die Ursprünge (Schütz- und Relaistechnik) an. Erst in letzter Zeit (PLCopen, IEC-1131) dringen Erkenntnisse der Informatik in die SPS vor. Zurzeit (exklusive IEC-1131) bestehen drei Möglichkeiten, ein SPS-Programm zu schreiben: Anweisungsliste (AWL): Diese Darstellung entspricht am ehesten eine Programmiersprache, da die Anweisungen sequentiell von der SPS abgearbeitet werden. Die AWL kann aus mehreren ASCII-Dateien bestehen. U U = E E A 0.1 0.2 0.0 Funktionsplan (FUP): Die logischen Funktionen werden grafisch mit DIN40900-Symbolen dargestellt. Diese Art der Programmierung erscheint sehr einfach. Bei komplexen Steuerungen wird die grafische Darstellung jedoch sehr unübersichtlich. Beispielsweise ist man bei modernen Hardwarebeschreibungssprachen (VHDL oder Verilog) von der grafischen Darstellung vollkommen abgekommen. Kontaktplan (KOP): Die Programmierung als Kontaktplan eignet sich für Personen, die bereits Erfahrung mit Schützsteuerungen haben. Ansonsten gelten die gleichen Einschränkungen wie beim FUP. Steuerungs- und Feldbustechnik 7 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven In dieser Veranstaltung wird zur Programmierung die AWL-Form verwendet. Die IEC-1131-Norm sieht die Texteingabe als einzige Eingabeform vor. Der Übergang auf die neue Norm ist also über die AWL-Form am einfachsten. 4 Logische Funktionen und Automaten Mit einer SPS lassen sich Schaltnetze (logische Funktionen) und Automaten programmieren. Automaten (Ablaufsteuerungen) enthalten interne Zustände. Jeder Automat enthält auch Schaltnetze, so dass es sinnvoll ist, mit den logischen Funktionen zu beginnen. 4.1 Logische Signale und Funktionen (Gatter) Unabhängig von der physikalischen Verwirklichung entwirft man oft ein digitales System als logisches System mit logischen Signalen, d.h. “0”-“1”-Signalen. Wir ignorieren also das elektrische Verhalten (bei CMOS- oder TTL-Schaltungen) und beschränken uns auf die diskreten Signale 0 und 1. Bevor man also eine Schaltung aufbaut, wird zunächst das logische Verhalten entworfen. x y z Bild 1.5: f logische Schaltung g Logische Schaltung mit drei Eingängen und zwei Ausgängen Die Funktion der Schaltung wird durch die sogenannte Wahrheitstabelle vollständig beschrieben. Die Wahrheitstabelle beschreibt vollständig eine kombinatorische logische Schaltung. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 8 K. Müller, HS Bremerhaven Unter kombinatorischer Schaltung versteht man eine Schaltung, bei der die Ausgangsgrößen ausschließlich von den Eingangsgrößen abhängen. Schaltungen mit internen Speicherelementen heißen sequentielle Schaltungen. Die sequentiellen Schaltungen sind wesentlich leistungsfähiger. Jeder Computer ist eine sequentielle Schaltung. Eine sequentielle Schaltung enthält aber immer kombinatorische Logik. Es ist deshalb sinnvoll, sich zunächst mit kombinatorischer Logik zu befassen. Die Schaltung in Bild 1.5 könnte z.B. die einstellige Addition aus Abschnitt NO TAG sein. Wahrheitstabelle für eine einstellige duale Addition Eingänge Ausgänge x = carryin y = xk z = yk 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 f = xk +yk 0 1 1 0 1 0 0 1 g = carryout 0 0 0 1 0 1 1 1 Beliebig komplexe Schaltungen lassen sich aus wenigen elementaren Logikfunktionen (=Gatter) aufbauen. 4.2 Elementare Gatter Es werden jeweils die gültigen IEC-Symbole aufgelistet als auch die veralteten amerikanischen Schaltzeichen. Alte deutsche Symbole werden weggelassen. Die alten amerikanischen Symbole sind auch heute weit verbreitet, insbesondere bei ECAD-Software (Electronic Computer Aided Design). Variablen mit den Zuständen 0 und 1 bezeichnet man als boolsche Variablen. Die Rechenreglen mit boolschen Variablen heißen boolsche Algebra. Die folgenden Gatter werden nur mit der minimalen Anzahl von Eingangsgrößen gezeichnet. Der Erweiterung auf mehrere Eingangsgrößen ist jedoch einfach. Übung: Zeichnen Sie Gatter mit jeweils drei Eingangsgrößen und geben Sie die entsprechende Wahrheitstabelle an. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 9 K. Müller, HS Bremerhaven 4.2.1 Inverter (Negation) Symbol a amerik. Symbol 1 x a Wahrheitstabelle a x x 0 1 1 0 Boolsche Funktion 4.2.2 DIN-Schreibweise: x=y (x = nicht a) amerik. Schreibweise: x=a (x = not a) Konjunktion (AND) Symbol a b & amerik. Symbol x a b x Boolsche Funktion 4.2.3 Wahrheitstabelle b a x 0 0 0 0 1 0 1 0 0 1 1 1 DIN-Schreibweise: x =a∧b (x = a und b) amerik. Schreibweise: x =a⋅b (x = a and b) Disjunktion (OR) Symbol a b ≥1 amerik. Symbol x a b x Boolsche Funktion Wahrheitstabelle b a x 0 0 0 0 1 1 1 0 1 1 1 1 DIN-Schreibweise: x =a∨b (x = a oder b) amerik. Schreibweise: x =a+b (x = a or b) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 10 K. Müller, HS Bremerhaven 4.2.4 NAND Symbol & a b amerik. Symbol x a b x Boolsche Funktion DIN-Schreibweise: x =a∧b amerik. Schreibweise: x = (a ⋅ b ) Wahrheitstabelle a x b 0 0 1 0 1 1 1 0 1 1 1 0 (x = a nand b) Mit NAND-Gattern lassen sich beliebige logische Funktionen realisieren. 4.2.5 NOR Symbol a b ≥1 amerik. Symbol x a b x Boolsche Funktion Wahrheitstabelle b a x 0 0 1 0 1 0 1 0 0 1 1 0 DIN-Schreibweise: x =a∨b amerik. Schreibweise: x = (a + b ) (x = a nor b) Mit NOR-Gattern lassen sich beliebige logische Funktionen realisieren. 4.2.6 Antivalenz (exklusiv ODER, XOR) Symbol a b =1 amerik. Symbol x a b x Boolsche Funktion DIN-Schreibweise: x=a amerk. Schreibweise: x = (a Wahrheitstabelle a b x 0 0 0 0 1 1 1 0 1 1 1 0 b = (a ∧ b ) ∨ a ∧ b b ) (x = a xor b) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 11 K. Müller, HS Bremerhaven 4.2.7 Äquivalenz (XNOR) Symbol =1 a b amerik. Symbol x a b x Boolsche Funktion 4.3 Wahrheitstabelle b a x 0 0 1 0 1 0 1 0 0 1 1 1 b = a ∧ b ∨ (a ∧ b ) DIN-Schreibweise: x=a amerik. Schreibweise: x = (a b ) (x = a xnor b) Vorrangregeln für boolsche Algebra Leider sind die Vorrangregeln für Operationen international nicht einheitlich (die amerikanischen Regeln unterscheidet sich von von DIN 66000). Dies folgt aus der amerikanischen Schreibweise für UND ( ) und ODER (+), die der UND-Verknüpfung eine höhere Priorität (Multiplikationszeichen) als der ODER-Verknüpfung (Summenzeichen) einräumt. Die deutsche DIN 66000 sieht UND und ODER als gleichwertig an. In der DIN 660000 müssen also Klammern gesetzt werden, die im Amerikanischen entfallen können. Wir wollen uns in diesem Skript der amerikanischen Schreibweise anschließen, um bei den späteren Software-Übungen nicht umlernen zu müssen. Prioritätsregeln 1. 2. 3. Negation Konjunktion (UND) Adjunktion (ODER) a a∧b a∨b 4. 5. 6. 7. NAND NOR Äquivalenz Antivalenz (XOR) a∧b a∨b a≡b a b Im Zweifel kann durch Klammernsetzung immer eine eindeutige Funktion angegeben werden. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 12 K. Müller, HS Bremerhaven 4.4 Funktionen für eine Variable (UNARY OPERATORS) Eingang a=1 0 Ausgang x Symbol Bezeichnung 0 1 0 1 x=0 x=a x=a x=1 Konstante 0 Identität Negation Konstante 1 Bild 1.6: 4.5 0 0 1 1 Unary Operators Funktionen für zwei Variablen (BINARY OPERATORS) Eingänge a= 1010 b= 1100 Ausgang x Symbol Bezeichnung 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 x=0 x = a∨b x = a∧b x=b x = a∧b x=a x=a b x = a∧b x = a∧b x=a≡b x=a x = a∨b x=b x = a∨b x = a∨b x=1 Konstante 0 NOR Inhibition Negation (b) Inhibition Negation (a) XOR (Antivalenz) NAND UND (Konjunktion Äquivalenz Identität (a) Implikation Identität (b) Implikation ODER (Disjunktion) Konstante 1 Bild 1.7: 4.6 in SPS vorhanden Binary Operators Übung: Aufstellen einer Wahrheitstabelle Geben Sie für folgende Schaltung die Wahrheitstabelle an. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 13 K. Müller, HS Bremerhaven a & a∧b b ≥1 1 c d 1 c a∧b ∨ c∧d∧e & c∧d∧e d e Bild 1.8: Schaltung aus einzelnen Gattern a b c d e a∧b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 c∧d∧e 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 a∧b ∨ c∧d∧e 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Steuerungs- und Feldbustechnik 14 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 4.7 Rechenregeln für eine Variable und eine Konstante Die folgenden Rechenregeln ermöglichen oft eine erhebliche Vereinfachung von logischen Schaltungen. 4.8 x∨0=x (2.1) x∨1=1 (2.2) x∧0=0 (2.3) x∧1=x (2.4) x∨x=1 (2.5) x∧x=x (2.6) x∨x=x (2.7) x∧x=x (2.8) x=x (2.9) Verwirklichung einfacher Gatterfunktionen durch mechanische Schalter Zum Verständnis von Logikschaltungen ist es hilfreich, sich eine mechanische Realisierung vorzustellen. In vielen Industrieanwendungen werden auch einfache logische Funktionen durch Schalter (Öffner und Schließer) verwirklicht. Schließer Bild 1.9: Öffner und Schließer Schließer Bild 1.10: Öffner Öffner Öffner und Schließer in SPS-Darstellung Durch Drücken des Tasters wird der Schließer geschlossen (Kontakt hergestellt); durch Drücken des Tasters auf dem Öffner wird der Kontakt geöffnet. Eingänge: Taster nicht gedrückt = 0 Taster gedrückt = 1 Steuerungs- und Feldbustechnik 15 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Ausgänge: Lampe aus = 0 Lampe leuchtet = 1 a b Batterie Bild 1.11: Glühlampe x Glühlampe x Glühlampe x UND-Gatter a b Batterie Bild 1.12: ODER-Gatter a b Batterie Bild 1.13: NAND-Gatter a Batterie Bild 1.14: NOR-Gatter b Glühlampe x Steuerungs- und Feldbustechnik 16 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven a Batterie x Glühlampe XOR-Gatter Bild 1.15: 5 b Programmierung einer Steuerung mit SPS Die nachfolgende Programmierung basiert auf der DIN19239 sowie den firmenspezifischen Erweiterungen von Step 7 Der SIEMENS AG. Wie wollen uns auf die Beschreibung der Steuerung auf die wichtige Ebene der AWL (Anweisungsliste) beschränken. 5.1 Operationen zur Signalverarbeitung Funktion Symbol Bemerkungen UND U ODER O XOR X nur Step 7 NICHT N nur für Eingang! Zuweisung = Setzen S Rücksetzen R Zählen + ZV Zählen --- VR Steuerungs- und Feldbustechnik 17 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Funktion Symbol Bemerkungen Laden L Laden von Konstanten für Zeitwerte oder Zähler Nulloperation NOP = no ooperation SPS-Programme sind “aktionsorientiert”, d.h. am Anfang jeder Anweisung steht eine Operation. Es folgt ein Operand. Im Gegensatz zur SPS sind moderne Programmiersprachen (z.B. Java, Python, C++) nicht “aktionsorientiert” sondern “objektorientiert”. Operand = Datum (Kennzeichen/Ergänzung/Parameter) oder eine Marke (Sprungadresse in Verbindung mit Sprüngen). 5.2 Operanden Funktion Symbol Beispiel Konstante K Eingang (aus Prozessabbild) E E0.0 EB10 EW4 ED2 Ausgang (aus Prozessabbild) A A4.2 Eingang physikalisch (Peripherie-Eingang) PE PE0.0 PEW2 (WORD) Ausgang physikalisch (Peripherie-Ausgang) PA PA0.2 PAD12 (DWORD) Lokale Variable L L6.2 LD8 Daten (im SPS-Programm) D DBW3 Zeiten (T = Timer) T T1 Zähler Z Z13 (BIT) (BYTE) (WORD) (DWORD (DWORD) Die Adressierung ist grundsätzlich Byte-orientiert. Die Adressangabe hinter dem Operanden gibt somit die Byte-Adresse an. Bei Bit-Operationen wird die Bitstelle durch einen Punkt abgetrennt. Z.B. bedeutet A4.2 Bit-Adresse 2 (das 3. Bit, die Zählung beginnt bei 0) der Byte-Adresse 4 (=5. Byte). Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 18 K. Müller, HS Bremerhaven Wenn WORDs (2 Byte) oder DWORDs (4 Byte) adressiert werden, kann es zu “Überlappungen” kommen EB10 EB11 EB12 EB13 EB14 EB15 EW10 EW11 ED10 Adressraum bei der SPS Bild 1.16: Wie man sieht, überlagert sich der Speicherbereich der Werte EB10, EW10 und ED10. Im Beispiel ist EB11 ist das obere Byte von EW10. Zu beachten ist, dass in der Byte mit der höheren Adresse das niederwertige Byte eines WORDs gespeichert wird. Beispiel: Gilt EW10 = 45AC hex, so ist EB10 = 45 hex und EB11 = AC hex. Das Speicherformat bei der SPS ist “big endian” (das niederwertigste Byte =LSByte steht an der höchsten Adresse (im Gegensatz zu “little endian” bei Intel). 5.3 Programmorganisation Funktion Symbol Beispiel Organisationsblock OB OB1 (OB1 ist die Wurzel allen Übels!) Unterprogramm (FunCtion) FC UC FC1 FB DB Bausteinende 5.4 BE Kontrollstrukturen Hier sind den Entwicklern der SPS-Syntax bunt gemischt deutsch-englische Symbole eingefallen. Funktion Symbol unbedingter Sprung SP bedingter Sprung SPB Bemerkungen Steuerungs- und Feldbustechnik 19 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Funktion Symbol Bemerkungen unbedingter Unterprogrammaufruf UC UC FB 1 bedingter Unterprogrammaufruf (Conditional Call) CC CC FB 5 Unterprogrammaufruf mit Parameterübergabe CALL CALL FB 2 IN1:=M1.0 6 Übung 1: Schreiben Sie ein SPS-Programm, dass folgende Logikfunktion realisiert A0.1 := (E0.0 ∧ E0.1) ∨ E0.2 . (1.1) Testen Sie das Programm im Simulator durch Setzen und Löschen der entsprechenden Eingänge. 7 Verknüpfungsoperationen Den Entwicklern der SPS-Syntax ist der Unterschied zwischen Operanden (Signalen) und Operationen (Verknüpfungen) entgangen. Die führt dazu, dass die Bedeutung von Anweisungen teilweise von vorangegangenen Anweisungen abhängt. Das ist natürlich ausgesprochen schwer verständlich und fehleranfällig. Aufgrund der unsauberen Syntax gibt es natürlich nur unsaubere Lösungen für das Problem, dass mit der Struktur der SPS für Bit-Operationen erklärt werden kann. Für Bit-Operationen steht ein spezieller “Akku” (nicht zu verwechseln mit den Akkus für BYTE-, WORD- und DWORD-Operationen) zur Verfügung. Der “Akku” für Bit-Operationen ist das VKE (Verknüpfungsergebnis). Eine syntaktisch “saubere” UND-Verknüpfung hätte folgendes Aussehen: Speichere letztes Ergebnis (STORE) Lade Bit E0.0 (LOAD Signal) Lade Bit E0.1 (LOAD Signal) UND-Verknüpfung (OPERATION) Speichere A0.0 (STORE Signal) Steuerungs- und Feldbustechnik 20 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Da Laden & Verknüpfen leider in der SPS syntaktisch untrennbar verbunden sind, sieht das Programmfragment ist der SPS folgendermaßen aus = A0.5 (STORE) U E0.0 (LOAD + UND?) U E0.1 (LOAD + UND = OPERATION) = A0.0 (STORE) Die Lösung der SPS besteht darin, dass die erste Operation nach einer Speicherung nicht als UND-Operation interpretiert wird, sondern als LOAD-Operation. Das UND in der Anweisung “U E0.0” wird also gar nicht ausgewertet. In der SPS-Sprache spricht man von VKE-Begrenzung durch einer Speicher-Operation. Das hat zur Folge, dass folgender Programmteil exakt die gleiche Wirkung hat: = A0.5 (STORE) O E0.0 (LOAD) U E0.1 (LOAD + UND = OPERATION) = A0.0 (STORE) Dies ist natürlich noch schlechter lesbar als das erste Beispiel. Die folgende Tabelle listet die VKE-begrenzenden Operationen auf. Danach wird eine Verknüpfungsoperation lediglich als “LOAD” interpretiert. Funktion Symbol Beispiel Zuweisung = = M0.0 Klammer auf U(, O(, X(, UN(, ... ON( E1.4 Set und Reset S, R S A0.2 Zeitoperationen SE, SA, SV, ... SI T1 Zähloperationen ZV, ZR ZV Z6 Sprungbefehle SPA, SPB, ... SPA M002 Rücksprungbefehle (Returns) BE, BEB, BEA BE 8 Schützschaltung Die SPS hat ihre Wurzeln in der elektronischen Umsetzung von Schützschaltungen. Es ist deshalb hilfreich für das Verständnis der Elemente einer SPS Schützschaltungen nachzubilden. Für eine bessere Lesbarkeit der Programme ist es empfehlenswert, mit symbolischen Namen anstelle der physikalischen Anschlüsse der Ein- und Ausgangsbaugruppen zu arbeiten. Die symbolischen Bezeichnungen werden in einer Symbolik-Datei verwaltet. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 21 K. Müller, HS Bremerhaven In der Symbolik-Datei erfolgt die Zuordnung zwischen dem Namen eines Signals und dem physikalischen Anschluss. Symbol Operand Typ Not_Aus Anlage_Ein Motor_An E0.0 E0.2 A0.4 BOOL BOOL BOOL Symbolik-Datei Bild 1.17: Der Datentyp “BOOL” kennzeichnet ein einzelnes Bit (andere Datentypen sind BYTE, WORD, DWORD, INT, REAL etc.). Zusätzlich besteht die Möglichkeit, erläuternde Kommentare zu den Symbolen anzugeben. Wenn sich physikalische Anschlüsse ändern, muss dies nur noch an einer Stelle in der Symbolik-Datei beschrieben zu werden. In dem SPS-Programm können die Symbole anstelle der physikalischen Anschlüsse benutzt werden. Zur Sicherheit fügt die SPS-Software aber auch die Anschlussnamen ein. Beispiel: UN U = “Not_Aus” “Anlage_Ein” “Motor_An” Das Programm wird aus diese Weise (auch ohne ausladenden Kommentar) lesbar. 8.1 Übung 2: Umsetzung einer Schützschaltung mit symbolischen Namen Die folgende Schaltung soll als SPS-Programm symbolisch programmiert werden. Überprüfen Sie die Funktion mit dem Simulator. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 22 K. Müller, HS Bremerhaven + Not_Aus TR1 k1 TR2 K1 Bild 1.18: Schützschaltung Die Zuordnung der physikalischen Ein- und Ausgänge zu den Schaltern und der Schützansteuerung ist beliebig. 9 Speicher Bisher wurden nur logische Schaltnetze betrachtet, deren Ausgänge eine logische Funktion aller Eingänge sind. Bei komplexen Steuerungen hängt der Ausgang nicht nur von den Eingängen ab, sondern auch von sogenannten internen Zuständen (Automat). Diese Begriffe aus der Digitaltechnik finden sich jedoch leider nicht in den Beschreibungen zur SPS wieder, so dass auf viele Erkenntnisse aus der Automatentheorie bei der SPS verzichtet werden muss. Ein Ein-Bit-Speicher wird in der SPS als RS-Flip-Flop behandelt (dieser Begriff wird in der SPS-Sprache auch nicht verwendet). Ein RS-Flip-Flop lässt sich asynchron setzen (S) oder rücksetzen bzw. löschen (R). S Q R Bild 1.19: RS-Flip-Flop (Speicher) R S Q Steuerungs- und Feldbustechnik 23 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Ein “1”-Signal am S-Eingang setzt den Ausgang auf “1”. Durch ein “1”-Signal am “R”-Eingang löscht den Ausgang. Der Ausgang bleibt auch erhalten, wenn beide Eingangssignale “0” sind. Das Flip-Flop speichert damit eine Information von einem Bit. Die linke und rechte Version unterscheiden sich durch den Zustand R = S = “1”. Das Flip-Flop links wird durch diesen Zustand gelöscht (= “Rücksetzdominanz”), das Rechte gesetzt (= “Setzdominanz”). Der Typ Flip-Flops wird durch implizit durch die Reihenfolge bei der Programmierung bestimmt. U E0.1 S A0.2 U E0.2 R A.02 // Rücksetzdominanz U R U S E0.2 A0.2 E0.1 A.02 // Setzdominanz Die letzte Anweisung (R) oder (S) bestimmt den Typ des Speichers. Schaltungstechnisch kann das RS-Flip-Flop als “Selbsthalteschütz” aufgefasst werden. 9.1 Übung 3: Programmieren ein RS-Flip-Flop mit Setzund Rücksetzdominanz Programmieren Sie eine AWL für beide Versionen und überprüfen Sie das Ergebnis. 10 Ablaufsteuerungen (Automaten) In den meisten Fällen besteht eine Steuerung nicht nur aus logischen Funktionen, sondern auch aus internen Zuständen. Das entstehende System nennt man auch Automat oder sequenzielle Schaltung. Es bestehen grundsätzlich zwei verschiedene Architekturen für Zustandsautomaten, die sich in der Verwendung der Eingangssignale unterscheiden. Zustandsautomat = Erzeugung von Ausgangssignalen als Folge von Eingangssignalen und Zustandsgrößen. Zustandsgrößen sind die Inhalte von Speichern (Flip-Flops). In der SPS wird jeder Zustand durch einen eigenen Speicher (Merker) kodiert (One-Hot-Encoding). Für einen Automaten verwendet man dagegen häufig eine minimale Anzahl an Speichern, d.h. mit n Speichern werden 2 n Zustände kodiert. Steuerungs- und Feldbustechnik 24 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Die Zustandsgrößen werden jeweils synchron durch ein Clock-Signal neu gesetzt. Dieses Clock-Signal nennt man auch Taktsignal. Man nennt diese Systeme deshalb auch getaktete Systeme. Komplexe digitale Systeme wie Mikroprozessoren oder Anlagensteuerungen sind immer getaktete Systeme Man unterscheidet sogenannte Moore- und Mealy-Maschinen. neuer Zustand Eingänge u Next-State Logic Zustand State Memory F(u,x) x Ausgänge Output Logic y G(x) Clock Input Clock Bild 8.1: Moore-Maschine Ausgänge neuer Zustand Zustand Output Logic u Eingänge Next-State Logic F(u,x) State Memory x y G(u,x) Clock Input Clock Bild 8.2: Mealy-Maschine Der offensichtliche Unterschied zwischen beiden Maschinen besteht darin, dass bei der Mealy-Maschine die Eingangssignale sich unmittelbar auf die Ausgänge auswirken. Bei der Moore-Maschine hängen die Ausgänge ausschließlich von den Zustandsgrößen ab. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 25 K. Müller, HS Bremerhaven Die logischen Funktionen F(u, x) , G(x) (8.1) der Moore-Maschine bzw. F(u, x) , G(u, x) (8.2) der Mealy-Maschine sind dabei die bekannten logischen Funktionen der vorangegangenen Kapitel. Das State-Memory besteht aus einer Reihe von Flip-Flops ohne jegliche weitere Logik. Diese formale Darstellung eignet sich gut zum Entwurf von komplexen Schaltungen. Einfache Automaten kann man natürlich auch intuitiv entwerfen. Bei praktischen Anwendungen können einzelnen Teile der Zustandsautomaten auch entfallen (bis auf die Speicher und die Clock-Leitung natürlich). Beispielsweise können die Ausgangsgrößen y identisch mit den Zustandsgrößen x sein. Dann entfällt die Funktion F(x). 10.1 Beispiel: Ampelsteuerung Eine einfache Ampelsteuerung für eine Fahrtrichtung muss mindestens die Zustände in Bild 8.3 beherrschen. Zustand Bild 8.3: 0 1 2 3 Minimaler Satz von Zuständen für eine Ampel Natürlich existieren bei einer realen Ampelanlage wesentlich mehr Zustände (Ampel der Kreuzungsfahrbahn, Fußgängerampel, Blinken des gelben Lichtes bei Störungen oder im Nachtbetrieb usw.). Wir wollen aber zunächst nur die Ampelphase gemäß Bild 8.3 verwirklichen, die sich zyklisch wiederholen soll. Zu Beginn müssen wir die Eingangs-, Ausgangs- und Zustandsgrößen definieren, mit denen wir die Aufgabe lösen können. EINGANGSGRÖSSE u: Reset-Signal, mit dem die Ampel auf “rot” geschaltet wird (soll Active-Low sein, d.h. ’0’ bedeutet “Reset”). ZUSTANDSGRÖSSEN x: Es existieren 4 Zustände. Dafür benötige wir 2 Bits, d.h. wir benötigen 2 Flip-Flops (z.B. D-Flip-Flops). Steuerungs- und Feldbustechnik 26 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven AUSGANGSGRÖSSEN y: rot, gelb, grün (Ansteuersignale für die einzelnen Lampen). Für dies Aufgabe ist eine Moore-Maschine geeignet, da sich die Ausgangsgrößen unmittelbar aus den Zustandsgrößen ableiten lassen. 10.1.1 Next-State-Logic (Eingangslogik) F(u, x) Wenn u = ’0’, dann soll immer der Zustand 0 generiert werden, anderenfalls der jeweilige Folgezustand. Wir können hier nicht die aus der Digitaltechnik bekannte Wahrheitstabelle benutzen, da in einer SPS die Zustände i.a. durch einzelne Bits kodiert wird und nicht als binäre Kodierung. 10.1.2 Output-Logic (Ausgangslogik) G(x) (Moore-Maschine) Hier muss die Zuordnung der Zustände zu den Ansteuersignalen für die einzelnen Lampen generiert werden. 10.1.3 State-Memory (Zustandsspeicher) Wie bereits erwähnt setzt man bei der SPS keine binäre Kodierung der Zustände an, sondern ordnet jedem Zustand ein einzelnes Flip-Flop zu. Von diesen Flip-Flops darf nur jeweils ein einziges gesetzt sein. Folgt ein Übergang von einem Zustand zu einem Folgezustand, so ist das Flip-Flop für den alten Zustand zu löschen; das jeweils neue Flip-Flop wird gesetzt (One-Hot-Encoding). 10.2 Zustandsdiagramm Das Verhalten eines Zustandsautomaten lässt sich im Zustandsdiagramm verdeutlichen. Jeder Zustand wird durch einen Kreis symbolisiert; Pfeile kennzeichnen die möglichen Übergänge. An den Pfeilen sind wird die Bedingung notiert, unter der der Übergang erfolgt. Steht an einem Pfeil kein Bezeichnung, so erfolgt der Übergang im nächsten Takt. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 27 K. Müller, HS Bremerhaven u = ’0’ u = ’0’ “0” rot u = ’1’ & T0 “1” rot/gelb u = ’0’ u = ’1’ & T1 u = ’1’ & T3 “3” gelb Bild 8.4: 11 u = ’1’ & T2 “2” grün Zustandsdiagramm für die Ampelsteuerung Verwirklichung mit SPS Eine SPS kennt kein “Clock”-Signal. Anstelle des “Clock”-Signals steht bei der SPS ein Zyklus (meist des OB1). Viele Elemente der SPS sind für ganz bestimmte Funktionen entwickelt worden. Die im folgenden beschriebene Verwirklichung setzt diese Elemente in einer typischen Art und Weise ein. Elegantere aber weniger konventionelle Lösungen sind natürlich ebenfalls denkbar. In SPS-Kreisen verwendet man eine spezielle Form der Zustandsgrafen, die mehr an ein Flussdiagramm erinnert. Steuerungs- und Feldbustechnik 28 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven vorhergehender Schritt WeiterschaltBedingungen Zustands-Nummer Rücksetzen Ausgänge Merker-Nummer nachfolgender Schritt Bild 1.20: Schritt (Zustand) einer Ablaufsteuerung (in Anlehnung an DIN40719) Jedem Zustand ist ein Merker zugeordnet, der als RS-Flip-Flip geschaltet wird. Die Ampelsteuerung bekommt dann folgende Struktur. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 29 K. Müller, HS Bremerhaven Start 0 rot (A0.0) M0.0 T3 ∨ Start 1 Start rot (A0.0) M0.1 T0 2 Start M0.2 rot (A0.0) gelb (A0.1) T1 3 Start gruen (A0.2) M0.3 T2 4 Start M0.4 1 Bild 1.21: gelb (A0.1) (= Sprung auf Zustand 1) Ablaufsteuerung für die Ampel in einer Richtung Das folgende Programm zeigt die Umsetzung der einzelnen Zustände. Es werden für jeden Zustand jeweils die Setz- und Rücksetzbedingungen aufgeführt. Es muss sichergestellt werden, dass nur ein Merkerbit, d.h. ein Zustand aktiv ist. Dieser Vorgang entspricht der Aufstellung der Ausgangslogik F(x). Es folgt die Ausgangslogik G(x), in der die Zuordnung zwischen den Ausgangsgrößen (Lampen der Ampel) und den Zustandsgrößen (Merkern) erfolgt. ORGANIZATION_BLOCK OB1 TITLE= ”Zyklisches Hauptprogramm” NETWORK //Ablaufsteuerung Ampel Steuerungs- und Feldbustechnik 30 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven // Zustand 0 (initial) UN E0.0 S M 0.0 U M 0.1 R M 0.0 // Zustand 1 (rot) U E0.0 U M O U M U T S M ON E0.0 O M R M 0.0 0.4 3 0.1 0.2 0.1 // Zustand 2 (rot/gelb) U M 0.1 U T 0 S M 0.2 ON E0.0 O M 0.3 R M 0.2 // Zustand 3 (gruen) U M U T S M ON E0.0 O M R M // Zustand 4 (gelb) U M U T S M ON E0.0 O M R M // ------- outputs O M O M O M = A0.0 0.2 1 0.3 0.4 0.3 0.3 2 0.4 0.1 0.4 0.0 0.1 0.2 O O = M M A0.1 0.2 0.4 U = M A0.2 0.3 // -------U L SE timer M S5T#2S T 0.1 0 // Rot-Phase Steuerungs- und Feldbustechnik 31 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven U L SE M 0.2 S5T#750MS T 1 // Rot-gelb-Phase U L SE M S5T#2S T // Gruen-Phase 0.3 2 U M 0.4 L S5T#1S SE T 3 END_ORGANIZATION_BLOCK 11.1 // Gelb-Phase Übung: Erweiterung der Ampelsteuerung um die Funktion “Blinken des gelben Lichts” Ist eine Ampelanlage außer Betrieb, so muss dies durch Blinken des gelben Lichts angezeigt werden. Verwenden Sie dazu den Eingang u. Ist u = ’0’, so soll das gelbe Licht blinken. Für u = ’1’ soll der normale Ampelzyklus ablaufen. a) Definieren Sie alle benötigten Zustände. Wieviele Flip-Flops werden benötigt? b) Zeichnen Sie ein Zustandsdiagramm für diese Zustände mit den Übergangsbedingungen. c) Schreiben sie eine Anweisungsliste und überprüfen Sie die Funktion. 12 Zeiten und Zähler Zeitbedingungen und Zählaufgaben treten in Steuerungen häufig auf. Eine SPS stellt eine Anzahl von verschieden Timern und einen Zähler zur Verfügung. 12.1 Zeiten (Timer) Es stehen 4 verschiedene Timer zur Verfügung. Auf diese Weise kann durch Auswahl des geeigneten Timers zusätzliche Logik eingespart werden. Die Timer-Versionen SI und SE werden am häufigsten eingesetzt. Timer sind wie RS-Flip-Flops mit einen zusätzlichen Zeitbedingung, d.h. ein Timer-Ausgang kann gesetzt (S) und rückgesetzt (R) werden. Von der Rücksetzbedingung macht man jedoch wenig gebrauch, da nach Ablauf der Zeit automatisch die Rücksetzbedingung greift. Steuerungs- und Feldbustechnik 32 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Eine Spezialität der SPS sind natürlich wieder Ausnahmen, die eine intuitives Verständnis der Funktionen unmöglich machen. Beispielsweise führt bei den Funktion SI und SE der Übergang 1 → 0 ebenfalls zum Rücksetzen des Ausgangs. Dieses “Feature” ist natürlich gut gemeint, aber höchstgradig inkonsistent. In den folgenden Diagrammen wird auf Beispiele für den Rücksetzeingang verzichtet, da die Aufgabe des (R)-Eingangs ohne Ausnahmen klar ist. SI U L SI Bild 1.22: E0.0 E0.0 S5T#3s T0 T0 Ablauf des Timers SI (Impuls) Mit SV lässt sich ein Impuls maximaler Breite erzeugen. Wenn der S-Eingang auf “0” geht, wird auch der Ausgang “0”. SV U L SV Bild 1.23: E0.0 E0.0 S5T#3s T0 T0 Ablauf des Timers SV (verlängerter Impuls) Die Breite des Impulses kann die den S-Eingang nicht verkürzt werden. Ein Wiedertriggern des Timers ist möglich (0→1-Übergang des Eingangs). Der Timer startet dann erneut. Dieser Fall ist im Diagramm nicht dargestellt. SE U L SE Bild 1.24: E0.0 E0.0 S5T#3s T0 T0 Ablauf des Timers SE (Einschaltverzögerung) Nach Ablauf des Timers wird der Ausgang gesetzt, vorausgesetzt, der Eingang ist noch aktiv. Diese Funktion wird gewöhnlich gewählt, wenn Zeitbedingungen einzuhalten sind. Steuerungs- und Feldbustechnik 33 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven SA U L SA Bild 1.25: E0.0 E0.0 S5T#3s T0 T0 Ablauf des Timers SA (Ausschaltverzögerung) Dies ist die einzige Timerfunktion, bei der die negative Flanke des Eingangssignals ausgewertet wird, d.h. wenn im aktuellen Zyklus der Wert E0.0==”0” ist und im vorangegangenen Zyklus E0.0==”1” war. Nach Ablauf des Timers wird der Ausgang auf “0” gesetzt. Der Eingang muss dazu aber “0” sein (s. Diagramm 1.25). 12.2 Beispiel für den Einsatz von Timern: Rechteckgenerator Mit einem Eingangssignal soll ein Rechteckgenerator eingeschaltet und ausgeschaltet werden, der das in Bild 1.26 dargestellte Signal abgibt. A0.0 1s Bild 1.26: Ausgang des Funktionsgenerators Man benötigt zwei Timer, die mit den Zeiten 333ms sowie 667ms geladen werden. Eine exakte Realisierung ist aufgrund von Zykluszeiten im Bereich einiger Millisekunden ohnehin nicht möglich. Die Entwicklungssoftware wird evtl. die Zeiten je nach Möglichkeit der SPS ändern, falls eine ms-Auflösung nicht gegeben ist. Da die Timer auch als RS-Flip-Flop aufgefasst werden können, sind für die Zustände keine weiteren Flip-Flops (als Merker) notwendig. Die Timer selbst sind die Zustandsgrößen der Ablaufsteuerung. ORGANIZATION_BLOCK OB1 TITLE= ”Zyklisches Hauptprogramm” //Rechteckgenerator mit 1Hz und 1:2 Pulsverhaeltnis // Timer 0 U E 0.0 UN T 1 L S5T#330MS SV T 0 // Timer 1 U E 0.0 UN T 0 L S5T#660MS Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 34 K. Müller, HS Bremerhaven SV T 1 // Ausgang U T 0 = A 0.0 END_ORGANIZATION_BLOCK 12.3 Zähler Es existiert nur ein Zählertyp, der als Baustein in einem Funktionsplan (FUP) folgende Form aufweist. Aus dieser Darstellung werden leicht alle Funktionen ersichtlich. Z5 Bild 1.27: vorwärts rückwärts ZV ZR Setzen Zählerstand BCD Rücksetzen S ZW R DU DE O Zahlerstand dual Zählerstand BCD Ausgang binär Zählerbaustein Mit ZV und ZR werden die positiven Flanken der betreffenden Signale gezählt. Der Zähler kann jederzeit auf einen bestimmten Zählerstand gesetzt werden. Der Zählerstand muss 16 Bit BCD-kodiert vorliegen. Das Auslesen des Zählerstands (mit L) kann dual oder BCD erfolgen. Der logische Ausgang liefert ein “0”-Signal, wenn der Zählerstand null ist. Anderenfalls ist der Ausgang “1”. Beispiele für den Umgang mit einem Zähler (angenommen Zähler 5). 12.4 u ZV E0.0 Z5 // Vorwärtszählen mit E0.0 u ZR E0.1 Z5 // Rückwärtszählen mit E0.1 u L S E0.3 C#100 Z5 L LC Z5 Z5 // Laden der Zahl 100 BCD-kodiert -> Akku // mit positiver Flanke an E0.3 wird // Z5 geladen (mit 100) // Zählerstand dual // Zählerstand BCD Übung: Vorwärts-/Rückwärtszähler mit Anzeige Es soll ein ladbarer Vorwärts-/Rückwärtszähler programmiert werden, der den aktuellen Zählerstand auf einer BCD-Anzeigebaugruppe ausgibt. Eingänge: Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 35 K. Müller, HS Bremerhaven E0.0 E0.1 E0.2 13 Zähler laden mit 12 Zählen vorwärts Zählen rückwärts Steuerung einer Ofenanlage Nachdem alle Elemente einer SPS behandelt wurden, können wir nun eine in der Industrie vorkommende vollständige Steuerung entwerfen. Es handelt sich um die Steuerung einer Ofentür, wie sie bei sogenannten Glühöfen für die Wärmebehandlung von Stahl oder Aluminium benötigt wird. S1 S2 Tür Ofen y2 Öffnen Bild 1.28: Li y1 Schließen Halt Ofentüranlage Die Ein- und Ausgänge des Prozesses sind: Eingänge: Öffnen E0.0, “1” = Taster betätigt Schließen E0.1, “1” = Taster betätigt Halt E0.2, “0” = Taster betätigt S1 E0.3, “1” = Endschalter Tür offen betätigt S2 E0.4, “1” = Endschalter Tür geschlossen betätigt Li E0.4, “1” = Objekt im Türbereich Ausgänge: y1 “1” = Tür schließt y2 “1” = Tür öffnet Die Signale werden zur besseren Lesbarkeit in Steurungsprogrammen oft symbolisch deklariert. Es existiert dann eine Datei, in der den physikalischen Signalen symbolische Steuerungs- und Feldbustechnik 36 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Namen gegeben werden. Besser (flexibler) wäre eine umgekehrte Zuordnung, wie es beispielsweise VHDL vorsieht. Randbedingungen: 1. y1 und y2 dürfen nicht gleichzeitig betätigt werden. 2. Nach 5 Sekunden muss die Tür automatisch schließen, damit der Ofen nicht auskühlt. 3. Wenn die Lichtschranke anspricht, muss ein Schließvorgang unterbrochen werden. 4. Ist der Ofenbereich wieder frei, so soll der Schließvorgang wieder fortgesetzt werden. Es ist erstrebenswert, eine Steuerung mit einer minimalen Anzahl von Zuständen zu verwirklichen. Natürlich ist es immer möglich, zuviele Zustände aufzustellen, z.B. “Tür offen”, “Tür schließt”, “Tür geöffnet” und “Tür öffnet”. Dies verkompliziert jedoch den Entwurf und ist folglich auch fehleranfälliger als eine minimale Realisierung. Wir benötigen hier nur zwei Zustände “Tür öffnet” sowie “Tür schließt”, wenn wir die Fälle “Tür offen” und “Tür geschlossen” als in den Schaltern S1 und S2 gespeichert auffassen. Weiterhin wird noch ein Timer benötigt, um das Schließen der Tür einzuleiten, falls nicht der Taster “Schließen” gedrückt wird. “Öffnen” Öffnen 0 M0.1 v S1 v “Halt” M0.0 “Schließen” v T0 Schließen 1 M0.0 v S2 v “Halt” Bild 1.29: y1 := M0.0 y2 := M0.1 & Li M0.1 Logik für Ofentürsteuerung Die Zustände sind gegenseitig verriegelt. Da der Ausgang y1 identisch mit dem Zustand M0.0 ist, könnte auch der Ausgang als Zustand geführt werden. Schreiben Sie eine SPS-Anweisungsliste, in der Sie die Steuerung nach Bild 1.29 umsetzen. 14 CPU Die S7 -CPU kann als virtuelles Rechenwerk verstanden werden, d.h. eine CPU, die jede Zeile der Anweisungsliste (AWL) in Hardware abarbeiten kann. In der SPS befindet sich Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 37 K. Müller, HS Bremerhaven ein Mikroprozessor, der die virtuelle CPU emuliert. Die Hersteller legen i.a. nicht offen, woraus ihre tatsächliche Hardware besteht. Für den Anwender ist dies jedoch auch von untergeordneter Bedeutung. Bei einer Soft-SPS, d.h. einer Emulation der SPS auf einem PC, führt dann die CPU des PCs (Intel, AMD, Sun, etc.) dann alle Berechnungen aus. Für das Verständnis der Befehle und vor allem der Einschränkungen der SPS ist eine Kenntnis der internen Abläufe innerhalb der SPS-CPU hilfreich. Bei der Fehlersuche (Debugging) werden die internen Register und Statusbits benötigt. Eine Teil der Entwicklungssoftware, der sogenannte Debugger liefert den Zustand aller internen Register und Statusbits nach jeder Anweisung, wodurch sich alle Berechnungen detailliert nachvollziehen lassen. Akkumulatoren Adressregister Stack Akku 1 AR 1 BIE OR VKE FK 1 Akku 2 AR 2 BIE OR VKE FK 2 BIE . . . BIE OR . . . OR VKE . . . VKE FK . . . FK 3 Akku 3 Nur S7-400 Akku 4 DB-Register DB1 (DB) Stack-Pionter DB2 (DI) Status-Word KLSP 8 BIE Bild 1.30: 7 7 6 5 4 3 2 1 0 A1 A0 OV OS OR STA VKE ER Register der virtuellen SPS-CPU Der Registersatz der SPS-CPU ist primitiv und durch die gelegentliche Nummerierung von 1..n (anstelle von 0..n-1) auch etwas inkonsistent. Für die Automatisierungstechnik hat die Struktur jedoch den Vorteil, dass sicherheitskritische Programmteile detailliert nachvollziehbar sind. Bei Kenntnis des internen Aufbaus und der squenziellen Abarbeitung des Programms werden auch scheinbar komplexe Phänomene wie Speicher mit “Rücksetzdominanz” verständlich. Diese Eigenschaft erklärt sich aus der Tatsache, dass einfach alle Befehle sequenziell abgearbeitet werden. Wenn also ein Rücksetzbefehl nach dem Setzbefehl für ein RS-Flip-Flop steht, wird halt das Flip-Flop zuerst gesetzt und dann zurückgesetzt. Die letztere Anweisung hat also Priorität über das erste Auftreten eines entsprechenden Befehls. Steuerungs- und Feldbustechnik 38 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Zum Vergleich sei an dieser Stelle die ARM7-CPU gezeigt (Bild 1.31). Bei dieser CPU kann der Ablauf von Programmen aufgrund der RISC-Struktur (reduced instruction set computer) nicht einfach nachvollzogen werden. Bild 1.31: ARM7 Core ( Advanced Risc Maschines) Die vier bzw. zwei Akkus der SPS-CPU werden für logische und arithmetische Operationen verwendet. Die Akkus arbeiten dabei wie ein Stack, d.h. bei Lade-Operationen wird der Akku 1 beschrieben und der Inhalt das Akkus 1 wird zuvor nach Akku 2 kopiert. Anschließend gibt man die Operation zwischen beiden Akkus an (z.B. Addition = “+I”). Die Adressregister verwendet man für die indirekte Adressierung, d.h. Operationen beziehen sich auf die Adresse, die sich in den ARi-Registern befindet. Die DB-Register enthalten die Nummer des verwendeten Datenbausteins. Das DI-Register enthält die Nummer des sogenannten Instanzbausteins bei Verwendung von FBs (Funktionsblöcken). Diese Register werden in der Regel nicht explizit gesetzt. Durch Angabe des Datenbausteins beim Zugriff (“L DB10.variablex”) erfolgt die richtige Belegung der DB-Register automatisch. Der Stack wird nur für Bit-Operationen benötigt. Die Verwaltung des Stacks wird ebenfalls von der Entwicklungssoftware übernommen. Im Debugger ist eine Kenntnis über den Aufbau des Stacks zur Überprüfung von Zwischenergebnissen jedoch hilfreich. Jede Klammerebene benötigt eine weitere Stufe im Stack. Somit dürfen auch nicht mehr als 7 Klammerebenen benutzt werden. Allerdings wird dann das Programm auch unübersicht- Steuerungs- und Feldbustechnik 39 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven lich. Man arbeitet deshalb besser mit Zwischenergebnissen, d.h. mit Merkern. Die Bits im Stack haben die gleiche Bedeutung wie im Statuswort mit Ausnahme von “FK”. Die Funktionskennung (FK) gibt die Operation bei Öffnen einer Klammer an (also “U”, “O”, “X” etc.). Die einzelnen Bits des Statuswortes können direkt ausgewertet werden (über “L STW” bzw. “T STW”). In der Praxis erweist es sich allerdings selten als notwendig, auf das Statuswort direkt zuzugreifen. Die Bedeutung der einzelnen Bits des Statuswortes ist im folgenden aufgeführt. Bit Name Bedeutung 0 ER “Erstverknüpfung” Dies ist das “Reparaturbit” für die unsaubere Step 7-Syntax, bei der die erste Operation unabhängig vom Befehl als Lade-Befehl zu interpretieren ist. Nach Zuweisungen wird ER = 0 gesetzt, d.h. U E0.4 ist dann ein Lade-Befehl. 1 VKE “Verknüpfungsergebnis” Dies ist das aktuelle Ergebnis einer logischen Bit-Operation (Akku für Bit-Operationen). 2 STA “Status-Bit” Wert des letzten Operanden, der VKE beeinflusst hat. 3 OR “ODER-Flag” Wird mit dem Befehl “O” (ODER) gesetzt. 4 OS “Overflow-speichernd” Dieses Bit speichert einen aufgetretenen Überlauf (Overflow) aus arithmetischen Operationen. Bei dem bedingten Sprung SPS (Verzweigung bei Overflow) wird dieses Bit wieder zurückgesetzt. 5 OV “Overflow” Überlauf bei arithmetischer Operation. 6 A0 7 A1 Diese Bits speichern das Ergebnis einer Vergleichsoperation. Der Wert dieser Bits wird für bedingte Sprünge ausgewertet. 8 BIE 15 “Binärergebnis” Verwendung intern als Zwischenspeicher für VKE. Prozesse in einer SPS-Applikation In einer SPS-Anwendung können mehrere Prozesse existieren, die mit unterschiedlichen Prioritäten ablaufen. Die Prozesse werden OBs (Organisationsblöcke) genannt. Die Prozessnummern sind dabei fest vergeben. Falls ein OB mit einer bestimmten Nummer Steuerungs- und Feldbustechnik 40 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven existiert, kann er ausgeführt werden, wenn die entsprechenden Bindungen für seine Ausführung erfüllt sind. Die möglichen Prozesse sind in Bild 1.32 aufgeführt. Neustart OB100 Start Zyklusbetrieb Ereignisgesteuerter Betrieb (Interrupts) OB10---17 Zeit Uhrzeit Asynchron Hintergrund Bild 1.32: Wiederanlauf OB101 Kaltstart OB102 OB1 OB20---23 Verzögerung OB30---38 Weckalarm OB40---47 Prozess OB70,72,80 Fehler OB90 SPS-Prozesse (Organisationsblöcke) Die Startprozesse werden genau einmal durchlaufen und lassen sich für die Initialisierung der Steuerung benutzen. Die SPS setzt alle Variablen und Flip-Flops auf null. Für viele Anwendungen ist dies ausreichend. Falls Variablen bzw Speicher auf bestimmte Werte zu Beginn gesetzt werden müssen, bietet sich eine der Initialisierungsprozesse OB100, OB101 oder OB102 an (auch mehrere können eingesetzt werden). Anschließend wird er OB1 zyklisch durchlaufen (s. Bild 1.33). Eine Vielzahl von Anwendungen benutzt lediglich den OB1. Der OB1 muss in jeder Anwendung existieren. Er darf auch leer sein (OB1 enthält keine Anwendungszeilen). Der OB1 enthält allerdings nicht nur die programmierten Anweisungen, sondern besitzt eine Überwachung und stellt die Verbindung zwischen den physikalischen Ein-/Ausgängen und dem Prozessabbild her. Der OB1 besitzt eine Zykluszeitüberwachung. Sollte die Zykluszeit überschritten werden, so ist die ordnungsgemäße Funktion nicht mehr gegeben. Es wird dann der Fehlerbehandlungsblock OB80 aufgerufen, der die Anlage in einen sicheren Zustand überführen kann (i.a. wird die Anlage dann abgeschaltet). Es folgt die Übertragung der physikalischen Ein-/Ausgänge in das Prozessabbild. Abschließend werden alle Anweisungen abgearbeitet und der OB1 beginnt erneut. Steuerungs- und Feldbustechnik 41 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Zyklusüberwachungszeit starten PAs schreiben (ins Prozessabbild) PEs lesen (aus Prozessabbild) OB1-Anweisungen abarbeiten Bild 1.33: Struktur des OB1 Die SPS-Firmware verwaltet eine Reihe asynchroner Ereignisse, welche über System Functions (SFCs) verwaltet werden. Die freigegebenen asynchronen OBs müssen natürlich existieren. Eine sehr häufig benutzte asynchrone Funktion ist der OB35, der periodisch in einem bestimmten zeitlichen Raster aufgerufen wird. Damit lassen sich z.B. Regler mit einer konstanten Abtastzeit verwirklichen. 16 Fehlersuche Die SPS-Entwicklungssoftware überprüft lediglich, ob die Anweisungen syntaktisch richtig sind. Es können leicht fehlerhafte Programme eingegeben werden, die einen Übergang der SPS in den Zustand “Stop” übergeht. Programmfehler, die erst bei Ablauf des Programms erkannt werden, nennt man Laufzeitfehler. Der Abschnitt befasst sich mit Gründen für Laufzeitfehler und mit der systematischen Suche nach Laufzeitfehlern. Als Beispiel dient folgendes Programm bestehen aus OB1, FC1 und FC2. OB1: UC FC 1 Steuerungs- und Feldbustechnik 42 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven FC1: UC FC 2 U U = L UN L = M E A W#16#55AA E DBW A 0.0 0.0 0.1 FC2: 0.1 2 0.0 Dieses Programm lässt sich fehlerfrei in die SPS laden. Die SPS lässt sich jedoch nicht permanent in den Zustand “Run” schalten, da die SPS sofort in den Zustand “Stop” übergeht. Der Grund liegt ein einer Anweisung, die die SPS nicht ausführen kann. Diese Stelle lässt sich über den sogenannten Diagnosepuffer auffinden. Unter AG--->Baugruppenzustand, Unterpunkt “Diagnose” sind Ereignisse wie Start, Stop oder Fehler aufgelistet. Hier findet sich die Fehlermeldung “Fehler beim Zugriff auf einen Datenbaustein über das DB-Register, FC2”. Betätigt man dann den Button “Baustein öffnen” gelangt man in den betreffenden Funktionsblock. Die Zeile, die den Fehler ausgelöst hat, ist farblich markiert. In unserem Beispiel ist dies die Zeile L DBW 2 . Es wird versucht, auf einen Datenbaustein zuzugreifen, der nicht existiert. In einem solchen Fall geht die SPS-CPU automatisch in den Zustand “Stop”. Nicht alle Fehler lassen sich über den Diagnosepuffer auffinden. Hier hilft die Untersuchung des “Stacks” weiter, indem detailliert der Zustand der CPU vor dem Fehler protokolliert ist. Ebenfalls kann zurückverfolgt werden, welchen Weg das Programm zu der fehlerhaften Stelle genommen hat. Unter AG--->Baugruppenzustand, Unterpunkt “BStack/UStack/LStack” kann auf diese Informationen zugegriffen werden. Man erkennt zunächst, welche Blöcke aufgerufen wurden. Da die Liste mit FC2 endet, ist dort also der Fehler aufgetreten. Wählt man diesen Baustein aus und betätigt den “UStack”-Button, so erhält man alle Registerinhalte zum Zeitpunkt des Abbruchs, sowie die Information, an welcher Adresse innerhalb des betreffenden Blockes der Fehler aufgetreten ist. Der Button “Baustein öffnen” führt dann an die fehlerhafte Stelle des betreffenden Funktionsblocks. Bei komplexeren Fehlern (z.B. Feldgrenzenüberschreitungen bei Arrays) ist die Weg über den Stack die einzige Möglichkeit, Fehler aufzufinden. 17 Logische Operationen auf Wortebene Häufig sind logische Funktionen, die mehrere Bits umfassen, wesentlich effizienter als logische Bitoperationen. In einer SPS lassen sich logische Funktionen auch auf WORDs Steuerungs- und Feldbustechnik 43 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven (16 Bit) und DWORDs (32 Bit) anwenden. Mn kann auf diese Weise einfach ganze Gruppen von Signalen (z.B. Schaltern) mit einem Befehl verarbeiten. Eine Verarbeitung auf Byte-Ebene ist nicht möglich; es stehen nur WORD- (16 Bit) und DWORD-Operationen (32 Bit) zur Verfügung. Die Berechnungen erfolgen im Akku 1, der auch das Ergebnis hält. Der zweite Operand befindet sich entweder im Akku 2 oder wird als Konstante auf der Befehlszeile mit angegegeben. Auch hier zeigt sich ein Hang zur Inkonsistenz, da nicht alle Operationen auf Bit-Ebene auch auf WORD- bzw. DWORD-Ebene möglich sind. Logische Operationen für WORDs (16 Bit): Operator Bedeutung UW UND OW ODER XOW XOR (Antivalenz) Logische Operationen für DWORDs (32 Bit): Operator Bedeutung UD UND OD ODER XOD XOR (Antivalenz) Die Operationen werden bitweise, jeweils für die Bits gleicher Wertigkeit zweier Worte durchgeführt. Befehle wie z.B. UN existieren für WORD- und DWORD-Operationen nicht. Beispiel: Es soll festgestellt werden, ob mindestens ein Signal aus einer Gruppe von 8 Signalen ungleich null ist. L UW L <>I = EB 0 W#16#00FF 0 A 0.0 Hier wurde allerdings bereits die Vergleichsoperation auf null verwendet, die erst in Abschnitt 18.1 beschrieben wird. Man kann leicht erkennen, dass sich das Programm leicht auf 16 oder auch 32 Signale anpassen lässt. 18 Algebraische Berechnungen In einer SPS lassen sich algebraische Berechnungen durchführen, wie sie z.B. bei der Messwertverarbeitung oder auch bei digitalen Reglern und Filtern anfallen. Die Steuerungs- und Feldbustechnik 44 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven SPS-Syntax für algebraische Berechnungen ist ist an die übrige Syntax für logische Funktionen angelehnt. Als Konsequenz steht man vor einer Programmieraufgabe, die man als “Strafe für sündige Mönche” missverstehen könnte. Im Vergleich zu allen anderen Programmiersprachen wird hier auf jeden lästigen Komfort verzichtet, der einem die Arbeit erleichtern könnte. Die folgenden elementaren Datentypen setzt man für algebraische Berechnungen ein. Bezeichnung Datentyp Wortbreite BYTE Character 8 Bit (wird selten für Berechnungen verwendet) INT Integer (signed) 16 Bit DINT Integer (signed) 32 Bit WORD Integer (unsigned) 16 Bit DWORD Integer (unsigned) 32 Bit REAL Real (single precision) 32 Bit Selbstverständlich existieren keine intrinsischen Operationen ( außer MOD), die auf alle Datentypen anwendbar sind. Zu jedem Datentyp existiert somit ein Satz von zulässigen Operatoren. Operatoren für 8 Bit Festkommazahlen (BYTE): Operator Bedeutung INC <n> Addition der Zahl n zum Akku 1 (0 ≤ n ≤ 255) Akku 1 := Akku 1 + n DEC <n> Subtraktion der Zahl n vom Akku 1 (0 ≤ n ≤ 255) Akku 1 := Akku 1 --- n Operatoren für 16 Bit Festkommazahlen (INT und WORD): Operator Bedeutung +I Addition: Akku 2 + Akku 1 ---I Subtraktion: Akku 2 --- Akku 1 *I Multiplikation: Akku 2 * Akku 1 /I Division: Akku 2 / Akku 1 SLW Akku 1 Schieben nach links, MSB ---> A1, 0 ---> LSB SRW Akku 1 Schieben nach rechts, 0 ---> MSB, LSB ---> A1 Steuerungs- und Feldbustechnik 45 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Operator Bedeutung SSI Akku 1 Schieben nach rechts mit Kopie des Vorzeichens VZ ---> MSB, LSB ---> A1 MOD Modulo-Operation (Rest der Division Akku 2 / Akku 1) INVI Inversion aller Bits (Einerkomplementbildung) NEGI Negation (Zweierkomplementbildung) Operatoren für 32 Bit Festkommazahlen (DINT und DWORD): Operator Bedeutung +D Addition: Akku 2 + Akku 1 ---D Subtraktion: Akku 2 --- Akku 1 *D Multiplikation: Akku 2 * Akku 1 /D Division: Akku 2 / Akku 1 SLD Akku 1 Schieben nach links, MSB ---> A1, 0 ---> LSB SRD Akku 1 Schieben nach rechts, 0 ---> MSB, LSB ---> A1 SSD Akku 1 Schieben nach rechts mit Kopie des Vorzeichens VZ ---> MSB, LSB ---> A1 RLD <n> Akku 1 Rotieren nach links um n Bits b31 ---> A1 (Bit 31 wird jeweils in Statusbit A1 kopiert) RRD <n> Akku 1 Rotieren nach rechts um n Bits b0 ---> A1 (Bit 0 wird jeweils in Statusbit A1 kopiert) RLDA Akku 1 Rotieren nach links durch das Statusbit A1 (33 Bit Rotation) RRDA Akku 1 Rotieren nach rechts durch das Statusbit A1 (33 Bit Rotation) MOD Modulo-Operation (Rest der Division Akku 2 / Akku 1) INVD Inversion aller Bits (Einerkomplementbildung) NEGD Negation (Zweierkomplementbildung) Operatoren für 32 Bit Fließkommazahlen (REAL): Operator Bedeutung +R Addition: Akku 2 + Akku 1 ---R Subtraktion: Akku 2 --- Akku 1 Steuerungs- und Feldbustechnik 46 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Operator Bedeutung *R Multiplikation: Akku 2 * Akku 1 /R Division: Akku 2 / Akku 1 SIN / COS / TAN trigonometrische Funktionen z.B. Akku 1 := sin(Akku 1) ASIN / ACOS / ATAN inverse trigonometrische Funktionen z.B. Akku 1 := asin(Akku 1) LN / EXP transzendente Funktionen: natürlicher Logarithmus und Exponentialfunktion SQR / SQRT Quadrat- und Quadratwurzel-Funktion NEGR Negation (Multiplikation mit ---1.0) ABS Absolutwertbildung 18.1 Auswertung algebraischer Operationen Neben der eigentlichen Berechnung von Zahlenwerten müssen die Ergebnisse oft mit Zahlenwerten verglichen werden, um beispielsweise Grenzwerte überprüfen zu können. Grundsätzlich werden bei Vergleichsoperationen die beiden Akkus (Akku 1 und Akku 2) miteinander verglichen und als boolsches Ergebnis das VKE-Bit gesetzt bzw. gelöscht. Die SPS kennt weder generische Vergleichsoperationen, noch erfolgt einer Überprüfung, ob der Vergleich mit den richtigen Datentypen durchgeführt wird. Bei sicherheitskritischen Anwendungen, sollten Vergleiche deshalb besonders untersucht werden. Alternativ bietet sich der Einsatz modernerer Programmiersprachen wie ST (Structured Text), C++ oder Java an. Die Siemens SPS erlaubt die Verwendung von ST, Ge-Fanuc gestattet ST sowie ANSI-C. Jeder Vergleich besteht aus dem Vergleichsoperator und einem Postfix, das den Typ angibt. Beispiel: <=D Hier ist “<=” der Vergleichsoperator “kleiner gleich” und D das Postfix für den Datentyp DWORD (32 Bit Integer). Postfix-Kennung für Datentypen (Vergleiche): Postfix Bedeutung I 16 Bit Integer D 32 Bit Integer R Real Steuerungs- und Feldbustechnik 47 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Kennungen der Vergleichsoperatoren: Operator Bedeutung == Akku 2 = Akku 1 (gleich) <> Akku 2 ≠ Akku 1 (ungleich) < Akku 2 < Akku 1 (kleiner) <= Akku 2 ≤ Akku 1 (kleiner gleich) > Akku 2 > Akku 1 (größer) >= Akku 2 ≥ Akku 1 (größer gleich) 18.2 Konversion zwischen Zahlensystemen Die Daten für Ein-/Ausgaben (Anzeigen oder Sensoren) unterscheiden sich häufig von Rechengrößen in der Zahlendarstellung. Deshalb werden gelegentlich Umwandlungen in andere Zahlenformate erforderlich. Die Standard-Operationen zur Datentypwandlung sind im folgenden zusammengefasst (INT = 16 Bit Integer, DINT = 32 Bit Integer). Operator Bedeutung ITD Umwandlung INT ---> DINT ITB Umwandlung INT ---> BCD DTB Umwandlung DINT ---> BCD DTR Umwandlung DINT ---> REAL BTI Umwandlung BCD ---> INT BTD Umwandlung BCD ---> DINT RND+ Umwandlung REAL ---> DINT mit Rundung auf nächstgrößere ganze Zahl (ceil) RND--- Umwandlung REAL ---> DINT mit Rundung auf nächstkleinere ganze Zahl (floor) RND Umwandlung REAL ---> DINT mit Rundung auf nächstliegende ganze Zahl (round) TRUNC Umwandlung REAL ---> DINT (ganzzahliger Teil einer Fließkommazahl, entspricht RND--- für positive Zahlen) 19 Beispiel: Einlesen von Temperaturdaten und Darstellung auf Siebensegmentanzeige Es werde angenommen, dass die Temperatur als 32 Bit Integer in Vielfachen von Milli-Fahrenheit vorliegt. Die Anzeige soll BCD-kodiert in Grad Celsius mit zwei Steuerungs- und Feldbustechnik 48 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Vorkomma- und zwei Nachkommastellen erfolgen. Die Umrechnungsformel zwischen Fahrenheit und Grad Celsius lautet ˚C = 5 (Fahrenheit − 32) = 0.55555555 (Fahrenheit − 32) . 9 (1.2) Nachfolgend ist eine Beispiellösung (ohne Kommentar) angegeben. Versuchen Sie, die einzelnen Programmschritte nachzuvollziehen. L L ITD -D DTR L *R L /R L *R RND DTB T L#60000 32000 // 60 Fahrenheit 5.000000e+00 9.000000e+00 1.000000e-01 AW 0 Man kann erkennen, dass sich die Entwickler der SPS alle erdenkliche Mühe gegeben haben, jegliche Eleganz und jeglichen Komfort bei der Programmierung zu vermeiden. Die Lösung ist noch unvollständig, da die Über- bzw. Unterschreitung des darstellbaren Temperaturbereichs nicht abgefangen wird. Die Anzeige würde bei negativen Temperaturen oder Temperaturen größer als 99,99 ˚C nur Unsinniges darstellen. Das Programm ist so zu erweitern, dass Unter- und Überlauf anzeigt werden sollen und dass die Anzeige auf zulässige Werte beschränkt bleibt. // 1.: 60F, L // L // L 2.: 600F, 3.: -1F L#60000 L#600000 L#-1 L -D DTR L *R L /R L *R RND T L#32000 L <I 0 5.000000e+00 9.000000e+00 1.000000e-01 #Temperature Steuerungs- und Feldbustechnik 49 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Z000 Z001 = SPBN L T A 2.0 Z000 L#0 #Temperature :NOP L L >I = SPBN L T 1 #Temperature 9999 :NOP L DTB T 1 #Temperature A 2.1 Z001 L#9999 #Temperature AW 0 Die gleiche Funktion mit ANSI-C könnte zum Vergleich viel kürzer und lesbarer ausfallen: Fahrenheit = 60000; // = 600000; = -1; Deg_Celsius = 5.0 / 9.0 * (Fahrenheit - 32000); Temperature = floor(Deg_Celsius + 0.5); sys$clrBit(2, 0); sys$clrBit(2, 1); if (Temperature < 0) { Temperature = 0; sys$setBit(2, 0); } else if (Temperature > 9999) { Temperature = 9999; sys$setBit(2, 1); } sys$displayW(0, Temperature); Leider ist die Programmierung von SPS-Geräten nur bei wenigen Herstellern in höheren Programmiersprachen möglich (z.B. GE-FANUC). Höhere Programmiersprachen sind deutlich weniger fehleranfällig und sparen Entwicklungszeit. 20 Beispiel: Berechnung von Scheinleistung und Blindleistung aus gemessenen Werten von Strom und Wirkleistung Wir nehmen an, dass Strom I (in mA) und Wirkleistung P (in W) gemessen werden. Daraus lassen sich bei symmetrischer Drehstromlast Scheinleistung S und Blindleistung Q berechnen (U beträgt 400V) S = 3 UI , (1.3) Steuerungs- und Feldbustechnik 50 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Q = S2 − P2 . (1.4) Die Berechnung soll in einer Funktion mit Parameterübergabe erfolgen. Das Programm wird dadurch modular aufgebaut. der Funktionsblock FC kann dann auch in anderen Projekten verwendet werden. Der OB1 versorgt die Funktion FC1 mit den Daten I = 1000 mA, P = 500 W und gibt die Rechenergebnisse auf Siebensegmentanzeigen aus (AW0 = S, Scheinleistung und AW2 = Q, Blindleistung). OB1: CALL FC1 Phase_Curr:=L#1000 Act_Power:=L#500 Tot_Power:=MD0 React_Power:=MD4 L MD 0 DTB T AW 0 L MD 4 DTB T AW 2 FC1: 7 L DTR L *R T RND T L DTR T L *R T L L *R L -R SQRT RND T #Phase_Curr 6.928200e-01 // 0.001*400*sqrt(3) #tpwrx[1] // S #Tot_Power #Act_Power #tpwrx[2] #tpwrx[2] #tpwrx[2] #tpwrx[1] #tpwrx[1] // P^2 // S^2 #tpwrx[2] #React_Power Hinweis: Die Variable tpwrx ist ein lokales Array mit zwei REAL-Elementen. Die Deklaration erfolgt im Kopf des FC1: tpwrx ARRAY [1..2] OF REAL; Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 51 K. Müller, HS Bremerhaven 21 Regelungen mit SPS Eine SPS kann auch Regelaufgaben übernehmen, d.h. es werden Größen aus dem Prozess gemessen (Regelgrößen) und Signale erzeugt, die den Prozess wieder beeinflussen. Es entsteht ein geschlossener (Regel-) Kreis. SPS u D Regler A y Prozess A D Bild 1.34: Regelung mit analoger Regelgröße y und analoger Stellgröße u Häufig sind die Ein- und Ausgangsgrößen eines Prozesses analoger Natur, d.h. es handelt sich um kontinuierliche Größen. Beispielsweise bei einer Drehzahlregelung eines Gleichstrommotors liefert eine Tachomaschine eine Spannung, die der Drehzahl proportional ist, während der Regler ein analoges Signal für den Strom des Servoverstärkers erzeugen muss. 21.1 Schaltende Regler Bei vielen Anwendungen --- insbesondere bei Temperaturregelungen --- ist das Eingangssignal u für den Prozess nicht analog sondern digital. Der Regler erzeugt dann keine analoges Signal, sondern ein digitales Signal. SPS Regler u Prozess y A D Bild 1.35: Regelung mit analoger Regelgröße y und digitaler Stellgröße u Bei einer Temperaturregelung wird die Temperatur in eine analoge Spannung oder einen analogen Strom umgesetzt (Regelgröße y). Die Stellgröße u ist digital, d.h. der Prozess Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 52 K. Müller, HS Bremerhaven wird beispielsweise mit dem digitalen Signal angesteuert. 21.1.1 “Heizung aus” und “Heizung ein” Übung: Temperaturregelung (schaltender Regler) Schreiben Sie eine SPS-Anweisungsliste für eine Temperaturregelung. Die Heizung soll eingeschaltet werden, wenn die Temperatur unter 240˚C fällt. Beträgt die Temperatur mehr als 300˚C, so soll die Heizung wieder ausgeschaltet werden. Als Blockschaltbild lässt sich die Regelaufgabe wie folgt darstellen. SPS ±30˚ u w = 270˚ Prozess y --A D Bild 1.36: Regelung mit analoger Regelgröße y und digitaler Stellgröße u Der Sollwert beträgt w = 270˚C. Wird der Sollwert um 30˚C überschritten, so ist die Heizung auszuschalten. Bei Unterschreitung um 30˚C soll die Heizung wieder eingeschaltet werden. Die Temperatur pendelt dann periodisch zwischen diesen Werten. Man nennt dies einen periodischen Grenzzyklus. Die Konfiguration der SPS kann gemäß Bild 1.37 gewählt werden. In diesem Fall wird die Temperatur als WORD mit einer Auflösung 0,1˚C gemessen. Ein Messwert von 3226 entspricht somit einer Temperatur von T = 322,6˚C. Steuerungs- und Feldbustechnik 53 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Bild 1.37: Konfiguration der SPS für Temperaturregelung Auf den Messwert muss mit “PEW” (Peripheriewort) zugegriffen werden, da die SPS nur Ein-/Ausgangsbits als Prozessabbild zur Verfügung stellt. Der Zugriff mit “L EW 256” ist syntaktisch zwar richtig, würde aber immer den Wert 0 liefern. Eine Lösung mit A0.0 als Ansteuersignal für die Heizung ist im folgenden gezeigt. 22 L L <I S PEW 2400 L L >I R PEW 3000 A A 256 0.0 256 0.0 // Temperatur in C // T zu klein // Temperatur in C // T zu gross Dynamische Regler-Übertragungsfunktionen Da mit einer SPS beliebige Rechenoperationen durchgeführt werden können, lassen sich auch Reglerfunktionen mit einer SPS verwirklichen. Bei einem PI-Regler (bzw. bei einem PID-Regler) handelt es sich um eine dynamische Übertragungsfunktion, deren Berechnung die numerische Integration einer oder mehrerer Differentialgleichungen erfordert. Ein Digitalrechner --- wie die SPS --- kann nicht kontinuierlich neue Werte berechnen. Die Berechnung erfolgt jeweils in einem festen Zeitraster. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 54 K. Müller, HS Bremerhaven Systeme, bei denen die Werte nur noch zu den Abtastzeitpunkten bestimmt werden, nennet man diskrete Systeme. Der zeitliche Abstand zwischen den Berechnungen sowie der Ein- und Ausgaben nennt man Abtastperiode T. Der Kehrwert der Abtastperiode ist die Abtastfrequenz fS . Da nun nur noch die Werte zu den sogenannten Abtastzeitpunkten benötigt werden, kann man von Differentialgleichungen zu den sogenannten Differenzengleichungen übergehen. Die Differenzengleichungen liefern nur noch die Werte zu den jeweiligen Abtastzeitpunkten und erfordern keine numerische Integration mehr. Differenzengleichungen erfordern zur Berechnung lediglich eine Addition (anstelle der Integration bei den Differentialgleichungen). Die Lösung von Differenzengleichungen ist somit wesentlich einfacher als die Integration von Differentialgleichungen. kontinuierliche Funktion diskrete Funktion 1 Bild 1.38: 2 3 4 5 t T Kontinuierliche und diskrete Funktion Strenggenommen werden nur die Werte der diskreten Funktion zu den Abtastzeitpunkten bestimmt. Man verbindet die Abtastzeitpunkte aber zu einer sogenannten Stufenfunktion. Dies entspricht auch genau der Arbeitsweise von D/A-Umsetzern, die einen einmal eingeschriebenen Wert bis zum nächsten Abtastzeitpunkt konstant halten. Kontinuierliche System beschreibt man als Übertragungsfunktion mit der unabhängigen Variablen s. Den Faktor 1/s kann man auch als Integrationsoperator auffassen t y(s) = 1s u(s) ⇒ u(τ)dτ + y(0) . y(t) = 0 (1.5) Steuerungs- und Feldbustechnik 55 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Zur Beschreibung diskreter Funktionen verwendet man Übertragungsfunktionen mit der unabhängigen Variablen z. Diese Variable kann über den sogenannten Verschiebeoperator 1/z definiert werden. Der Operator bedeutet eine Verschiebung um einen Abtastschritt y(z) = 1z u(z) ⇒ y(kT) = u((k − 1)T) . (1.6) Das Ausgangssignal y(t) ist also identisch mit dem Signal u(t), nur ist y gegenüber u um die Abtastzeit T verzögert. Diese Übertragungsfunktion entspricht einer Laufzeit, d.h. man kann in s schreiben y(s) = e −Ts u(s) . (1.7) Der Zusammenhang zwischen z und s folgt aus dem Vergleich von (1.6) mit (1.7) 1 = e −Ts . z (1.8) z = e Ts . (1.9) bzw. Löst man (1.9) nach s auf, so folgt s = 1 ln z . T (1.10) Würde man s in einer kontinuierlichen Übertragungsfunktion K(s) oder G(s) ersetzen, so erhält man eine diskrete Übertragungsfunktion in z. Allerdings enthält die Übertragungsfunktion dann Ausdrücke der Form ln(z) (transzendente Funktionen) und wäre damit für weitere Berechnungen wertlos. Gebrochen rationale Übertragungsfunktionen in z sind wesentlich günstiger zu handhaben. Wenn man die Exponentialfunktion durch eine gebrochen rationale Funktion nähert (Padé-Approximation), so kann jede kontinuierliche Übertragungsfunktion in s in eine gebrochen rationale Übertragungsfunktion in z transformiert werden. Die Padé-Approximation für die Exponentialfunktion lautet z=e Ts ≈ T s+1 2 − T2 s + 1 . (1.11) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 56 K. Müller, HS Bremerhaven 1 0.8 0.6 0.4 0.2 0 ---0.2 ---0.4 ---0.6 ---0.8 ---1 0 Bild 1.39: 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 t Sprungantworten des Laufzeitgliedes und der Padé-Approximation In Bild 1.39 erkennt man die Approximation des Laufzeitgliedes durch eine gebrochen rationale Funktion 1. Ordnung (Padé-Approximation). Die Approximation ist umso besser, je kleiner das Produkt Ts ist. Beispiel: Mit Ts = 0,1 folgt e 0.1 = 1.10517 , 0.1 s+1 2 − 0.1 s+1 2 = 1.10526 . (1.12) Die Padé-Approximation ist genau für kleine Werte der Abtastzeit T. Überprüfen Sie (1.11) auch mit dem Wert Ts = ---0,1. Löst man nun (1.11) nach s auf, so erhält man die Tustin-Transformation s = 2 z−1 T z+1 22.1 (1.13) Integrator Als Beispiel soll der Integrator in die diskrete Form gebracht werden. Aus der Übertragungsfunktion K(s) = 1 Ti s (1.14) folgt die diskrete Form mit Hilfe der Tustin-Transformation K(z) = T z + 1 . 2T i z − 1 (1.15) Die diskrete Übertragungsfunktion ist das Verhältnis von Ausgang y(z) zu Eingang u(z) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 57 K. Müller, HS Bremerhaven y(z) K(z) = T z + 1 = . 2T i z − 1 u(z) (1.16) Multiplizieren wir (1.16) mit u(z) und z-1 so folgt (z − 1)y(z) = T (z + 1)u(z) . 2T i (1.17) Division durch z auf beiden Seiten führt auf y(z) − 1z y(z) = T u(z) + 1z u(z) . 2T i (1.18) Diese Gleichung lässt sich auch einfach im Zeitbereich angeben, da der Operator 1/z lediglich eine Verschiebung um eine Abtastzeit beschreibt. y(kT) − y((k − 1)T) = T u(kT) + u((k − 1)T) . 2T i (1.19) Löst man (1.19) nach y(kT) auf, so erhält man eine rekursive Berechnungsvorschrift für den Ausgang y(kT) = y((k − 1)T) + T u(kT) + u((k − 1)T) . 2T i (1.20) Den Vergleich der Sprungantwort (u = 1) des diskreten Systems (1.20) mit der Sprungantwort des kontinuierlichen Systems y(t) = t Ti (1.21) zeigt Bild 1.40. Mit der Abtastzeit T = 1s und Ti = 2s folgen für das kontinuierliche System y(t) = t 2s (1.22) und für das diskrete System (1.23) y(kT) = y((k − 1)T) + 0.25 u(kT) + u((k − 1)T) . kontinuierliche Funktion 3 2 1 diskrete Funktion 1 Bild 1.40: 2 3 4 5 t T Sprungantworten von kontinuierlichem und diskretem System Steuerungs- und Feldbustechnik 58 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Man erkennt, dass das diskrete System eine sinnvolle Approximation des kontinuierlichen Systems ist. 22.2 PI-Regler Der kontinuierliche PI-Regler K(s) = V R T ns + 1 Tns (1.24) lässt sich mit Hilfe der Tustin-Transformation (1.13) ebenfalls in ein diskretes System überführen, indem die Variable s in (1.24) entsprechend ersetzt wird. Hierzu ist es günstiger, den PI-Regler in die Form K = VR 1 + 1 T ns (1.25) zu bringen, da hier nur einmal die Variable s auftritt. Damit folgt K(z) = V R 1 + T z + 1 . 2T n z − 1 (1.26) Ersetzt man z+1 z−1 (1.27) z−1+2=1+ 2 , z−1 z−1 (1.28) durch so entsteht ein besonders vorteilhafte Darstellung des diskreten PI-Reglers K(z) = V R 2T n + T 1 = k + ki . + VR T p 2Tn Tn z − 1 z−1 (1.29) Die Parameter des diskreten PI-Reglers sind dann kp = V R 2T n + T , 2T n ki = V R T . Tn (1.30) Mit dem Verschiebe-Operator 1/z lässt sich der diskrete PI-Regler als Blockschaltbild zeichnen. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 59 K. Müller, HS Bremerhaven kp Limit u(k) ki xki (k+1) 1 z y(k) xki (k) Begrenzungen Bild 1.41: Blockschaltbild des diskreten PI-Reglers Zusätzlich eingezeichnet sind Begrenzungen des Ausgangs, da der Ausgang y häufig bestimmte Werte nach unten oder oben nicht überschreiten darf. Theoretisch würde die rechte Begrenzung genügen; jedoch könnte dann xki (kT) beliebig große Werte annehmen. Kehrt u(k) dann das Vorzeichen um, würde es sehr lange dauern, bis xki wieder kleine Werte annimmt (es handelt sich ja um einen Summationsvorgang). Die Begrenzung des Signals xki nennt man auch “Anti-Windup”. Man verhindert damit eine “Sättigung” des Reglers. Der PI-Regler erfordert gemäß Blockschaltbild 1.41 somit die Berechnungen y(k) = k pu(k) + x ki(k) , x ki(k + 1) = x ki(k) + k iu(k) . (1.31) Anschließend ist dann zu prüfen, ob sich y außerhalb des zulässigen Bereichs befindet. Falls dies der Fall ist, muss y begrenzt werden. Entsprechend ist dann auch xki auf sinnvolle Werte zu begrenzen. Im folgenden wird gezeigt, wie der PI-Regler auf einer SPS verwirklicht werden kann. Steuerungs- und Feldbustechnik 60 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Bild 1.42: Konfiguration der SPS für einen Regler mit analogen Ein- und Ausgängen OB1: <keine Anweisungen> OB101: (Initialisierung) L 0 T DB1.xki L 4.000000e-02 T DB1.TSample L 1.500000e+00 T DB1.Vr L 9.000000e-01 T DB1.Limit L 2.000000e+00 T DB1.Tn // Brerechnung kp und ki L DB1.TSample L 2.000000e+00 /R L DB1.Tn /R L 1.000000e+00 +R L DB1.Vr *R T DB1.kp L DB1.TSample Steuerungs- und Feldbustechnik 61 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven L /R L *R T DB1.Tn DB1.Vr DB1.ki OB35: (zyklischer Interrupt = “Weckalarm”) L PEW 256 ITD DTR L 3.618982e-05 *R T DB1.sig_u L DB1.kp *R L DB1.xki +R T DB1.sig_y L DB1.Limit >R SPBN Z000 // y > Limit T DB1.sig_y L DB1.sig_u L DB1.Vr *R L DB1.sig_y -R NEGR T DB1.xki L 0 <R SPBN Z004 T DB1.xki SPA Z004 Z000 :NOP 1 L DB1.sig_y L DB1.Limit NEGR <R SPBN Z003 // y < -Limit T DB1.sig_y L DB1.sig_u L DB1.Vr *R L DB1.sig_y -R NEGR T DB1.xki L 0 >R // 1/27648 // output Steuerungs- und Feldbustechnik 62 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven SPBN Z004 T DB1.xki SPA Z004 Z003 :NOP 1 // no limit: integrate L DB1.sig_u L DB1.ki *R L DB1.xki +R T DB1.xki Z004 :NOP 1 // convert to DA format L DB1.sig_y L 2.764800e+04 *R RND U E 0.0 SPB Z005 L 0 Z005 :NOP 1 T PAW 256 23 PID-Regler Der PID-Regler unterscheidet sich vom PI-Regler durch den sogenannten D-Anteil. In der Parallelform (s. Bild 1.43) wird der Unterschied zum PI-Regler deutlich. kp u y ki s kd Bild 1.43: P t *s s +1 I D PID-Regler in Parallelform Die Übertragungsfunktion des PID-Reglers lautet somit k . K(s) = k p + si + k d * s t s+1 (1.32) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 63 K. Müller, HS Bremerhaven Fasst man die drei Terme zusammen, so entsteht die Serienform des PID-Reglers k d + k pt * s 2 + k p + k it * s + k i K(s) = s t *s + 1 . (1.33) Eine Umrechnung der Parameter der Standardform K(s) = V R (T ns + 1) T Ds + 1 (1.34) T ns t *s + 1 in die Parameter kp , ki und kd der Parallelform kann durch Vergleich der Polynomkoeffizienten des Zählers erfolgen, wenn (1.34) in die Form K(s) = V R T Ds 2 + V R Tn+T D Tn s V + TRn s t *s + 1 (1.35) gebracht wird. Man erhält ki = VR , Tn kp = V R (1.36) Tn + TD − t* , Tn (1.37) T nT D − T n + T D t * + t * 2 kd = V R . Tn (1.38) Die Umrechnung ist etwas verwickelt, kann aber leicht durch ein Programm erfolgen. Aus der Parallelform ist die Bestimmung der Serienform sehr viel schwieriger, da hier eine Berechnung der Nullstellen des Zählerpolynoms erforderlich wird. Es sind außerdem Parameter kp , ki und kd möglich, die nicht in die Standardform (1.34) gebracht werden können (es können komplexe Nullstellen entstehen). Der diskrete PI-Regler wurde bereits behandelt. Der Unterschied zum diskreten PID-Regler besteht nun nur noch in dem D-Anteil. Der D-Anteil G d(s) = k d t *s s +1 (1.39) lautet in diskreter Form G d(z) = 2 z−1 T z+1 k d 2 z−1 t * T z+1 + 1 =2 =2 kd z−1 * t T 2 (z − 1) + z + 1 T kd z−1 . T 2 t* + 1 z − 2 t * − 1 T T (1.40) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 64 K. Müller, HS Bremerhaven Eine weitere Umformung von (1.40) führt auf die Form G d(z) = 2k d 2t * z−1 , + T z − 2t **−T 2t +T (1.41) die für die Berechnung der Differenzengleichung günstiger ist. Eine weitere Vereinfachung ergibt sich aufgrund von * * * 2t −T 2t −T 2t −T z − 1 = z − 2t*+T + 2t*+T − 1 = 1 − 1 − 2t*+T *−T *−T *−T z − 2t z − 2t z − 2t 2t *+T 2t *+T 2t *+T =1− z 2T 2t *+T *−T − 2t 2t *+T (1.42) . Daraus folgt die endgültige Schreibweise G d(z) = 2k d 2t * +T − 4k dT 2t * +T 1 2 * −T z − 2t 2t*+T (1.43) . Wir können die Schreibweise abkürzen, indem wir die Konstanten k1, k2 und z1 verwenden k y(z) G d(z) = k 1 − z −2 z = u(z) 1 (1.44) mit k 1 := 2k d 2t * + T , k 2 := 4k dT 2t * +T 2 , * z 1 := 2t * − T . 2t + T (1.45) Es bietet sich an, die beiden Terme in (1.44) getrennt zu rechnen. Während der erste Term nur einen Faktor darstellt, erfordert der zweite Term eine zusätzliche Variable k2 x(z) z − z 1 = u(z) . (1.46) Durch “Hochmultiplizieren” erhält man zx(z) − z 1x(z) = k 2u(z) ⇒ x(z) − 1z z 1x(z) = 1z k 2u(z) . (1.47) Der Operator 1/z (Verschiebeoperator) bewirkt eine Verschiebung um einen Abtastschritt im Zeitbereich. Die Gleichung (1.47) entspricht somit der Differenzengleichung x(k) = z 1x(k − 1) + k 2u(k − 1) oder auch (1.48) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 65 K. Müller, HS Bremerhaven (1.49) x(k + 1) = z 1x(k) + k 2u(k) . Der gesamte Algorithmus ist im Blockschaltbild 1.44 dargestellt. k1 u(k) y(k) k2 x(k+1) 1 z x(k) --- z1 Bild 1.44: Algorithmus für D-Glied Anzumerken ist, dass bei der Berechnung eines vollständigen PID-Reglers der (proportionale) Faktor k1 der P-Kanal zugerechnet werden kann. 23.1 Beispiel: D-Glied mit kd = 1, t* = 0.333333 und der Abtastperiode T = 0.1 Mit diesen Daten lauten k 1 = 2.6087 , k 2 = 0.6805 , z 1 = 0.7391 . (1.50) Die Berechnung von y(k) aus u(k) kann nun leicht durch iterative Lösung der Differenzengleichung erfolgen. Die Sprungantwort der Übertragungsfunktion G(s) kont = k p s t *s + 1 (1.51) sowie die diskrete Sprungantwort (u(k) = 1 für alle k ≥ 0) ist im folgenden Bild gezeichnet. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 66 K. Müller, HS Bremerhaven y(t) y(k) 3.5 3 2.5 2 1.5 1 0.5 0 ---0.5 0 Bild 1.45: 0.5 1 1.5 2 2.5 3 t Sprungantworten des kontinuierlichen und des diskreten Systems Man erkennt die gute Approximation des kontinuierliche Signals durch die diskrete Sprungantwort. 24 Berechnung des D-Glieds mit der SPS Man muss sich zunächst fragen, warum eine detaillierte Behandlung der Berechnung eines PID-Reglers sinnvoll ist, wo doch ein PID-Algorithmus oft schon Bestandteil einer SPS ist. Dafür lassen sich zwei Gründe angeben: Mit Hilfe der beschriebene Tustin-Transformation lassen sich beliebige Übertragungsfunktionen als diskrete Systeme in Form von Differenzengleichungen rechnen. Man ist somit nicht in der Struktur auf die in der SPS vorhandenen Übertragungsfunktionen beschränkt. Die in der SPS vorhandenen Regler sind oft nicht optimal programmiert. Die Regler können vereinfacht verwirklicht sein oder der Algorithmus für die Begrenzung des Reglerausgangs ist sehr ungünstig umgesetzt worden. Da die Hersteller ihren Algorithmus nicht offenlegen, kann der Regler nicht optimal genutzt werden, da unbekannt ist, wie der kontinuierliche Regler durch einen diskreten Regler approximiert wird. Das hier vorgestellte Verfahren der “Tustin-Transformation” ist natürlich nicht das einzige Verfahren zur Verwirklichung diskreter Regler. Die “Tustin-Transformation” ist aber eines der leistungsfähigsten und besten Verfahren, gleichzeitig aber auch nicht das Einfachste. Steuerungs- und Feldbustechnik 67 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Das SPS-Programm besteht auch hier --- wie beim PI-Regler --- aus zwei Organisationsblöcken: dem OB101 für die Initialisierung und dem OB35 für die zyklische Berechnung der eigentlichen Differenzengleichung. Der OB1 muss existieren, er enthält aber keinen Programmtext. Üblicherweise würde im OB1 die sogenannte Betriebslogik behandelt werden (Ein-/Ausschalten, Sicherheitsüberwachung etc.). OB101: Initialisierung // Abtastzeit L 1.000000e-01 T DB1.T_Samp // Parameter des D-Glieds L 1.000000e+00 T DB1.kd L 3.333333e-01 T DB1.t_st // Koeffizienten fuer Differenzengleichung L DB1.t_st L 2.000000e+00 *R L DB1.T_Samp +R T DB1.xtmp // 2*t*+T L DB1.kd L 2.000000e+00 *R L DB1.xtmp /R T DB1.k1 L 2.000000e+00 *R L DB1.T_Samp *R L DB1.xtmp /R T DB1.k2 L DB1.t_st L 2.000000e+00 *R L DB1.T_Samp -R L DB1.xtmp /R T DB1.z1 OB35: zyklischer Interrupt L ITD DTR L *R T PEW 256 3.616898e-05 DB1.u_real Steuerungs- und Feldbustechnik 68 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven // Ausgang L DB1.k1 *R L DB1.x1 -R L 2.764800e+04 *R RND T PAW 256 // Zustandsgroesse x1 L DB1.k2 L DB1.u_real *R T DB1.xtmp L DB1.z1 L DB1.x1 *R L DB1.xtmp +R T DB1.x1 Die Faktoren 3.616898e-05 bzw. 2.764800e+04 bewirken eine Normierung der Eingangsspannung bzw. eine Denomierung der Ausgangsspannung auf Werte zwischen -1 und +1. Versuchen Sie, den Algorithmus gemäß Bild 1.44 in OB35 nachzuvollziehen. 25 The Real Thing -- Konfiguration und Programmierung einer „echten” SPS Im Prinzip die gleichen Schritte wie im Simulator müssen auch durchlaufen werden, wenn eine “reale” SPS eingesetzt werden soll. Dies soll am Beispiel der verbreiteten SIEMENS Simatic S7 -300 erläutert werden. Die Baureihe -300 ist die mittlere SPS-Klasse. Die S7-200 ist eine sogenannte Kompakt-SPS, die über einen bestimmten Satz an digitalen und analogen Ein-/Ausgängen verfügt und nur sehr eingeschränkt erweiterbar ist. Die Baureihe S7-300 ist eine modular aufgebaute SPS, die durch viele unterschiedliche Schnittstellen erweiterbar ist. Das obere Ende bildet die S7-400 für sehr große Anlagen und Anwendungen. Auch die S7-400 ist modular aufgebaut. Als modulares System kann man sich eine SPS aus einzelnen Komponenten zusammenstellen, so dass sich eine SPS sehr genau auf die speziellen Anforderungen für eine bestimmte Aufgabe anpassen lässt. Modulare Systeme bestehen entweder aus einen Gehäuse und Netzteil mit sogenannter Backplane (Bus, der alle Komponenten mit Strom und Daten-/Adresssignalen versorgt), in das Baugruppen gesteckt werden können. Ein typischer Vertreter dieser Technik in der Industrie ist der VME-Bus. Auch PCs mit dem PCI-Bus funktionieren auf diese Weise. Eine Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 69 K. Müller, HS Bremerhaven Siemens-SPS besitzt ein anderes Konzept, bei der die einzelnen Komponenten ein geschlossenes Gehäuse besitzen und diese auf einen Blechwinkel (genannt Profilschiene) gefummelt werden. Die einzelnen Komponenten werden durch sogenannte Busverbinder miteinander verbunden. Das Siemens-Konzept ist etwas umständlich, aber auch etwas flexibler als z.B. ein VME-Bus-Gehäuse. Bei der Konfiguration der SPS müssen eine Reihe von Regeln beachtet werden. Das folgende Bild zeigt den Maximalausbau einer S7 -300. Es sind maximal 4 Baugruppenträger zugelassen. Der 1. Baugruppenträger darf maximal 11 Komponenten enthalten (1..11), in allen folgenden Baugruppenträgern dürfen nur Plätze 3..11 (9 Komponenten) benutzt werden. Die maximale Anzahl von Komponenten beträgt damit 11+3x9 = 38 Komponenten. Die einzelnen Baugruppenträger dürfen maximal 10m auseinander sein. EXT 4 Link EXT EXT PS CPU 1 2 Bild 1.46: EXT 3 6 7 8 9 10 5 6 7 8 9 10 Baugruppenträger 2 11 BaugruppenB8 träger 1 5 6 7 8 9 10 B1 4 11 B8 B1 4 Link 5 B1 4 Link BaugruppenB8 träger 3 B1 11 B8 Baugruppenträger 0 5 6 7 8 9 10 11 Maximalausbau einer S7 -300 Man beachte die inkonsistente Zählweise der “Steckplätze” (beginnen mit 1) und die der Baugruppenträger (beginnen mit 0). Die Stromversorgung (PS) sowie die CPU dürfen nur einmal im gesamten System verwendet werden. Bei der Auswahl der Stromversorgung Steuerungs- und Feldbustechnik 70 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven muss darauf geachtet werden, dass die Leistung für die Versorgung aller Baugruppen sowie der CPU ausreicht. Man erkennt, dass die ersten 3 Steckplätze für bestimmte Funktionen reserviert sind. Steckplatz 1: Stromversorgung (PS = Power Supply) Steckplatz 2: CPU (312 IFM, 313, 314, 315, 316, 318) Steckplatz 3: Schnittstelle zur Erweiterung der SPS auf andere Baugruppenträger Die folgenden Steckplätze können mit Schnittstellen zum oder vom zu steuernden/regelnden Prozess belegt werden. Obwohl es technisch leicht möglich wäre, dass die CPU im System alle angeschlossenen Komponenten automatisch erkennt, muss dies recht mühsam vom Betreiber “von Hand” erfolgen. Die Konfiguration kann dann aber permanent in der CPU gespeichert werden, so dass die Konfiguration nur bei Änderung der Baugruppen erforderlich ist. 26 Vernetzung von SPS-Geräten Die Vernetzung von Geräten der Automatisierungstechnik (einschließlich der Messtechnik) ist erforderlich, wenn großen Anlagen automatisiert werden sollen und eine Kommunikation zwischen Anlagenteilen erforderlich ist. Man verwendet dazu sogenannte Busse. Bus: mehrere Teilnehmer teilen sich gemeinsame Leitungen zur Kommunikation. Mit dem Bestreben, die Automatisierung in der Fertigung immer weiter voranzutreiben, entstanden eine Vielzahl einfacher Bussysteme, die inzwischen mit der gleichen Geschwindigkeit wieder verschwinden, mit der sie aufgekommen waren. Die einfachen Busse der Automatisierungstechnik halten einem Vergleich mit den Bussystemen der “gewöhnlichen” Computertechnik nicht Stand. So wird inzwischen in vielen Bereichen der Automatisierungstechnik gewöhnliches TCP/IP-Protokoll über Ethernet eingesetzt. Dies verringert Kosten und ist um den Faktor 10..100 schneller als typische “Automatisierungsbusse”. Auf unterer Ebene (Verbindung zwischen Automatisierungsgeräten, Verbindung zu Sensoren und Aktuatoren) werden sogenannte Feldbusse eingesetzt. Feldbusse: einfache Busse für die Automatisierungstechnik. Man unterscheidet grundsätzlich parallele Busse (z.B. GPIB) und serielle Busse. Bei seriellen Bussen erfolgt die Datenübertragung über eine Leitung bzw. über zwei Leitungen bei zwei Datenrichtungen (Duplex-Betrieb). Moderne Busse sind ausschließlich seriell. Steuerungs- und Feldbustechnik 71 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Typische Vertreter der Feldbusse sind CAN (Car Area Network), ProfiBus, ASI (Aktuator-Sensor-Interface), EIB (European Installation Bus). Aufgrund unterschiedlicher Eigenschaften dieser Busse, werden sie in bestimmten Bereichen bevorzugt eingesetzt (z.B. EIB in der Gebäudeautomation). Ein wesentliches Merkmal der Busse sind ihre maximalen Leitungslängen. 26.1 RS-485 (MPI/Profibus) Jede SPS-CPU muss über eine Schnittstelle verfügen, um das Programm und die Konfiguration in die CPU vom Entwicklungssystem übertragen zu können. Diese Schnittstelle ist der serielle Bus nach der RS-485-Norm. Bei Siemens wird diese Schnittstelle MPI (Multi-Point-Interface) genannt und mit einer Übertragungsrate von 187,5 kBit/s betrieben. Zum Vergleich: Ethernet ist um mehr als 500-fach schneller. Die Leitungslänge darf 50 m nicht überschreiten (Ethernet/UTP-Kabel: 200 m). Werden größere Entfernungen benötigt, so können “Repeater” eingesetzt werden, die eine Leitungslänge zwischen den Repeatern von bis zu 1000 m ermöglicht. Eine Vernetzung nach RS-485 ist in Bild 1.47 dargestellt. max. 50 m Leitung A Rt Rt Leitung B RxD TxD Teilnehmer 0 Bild 1.47: RxD TxD Teilnehmer n RS-485 (Halbduplex-Betrieb Maximal 32 Teilnehmer können an den Bus angeschlossen werden. Jedem Teilnehmer wird ein Nummer zugewiesen (0..31), die man als Adresse bezeichnet. Beim RS-485 verwendet man eine Differenzübertragung, d.h. für den Wert auf dem Bus ist nicht der Pegel der Leitungen A und B entscheidend, sondern die Differenz zwischen den Leitungen. Es gelten folgende Zuordnungen Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 72 K. Müller, HS Bremerhaven 0: u A − u B ≤ − 200mV , 1: uA − uB ≥ 200mV . (1.52) Die absoluten Pegel auf den Leitungen bewegen sich im Bereich von ca. 0..5V. Die Leitungen müssen an den Enden (insbesondere bei Ausnutzung der maximalen Länge mit dem sogenannten Wellenwiderstand der Leitung (folgt aus dem induktiven und kapazitiven Leitungsbelag) RW = L C (1.53) abgeschlossen werden. Der Wellenwiderstand beträgt etwa RW = 120Ω. Man schließt die Leitung an den Enden mit einem ohmschen Widerstand Rt = 120Ω ab, um Reflexionen an den Enden zu verhindern. Es bleibt anzumerken, dass bei einer abgeschlossenen Leitung (mit Widerständen) und der relativ niedrigen Übertragungsrate von 187,5 kBit/s problemlos wesentlich größere Leitungslängen möglich sind. Bisher wurde die physikalische Ebene des Busses beschrieben. Die Software bestimmt das Protokoll des RS-485-Busses. Die Deluxe-Version ist der sogenannte Profibus (12,5 MBit/s). Diese Version ist für die SPS als Option verfügbar. Meist erfolgt dies mit einer eigenen CPU, da die Übertragungsrate von 12,5 MBit/s die SPS-CPU zu stark belastet kann. Bestandteil jeder Siemens -SPS ist eine RS-485-Schnittstelle mit 187,5 kBit/s, über die die Programmierung und Konfiguration erfolgt. Gleichzeitig dient die Schnittstelle zur Kommunikation unter verteilten SPS-Geräten. Es besteht die Möglichkeit, sogenannte Globaldaten auf alle SPS-Geräte, die über den RS-485-Bus verbunden sind, zu kopieren. Die Schnittstelle wird in der Siemens -Welt MPI (Multipoint-Interface) genannt. Da das Entwicklungssystem (ein Windows-PC, in der Siemens -Welt “PG” = Programmiergerät genannt) nicht über eine RS-485-Schnittstelle verfügt, wird ein Umsetzer von PC-Schnittstellen auf RS-485 benötigt. Angeschlossen wird der Umsetzer heute überwiegend an die serielle Schnittstelle (= COM1, COM2, COM3 oder COM4). Zukünftig dürfte jedoch USB (Universal Serial Bus) zum Einsatz kommen. Die Original Siemens-Adapter für die serielle Schnittstelle sind in der Geschwindigkeit jedoch auf 38,4 kBit/s beschränkt. 26.2 CSMA/CD und Token-Passing CSMA/CD und Token-Passing sind Zugriffsverfahren für eine fehlerfreien Betrieb eines Busses. Bei einem Bus muss ein Zugriffsprotokoll festgelegt werden, da ja nur eine Leitung für die Übertragung zur Verfügung steht. 26.2.1 CSMA/CD Man wählt i.a. ein Verfahren, dass einen größtmöglichen Datendurchsatz gewährleistet. Es hat sich bei der Vernetzung von Computern das CSMA/CD-Protokoll für Ethernet etabliert. Steuerungs- und Feldbustechnik 73 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven CSMA/CD = Carrier Sense Multiple Access / Collision Detect Bei diesem Zugriffsverfahren wartet ein Teilnehmer, bis keine Daten mehr übertragen werden (Carrier Sense) und beginnt sofort mit dem Senden, ohne dass eine Freigabe erforderlich wäre. Dabei kann es natürlich vorkommen, dass ein weiterer Teilnehmer ebenfalls sendet. Dies wird durch “Mithören” aber erkannt (Collision Detect). In diesem Fall brechen beide (oder mehrere Sender) den Sendevorgang ab und warten eine unterschiedliche (zufällige) Zeit ab, bis ein erneuter Sendeversuch gestartet wird. Natürlich darf ein Sender nicht beliebig lange senden. Ein “Frame” (Sendepaket) ist auf eine bestimmte Länge beschränkt (MTU = Maximum Transfer Unit). Da die Wartezeit für einen bestimmten Sender zufällig ist, kann nur mit statistischen Methoden der Durchsatz bestimmt werden. Der große Vorteil bei CSMA/CD ist, dass ein Transfer immer sofort beginnen kann. Es vergeht also im Idealfall keine Wartezeit, bis Daten übertragen werden können. Die Kollisionen steigen jedoch an, wenn viele Teilnehmer an einem Segment angeschlossen sind und viele verschiedene Teilnehmer Daten übertragen müssen. CSMA/CD ist sehr schnell aber nicht deterministisch. 26.2.2 Token-Passing Das Token-Passing-Verfahren ist ein deterministischerer Ansatz als CSMA/CD. Allerdings erfordert das Token-Passing einen “Overhead”, d.h. es wird eine Datenübertragung zur Verwaltung des Zugriffsverfahren notwendig. Ein Datenpaket (das Token) wird von Teilnehmer zu Teilnehmer gesandt. Der Teilnehmer, der das Token besitzt, darf den Bus benutzen und beginnt mit der Übertragung von Daten. Anschließend wird das Token weiterversandt. Ein Teilnehmer, der keine Daten zu versenden hat, sendet das Token einfach weiter. Natürlich ist auch hier die maximal erlaubte Datenmenge beschränkt, die ein Sender übertragen darf, wenn er das Token “besitzt”. Mit dieser Information und der Anzahl der Teilnehmer kann man ausrechnen, wie lange es dauert, bis ein Sender spätestens “an der Reihe” ist. Nachteilig ist, dass alle Teilnehmer ständig mit Datentransfer beschäftigt sind, auch wenn gar keine Nutzdaten zu übertragen sind. Die Zugriffssteuerung für RS-485 bei der SPS erfolgt auf der Basis von Token-Passing. Auch der Profibus basiert auf Token-Passing, jedoch beträgt hier die Übertragungsrate maximal 12,5 MBit/s. Im folgenden soll der Betrieb der sogenannte MPI-Schnittstelle (eingebaute RS-485-Schnittstelle in jeder SPS) erläutert werden. Vieles davon lässt sich auf den Profibus übertragen. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 74 K. Müller, HS Bremerhaven EntwicklungsSystem SPS 1 SPS 2 SPS n OP PG 0 Adressen Bild 1.48: Anzeige und Bedienung 1 2 3 n+1 RS-485-Netzwerk (MPI) Die Enden der Leitung (in diesem Fall das Entwicklungssystem mit der Adresse 0 und die SPS n) müssen mit Abschlusswiderständen beschaltet werden. Üblicherweise befinden sich in jedem Anschlussstecker Abschlusswiderstände, die über Schalter aktiviert werden können. Jeder Teilnehmer benötigt eine eindeutige Adresse im Bereich von 0..255. Die Adressen können im Prinzip frei vergeben werden. Es besteht jedoch die sinnvolle Konvention, die Adressen 0..2 nicht zu verwenden, um für den Servicefall gerüstet zu sein. Die Adresse 0 sollte für ein Service-Entwicklungssystem (PG = Programmiergerät) reserviert werden, dass dann einfach zugeschaltet werden kann. Das Gleiche gilt für ein Service-Bedien- und Anzeigegerät (OP = Operator Panel). Wenn die Adresse 2 freigehalten wird, kann stets eine SPS in Werkseinstellung an das Netz angeschlossen werden (Adresse 2 = Werkseinstellung). Von Herstellerseite wird empfohlen, die Leitungslängen zwischen den Geräten auf maximal 50m zu beschränken. Am Beginn und Ende der Leitung muss ein Abschlusswiderstand von ca. 120Ω geschaltet werden, um Reflexionen zu verhindern. Wird dies vergessen, so funktioniert i.a. die Übertragung auch noch, jedoch nehmen Übertragungsfehler (erkannt durch Parity Errors) zu. Steuerungs- und Feldbustechnik 75 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 27 Konfigurieren einer Siemens -SPS Ein modulares System --- wie die Siemens S7-300 --- muss konfiguriert werden, d.h. sowohl der CPU sowie auch dem Entwicklungssystem müssen alle installierten Komponenten bekannt sein. Die Konfiguration muss außerordentlich umständlich (damit auch fehleranfällig) “von Hand” eingetragen werden, obwohl sich das System theoretisch auch selbst konfigurieren und überprüfen könnte. Auf diese Weise soll der Programmierer vielleicht gezwungen werden, sich “mit dem System vertraut zu machen”. Die SPS-Software bestimmt dann die Adressen, unter denen auf die Schnittstellen (digital I/O oder analog I/O) zugegriffen werden kann. Die Konfiguration umfasst auch die eindeutige Vergabe der RS-485-Adressen, die nach den vorstehenden Empfehlungen vergeben werden sollten. Wird nur eine SPS mit einem Entwicklungs-PC verbunden, so werden oft die Adressen 0 (PC) und 2 (SPS) vergeben oder sind bereits vom Werk auf diese Adressen eingestellt. 28 Automatisierung einer Tankfüllanlage Der folgende Prozess soll mit einer realen SPS automatisiert werden. Y1 Bild 1.49: Y2 S1 S3 S2 S4 Tankfüllanlage mit 2 Tanks Über die beiden Schaltventile sollen aus einer Sammelleitung (oben) zwei Tanks gefüllt werden. Dabei ist zu beachten, dass nur jeweils ein Einlassventil betätigt werden darf. Der Füllstand kann mit zwei Sensoren pro Tank gemessen werden. Wenn die Sensoren S2 und S4 das Signal ’0’ liefern, ist der jeweilige Tank leer oder fast leer. In diesem Fall muss der Steuerungs- und Feldbustechnik 76 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven betreffende Tank sofort gefüllt werden. Wird der durch die Sensoren S1 bzw. S2 bestimmte Füllstand erreicht, so sind die Ventile (durch Y1 bzw. Y2 gesteuert) abzuschalten. Aufgrund der Anordnung der Füllstandssensoren dürfen bestimmte Messwertkombinationen nicht auftreten (z.B. S1 = ’1’ und S2 = ’0’). Wird ein solcher Fall gemessen, so muss mindestens ein Sensor defekt sein. In diesem Fall müssen beide Ventile geschlossen werden und die Anlage soll diesen Fehlerzustand anzeigen. Auch wenn der Fehler wieder verschwindet, dürfen die Ventile erst wieder nach einem Quittungssignal wieder eingeschaltet werden. Was mit Worten beschrieben wurde, lässt sich natürlich viel eindeutiger in Form eines Zustandsgrafen darstellen, da die Steuerung einen sogenannten “endlichen Zustandsautomaten” bildet. Steuerungen (Automaten) sollten mit einer minimalen Anzahl von Zuständen verwirklicht werden. Wird mehr als die notwendige Anzahl von Zuständen einer Anlage verwendet, wird die Steuerungsaufgabe komplexer und damit auch fehleranfälliger. Die minimale Anzahl an Zuständen folgt aus den “Freiheitsgraden” eines digitalen Systems, d.h. den unterschiedlichen Zuständen, die von Eingangsgrößen abhängen bzw. die die Ausgangsgrößen beeinflussen. Ein Zustand ist beispielsweise die Temperatur einer Flüssigkeit im Tank (Temperatur hoch, Temperatur niedrig). Da bei der Tankfüllanlage die Temperatur weder beeinflusst noch gemessen werden kann, braucht sie auch nicht für die Steuerung berücksichtigt zu werden. “0” Tanks voll F1(u) “1” Tank 1 füllen Bild 1.50: F3(u) F0(u) F4(u) F5(u) F2(u) “2” Tank 2 füllen Zustandsgraf für die Steuerung der Tankfüllanlage (fehlerfreier Betrieb) Die Qualität einer Steuerung hängt unter anderem davon ab, wie bzw. ob auf Fehler reagiert wird. Man müsste Bild 1.50 um Fehlerzustände erweitern. Den Fehlerzustand zeichnet man besser in ein separates Diagramm (Bild 1.51), da der Übergang in die Fehlerzustände von jedem Zustand aus gleich erfolgt. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 77 K. Müller, HS Bremerhaven Fehler 250ms “3” Error 0 Reset (zum Zustand “0”) “4” Error 1 250ms Bild 1.51: Zustandsgraf Fehlerzustände Man erkennt, dass ein einmal aufgetretener Fehlerzustand ausschließlich durch das “Reset”-Signal wieder verlassen werden kann. Die nachfolgende Tabelle zeigt die Zuordnung zwischen Zuständen und Ausgängen. Zustand Ausgang 0 1 2 3 4 --- (alles aus) Y1 Y2 Error LED 0 Error LED 1 Der Fehlerzustand soll somit durch ein abwechselndes Blinken zweier LEDs angezeigt werden. Da zwei unterschiedliche Ausgänge auftreten, müssen auch zwei Zustände verwendet werden. Ein Fehler in der Sensorik kann erkannt werden, wenn der obere Sensor einen Füllstand anzeigt, während der untere Sensor das Signal “0” liefert. S4 S3 S2 S1 Fehler 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 Im Interesses eines sicheren Betriebs (insbesondere bei Anlagen mit Personengefährdung) sollten vorrangig Fehler behandelt werden. Es muss folglich die folgende Tabelle ausgewertet werden. Die boolsche Gleichung lautet Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 78 K. Müller, HS Bremerhaven (1.54) Fehler = S 4 ∧ S 3 ∨ S 2 ∧ S 1 . Wenn der Fehler abgefangen wird, können die entsprechenden Zeilen (Minterme) als Don’t Care (X) angenommen werden, da diese Fälle dann nicht mehr auftreten können. Die Tabelle bekommt damit folgende Gestalt (Begründung?): S4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 S3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 S2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 S1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Zustand 0 1 1 1 X X 2 2 2 2 X X X X X X X X 1 1 X X 1 1 2 2 1 1 X X 1 1 0 0 2 2 X 2 2 X X X X 1 X 2 2 1 X 1 0 Folgezustände Auf der rechten Seite stehen keine boolschen Werte sondern jeweils die Folgezustände aus einem bestimmten Zustand in Abhängigkeit von den Sensorsignalen. Nehmen wir z.B. an, dass wir uns im Zustand “0” (Tanks voll) befinden. Dann kann von diesem Zustand in die Zustände “1” oder “2” verzweigt werden. Die entsprechenden Wahrheitstabellen lauten Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 79 K. Müller, HS Bremerhaven S4 S3 S2 S1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Folgezustand 1 aus Zustand 0 1 X 0 0 X X X X 1 X 1 0 1 X 1 0 S4 S3 S2 S1 00 01 00 01 11 10 1 X 1 1 X X X X S1 = 1 11 X 10 X S2 = 1 1 1 S3 = 1 S4 = 1 Man erhält aus dem Karnaugh-Diagramm eine minimale Form für die Funktion zur Bestimmung des Folgezustands 1 aus dem Zustand 0 (Funktion F0 aus Bild 1.50) (1.55) F0 = S2 ∨ S4 ∧ S1 . S4 S3 S2 S1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Folgezustand 2 aus Zustand 0 0 X 1 1 X X X X 0 X 0 1 0 X 0 0 S4 S3 S2 S1 00 00 01 11 10 X X X 01 X X 11 1 X 10 1 1 S1 = 1 S2 = 1 X S3 = 1 S4 = 1 Es folgt für die Funktion zur Bestimmung des Folgezustands 2 aus dem Zustand 0 (Funktion F2 aus Bild 1.50) F2 = S4 ∧ S2 ∨ S3 ∧ S1 . (1.56) Auf die gleiche Weise lassen sich alle übrigen Bedingungen für die Übergänge zwischen den Zuständen herleiten (in minimaler Form). Steuerungs- und Feldbustechnik 80 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 28.1 Übung: Verwirklichung der Steuerung Entwickeln Sie eine Steuerung für die Tankfüllanlage mit einer Siemens -S7. Die Fehlerbedingungen sollen ausgewertet werden. Bestimmen Sie zunächst alle logischen Funktionen für die Übergangsbedingungen zwischen den Zuständen in minimaler Form (Funktionen F0-F5 aus Bild 1.50). Sie können die Zustände mit Merker-Bits (verbreitete Methode) kodieren. Vermeiden Sie dabei die Überschneidung von Zuständen, d.h. es dürfen niemals zwei Zustände “gleichzeitig aktiv” sein. Eine alternative Form ist die Kodierung der Zustände als Integer-Wert. In diesem Fall können Überschneidungen nicht auftreten. Die Funktionsfähigkeit (einschließlich Fehlerbehandlung) der Steuerung ist mit einem Modell der Tankfüllanlage mit einer realen SPS nachzuweisen. 29 Ampelsteuerung mit Belegungserkennung Eine besondere Schwierigkeit stellen Systeme dar, deren Ablauf nicht durch externe Signale (z.B. Endschalter, Grenzwerte) bestimmt ist, sondern deren Ablauf weitgehend “autonom” erfolgt. Dies ist bei einer Ampelsteuerung der Fall. Ein sogenannter Umlauf ist ein vollständiger Ampelzyklus, der zeitgesteuert erfolgt und nur bedingt durch äußere Signale (Anforderung durch Fußgänger, Belegung der Fläche vor der Ampel durch Fahrzeuge) beeinflusst wird. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 81 K. Müller, HS Bremerhaven = Belegeungserkennung rot_2 gelb_2 grün_2 Fahrtrichtung 2 rot_1 gelb_1 grün_1 Fahrtrichtung 1 Bild 1.52: Kreuzung mit Ampeln und Belegungserkennung Wir wollen lediglich die Fahrtrichtungen für Fahrzeuge betrachten (keine Fußgängerampeln). In jeder Richtung befinden sich Belegungssensoren, die angeben, ob sich ein Fahrzeug über dem Sensor befindet. Diese Information soll genutzt werden, um im Interesse eines möglichst hohen Verkehrsflusses den Ampelzyklus zu beeinflussen. Es sind zwei grundsätzliche Betriebsarten zu unterscheiden: Normalbetrieb und inaktiver Betrieb. Bei inaktiv geschalteter Ampel blinken jeweils die gelben Leuchten (Bild 1.53). Die Zeiten für “Gelb an” und “aus” sind gleich (Tbl ). Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 82 K. Müller, HS Bremerhaven 10 rot_1 11 gelb_1 grün_1 rot_2 gelb_2 grün_2 Tbl Bild 1.53: Inaktive Ampelanlage Die Zustände der Anlage sind sind von 0..11 durchnummeriert. Zu jedem Zustand gehört eine Zeitbedingung. Die Grünphasen sind jeweils in zwei Abschnitte unterteilt (2-3 sowie 7-8). Nach Ablauf des ersten Abschnitts (2 bzw. 7) kann die Grünphase abgekürzt werden, wenn die Belegungssensoren ein Fahrzeug in der jeweiligen Gegenrichtung anzeigen. Es erfolgt dann ein Übergang von 3 → 4 oder 8 → 9 auch vor Ablauf der entsprechenden Zeit. In den Zuständen 3 und 8 sind also die Belegungssensoren auszuwerten. 0 1 2 3 4 5 6 7 8 9 0 rot_1 gelb_1 grün_1 rot_2 gelb_2 grün_2 TU Bild 1.54: Umlauf der Ampelanlage Das Eingangssignal Umlaufbetrieb ( soll. gibt an, ob die Ampelanlage im normalen = 1) oder im inaktiven Betrieb ( = 0) arbeiten Steuerungs- und Feldbustechnik 83 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 29.1 Strategien zur Kodierung Von mehreren Autoren über SPS-Programmierung [1], [2] oder [3] wird übereinstimmend vorgeschlagen, Merker zur Kodierung der Zustände einzusetzen. Ein typisches Fragment der Anweisungsliste lautet damit: // Setz- und Ruecksetzbedingung für M0.3 --------------U M0.2 // alter Zustand U E0.0 // zusätzliche Bedingung S M0.3 // dies wird der Folgezustand O M0.4 // mit dem (Folge-) Zustand M0.4 R M0.3 // wird der Zustand M0.3 zurückgesetzt // Setz- und Ruecksetzbedingung für M0.4 --------------U M0.3 // alter Zustand U T 3 // zusätzliche Bedingung S M0.4 // dies wird der Folgezustand O M0.5 // mit dem Zustand M0.5 R M0.4 // wird der Zustand M0.4 zurückgesetzt Aus der Sicht der Automatentheorie ist diese Vorgehensweise höchst bedenklich, denn es bestehen eine Reihe gravierender Nachteile: Es findet keine geschlossene Kodierung von Zuständen statt. Die Setz- und Rücksetzbedingungen gehören zu unterschiedlichen Zuständen. Es sind für einen Zyklus immer zwei oder mehr Merker (=Zustände) aktiv. Im obigen Beispiel sind dies die Merker M0.3 und M0.4. Damit ist der Zustand einer Anlagen nicht mehr eindeutig kodiert. Gewöhnlich hängen von den Zuständen Ausgangsgrößen ab. Die Art der Programmierung ist fehleranfällig, da für n Zustände n Merker benutzt werden. Mit den n Merkern lassen sich aber 2 n Zustände beschreiben. Das System muss initialisiert werden, da immer ein Merker gesetzt sein muss. Eine Alternative Kodierung von Zuständen kann mit Hilfe einer Integer-Variablen erfolgen. Alle genannten Nachteile bestehen dann nicht mehr. Sollen dennoch Merker verwendet werden --- was übliche Praxis ist ---, so wird folgende Vorgehensweise nahegelegt: // Kodierung von M0.2 --------------U M0.2 // gegenwärtiger Zustand U E0.0 // zusätzliche Bedingung S M0.3 // dies wird der Folgezustand R M0.2 // alten Zustand loeschen // Kodierung von M0.3 --------------U M0.3 // gegenwärtiger Zustand U T 3 // zusätzliche Bedingung S M0.4 // dies wird der Folgezustand R M0.3 // alten Zustand loeschen Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 84 K. Müller, HS Bremerhaven Die Anweisungsliste ist kürzer, besser lesbar und es treten keine Zustands-Merker doppelt auf. Allerdings kann dieses Programm nicht als Funktionsplan dargestellt werden, was bei größeren Anlagen ohnehin keine Rolle spielt. 29.2 Übung: Kodierung der Ampelsteuerung Die Ampelsteuerung gemäß Bild 1.53 bzw. Bild 1.54 soll programmiert werden. Die Zustände sind --- wie in der Praxis üblich --- in Merker-Bits zu kodieren. Das Zustandsdiagramm zeigt Bild 1.55. An den Übergängen zwischen den Zuständen stehen entweder Zeiten oder externe Signale. NormBetrieb rot_1 rot_2 0 Tgelb NormBetrieb Trr gelb_2 9 Anf_1 Tg 22 grün_2 8 2 3 Anf_2 Trg rot_2 gelb_2 grün_1 Tg 11 7 6 10 Trg Tg 21 grün_2 rot_1 gelb_1 1 Tbl gelb_1 gelb_2 Tbl 11 [AUS] grün_1 Tg 12 4 gelb_1 Trr Tgelb 5 rot_1 rot_2 Bild 1.55: Zustandsdiagramm für Ampelsteuerung 1) Kodieren Sie alle Zustände mit Merkern. 2) Programmieren Sie die benötigten Timer. 3) Programmieren Sie die Bedingungen für den Übergang zwischen den einzelnen Zuständen. Steuerungs- und Feldbustechnik 85 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 4) Überprüfen Sie die Funktion der Schaltung anhand eines Kreuzungsmodells, das an die SPS angeschlossen werden kann. 30 Diskrete Regelung (PI-Regler) mit einer SPS Ein kontinuierlicher Prozess soll mit Hilfe einer SPS mit A/D- und D/A-Schnittstellen geregelt werden. Dieser Prozess wird durch eine Schaltung mit Operationsverstärkern nachgebildet. Bild 1.56: Operationsverstärker-Schaltung für den kontinuierlichen Prozess Der erste Operationsverstärker bestimmt die Verstärkung des Prozesses. Die folgenden OPs sind Verzögerungen 1. Ordnung mit der Verstärkung 1 und den gleichen Zeitkonstanten T 1 = RC = 10kΩ 47 F = 0.47s . (2.10) Die gesamte Übertragungsfunktion lautet damit VS G a(s) = T1 s + 1 3 . (2.11) Mit VS = 1 erhält man G a(s) = 0.1038s 3 1 . + 0.6627s 2 + 1.41s + 1 (2.12) Der Regler arbeitet mit einer Abtastperiode TS = 100ms. Der Vorgang des “Abtastens” eines kontinuierlichen Prozesses lässt sich näherungsweise durch die Übertragungsfunktion G des(s) = 0.0001s 3 + 0.0011s 2 − 0.0947s + 1 0.0053s 4 + 0.1384s 3 + 0.7385s 2 + 1.4653s + 1 (2.13) beschreiben (Diskretisierung und inverse Tustin-Transformation, soll an dieser Stelle nicht weiter vertieft werden). Für dieses Problem existiert keine einfache Lösungsvorschrift. Es Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 86 K. Müller, HS Bremerhaven bietet sich deshalb an, die zwei Parameter des PI-Regler durch Simulation zu ermitteln. Das folgende MATLAB -Fragment ermöglicht einen iterativen Entwurf der Parameter VR (Verstärkung) sowie Tn (Nachstellzeit) des PI-Reglers. function Kc = pidesign(Vr, Tn) % format: Kc = pidesign(Vr, Tn) global Gdes uu tt % inputs: w, d, outputs: y, u Kc = tf(Vr * [Tn 1], [Tn 0]); T11 T12 T21 T22 = = = = feedback(Kc * Gdes, 1); feedback(Gdes, Kc); feedback(Kc, Gdes); -feedback(Kc * Gdes, 1); y11 y12 y21 y22 = = = = lsim(T11, lsim(T12, lsim(T21, lsim(T22, uu(:,1), uu(:,2), uu(:,1), uu(:,2), tt); tt); tt); tt); plot(tt, [uu y11+y12 y21+y22]); title(’Continuous PI controller’); Continuous PI controller 1.6 1.4 Stellgröße 1.2 1 0.8 Regelgröße 0.6 0.4 0.2 Sollwert Störgröße 0 ---0.2 0 Bild 1.57: 5 10 15 20 25 30 Geschlossener Kreis mit schlecht eingestellten Reglerparametern Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 87 K. Müller, HS Bremerhaven Continuous PI controller 1 Sollwert 0.8 Regelgröße 0.6 Stellgröße 0.4 0.2 Störgröße 0 ---0.2 Bild 1.58: 0 5 10 15 20 25 30 Geschlossener Kreis mit brauchbaren Reglerparametern Sind die Reglerparameter bestimmt (beispielsweise die Parameter, die zur Simulation in Bild 1.58 gehören), so kann der PI-Regler nach Abschnitt 22.2 programmiert werden. Sollwert und Störgröße lassen sich ebenfalls programmgesteuert erzeugen. Die Parameter des diskreten PI-Reglers folgen aus VR , Tn und T gemäß kp = V R 2T n + T , 2T n ki = V R T . Tn (2.14) Mit dem Verschiebe-Operator 1/z lässt sich der diskrete PI-Regler als Blockschaltbild zeichnen. kp Limit u(k) ki xki (k+1) 1 z y(k) xki (k) Begrenzungen Bild 1.59: 30.1 Blockschaltbild des diskreten PI-Reglers Übung: Umsetzung als SPS-Programm a) Entwerfen Sie geeignete Parameter VR und Tn für den Prozess (2.13). b) Bestimmen Sie die Parameter (2.14) des diskreten PI-Reglers. c) Schreiben Sie ein SPS-Programm zur Regelung des Prozesses unter Verwendung von analogen Schnittstellen. Steuerungs- und Feldbustechnik 88 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven d) Die Anregungen für den Regelkreis (Sollwert und Störgröße) sollen zu Testzwecken ebenfalls von der SPS erzeugt werden. Verwenden Sie dabei zyklische Verläufe wie in den Bildern 1.57 und 1.58. e) Überprüfen Sie die Übereinstimmung von Berechnung und realer SPS mit dem Oszilloskop. Die folgende Lösung dient nur zum Vergleich. Sie sollten Ihr Programm unabhängig von diesem Programm entwickeln. Das Programm ist natürlich nicht vollständig: gelistet ist lediglich der OB35; DB1, OB1 und OB101 fehlen. // setzen von Sollwert ww und Stoergroesse dd L DB1.cnt L 0 ==I SPBN Z101 L 7.500000e-01 T DB1.ww Z101 :NOP 1 Z102 L L ==I SPBN L T :NOP Z103 L L ==I SPBN L T :NOP Z104 L L ==I SPBN L T :NOP DB1.cnt 50 Z102 2.500000e-01 DB1.dd 1 DB1.cnt 100 Z103 2.500000e-01 DB1.ww 1 DB1.cnt 150 Z104 -2.500000e-01 DB1.dd 1 // PI-Regler L PEW 256 ITD DTR L 3.618982e-05 *R T DB1.sig_u L DB1.ww // 1/27648 Steuerungs- und Feldbustechnik 89 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven L DB1.sig_u -R T DB1.sig_u L DB1.kp *R L DB1.xki +R T DB1.sig_y L DB1.Limit >R SPBN Z000 // y > Limit T DB1.sig_y L DB1.sig_u L DB1.Vr *R L DB1.sig_y -R NEGR T DB1.xki L 0 <R SPBN Z004 T DB1.xki SPA Z004 Z000 :NOP 1 L DB1.sig_y L DB1.Limit NEGR <R SPBN Z003 // y < -Limit T L L *R L -R NEGR T L >R SPBN T SPA DB1.sig_y DB1.sig_u DB1.Vr DB1.sig_y DB1.xki 0 Z004 DB1.xki Z004 Z003 :NOP 1 // no limit: integrate L DB1.sig_u L DB1.ki *R // output Steuerungs- und Feldbustechnik 90 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven L +R T DB1.xki DB1.xki Z004 :NOP 1 // convert to DA format L DB1.sig_y L DB1.dd +R L 2.764800e+04 *R RND U E 0.0 SPB Z005 L 0 Z005 :NOP 1 T PAW 256 // inkrementieren von cnt (Begrenzung auf 0..199) L DB1.cnt L 1 +I T DB1.cnt L 200 >=I SPBN Z100 L 0 T DB1.cnt Z100 :NOP 1 31 Vergleich der Algorithmen des SIEMENS -PI-Reglers (FB41) und der bilinearen Transformation Der PI- bzw. PID-Regelalgorithmus ist in der SIEMENS-SPS bereits enthalten in Form einen Funktionsbausteins (FB41) mit zugeordnetem Datenbaustein (DB) zur Parametrierung des kontinuierlichen Reglers K(s) = V R T ns + 1 . Tns (2.15) Allerdings verwendet Siemens eine einfachere Diskretisierung, als die in dieser Veranstaltung behandelte Tustin-Transformation. Die Diskretisierung von Siemens lautet x i(k) = x i(k − 1) + T u(k) , Tn y(k) = V R u(k) + x i(k) . (2.16) Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 91 K. Müller, HS Bremerhaven Dies entspricht der Übertragungsfunktion K SIEMENS(z) = V R 1 + TTn z − 1 z−1 (2.17) . Die Übertragungsfunktion des PI-Reglers der Vorlesung hingegen lautet K STF(z) = V R T T 1 + 2T z − 1 − 2T n n z−1 (2.18) . Die unterschiedlichen Eigenschaften der Regler zeigen sich in den Sprungantworten (Bild 1.60) und --- wesentlich deutlicher --- im Bode-Diagramm (Bild 1.61). Da der Verlauf im Bode-Diagramm maßgäblich für die Stabilität einer Regelung ist, kann die Siemens-Version durch die größeren Abweichungen im Bode-Diagramm zu Problemen führen. 5 4.5 Siemens Amplitude 4 3.5 3 2.5 2 STF 1.5 kontinuierlilch 1 0.5 0 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 Time (sec) Bild 1.60: Sprungantworten PI-Regler (VR = 2, Tn = 0.4s, TS = 0.1s) Man erkennt die gute Approximation der STF-Version im Gegensatz zur Siemens-Diskretisierung. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 92 Magnitude (dB) K. Müller, HS Bremerhaven 35 30 25 Siemens 20 15 Phase (deg) 10 5 0 ---45 ---90 ---1 0 10 10 2 1 10 Frequency (rad/sec) 10 Bode-Diagramme PI-Regler (VR = 2, Tn = 0.4s, TS = 0.1s) Bild 1.61: Die Beträge im Bode-Diagramm von STF-Diskretisierung und kontinuierlichem Regler unterscheiden sich nicht. Diese Unterschiede zeigen zeigen sich natürlich auch im geschlossenen Kreis. Das folgende Beispiel zeigt das Störverhalten des Reglers mit dem Prozess G(s) = 1 . 0.128s 2 + 0.72s + 1 (2.19) Amplitude 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 ---0.05 ---0.1 Bild 1.62: STF SIEMENS 0 0.5 1 1.5 2 2.5 Time (sec) 3 3.5 Störverhalten der Regler KSTF und KSIEMENS Der Regelfehler der Siemens-Version ist größer als der des STF-Reglers. 4 Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 93 K. Müller, HS Bremerhaven 32 Einsatz des PID-Moduls der SPS Bestandteil der Siemens -Step7-SPS ist bereits ein PID-Regler als sogenannten System-Funktionsblock (SFB). Der Funktionsblock ist weitgehend parametrierbar, d.h. die Betriebsart kann durch viele Parameter festgelegt werden. Dabei ist zu berücksichtigen, dass der Regler nicht exakt verwirklicht wird, sondern durch Diskretisierung des kontinuierlichen Reglers und Verzögerungen durch die A/D-Umsetzung beeinflusst wird. Im folgenden Bild ist Ein- und Ausgangssignal gezeigt, dass von der SPS über einen A/D-Umsetzer eingelesen und sofort wieder über D/A-Umsetzer ausgegeben wird. 2.5 2 1.5 1 0.5 0 ---0.5 ---1 ---1.5 ---2 ---2.5 0 Bild 1.63: 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 Verzögerungen bei der SPS-Signalverarbeitung (Wandelzeit 20ms) Man erkennt, dass von theoretisch idealen Verlauf Abweichungen um bis 40ms auftreten, die in der Wandelzeit und der Anzahl der zu wandelnden Kanäle begründet sind. Durch Konfiguration der entsprechenden A/D-Baugruppe kann die maximal auftretende Verzögerung auf ca. 5-10ms begrenzt werden. Insbesondere durch die Art der Diskretisierung unterscheidet sich der diskrete Regler sehr stark von der kontinuierlichen Variante. Im Abschnitt 23 haben wir die Tustin-Diskretisierung (bilineare Transformation) kennengelernt. Siemens verwendet ein einfacheres Verfahren, das zu größeren Unterschieden zwischen kontinuierlichem und diskretem Regler führt. Die Differentialquotient du(t) dt (2.20) wird durch den “Differenzenquotient” du(t) u(k) − u(k − 1) ≈ T dt (2.21) ersetzt, der für T → 0 (Abtastperiode) gegen (2.20) konvergiert. Diese Näherung ist graphisch in Bild 1.64 gezeigt. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 94 K. Müller, HS Bremerhaven u(t) u(k) − u(k − 1) T dt dt u(t) (k-1)T Bild 1.64: kT (k+1)T t Näherung der Ableitung durch Differenzenquotient Am Beispiel in Bild 1.64 wird deutlich, dass die Diskretisierungsfehler mit steigender Abtastzeit immer größer werden. Bei besseren Diskretisierungsverfahren gilt dies jedoch nicht generell. Siemens geht von der Parallelform des PID-Reglers T s K SIEMENS = V R 1 + 1 + * V Tn s T s + 1 (2.22) aus, um mit dem Modul sowohl P-, I-, PI- sowie PID-Regler realisieren zu können. Am Beispiel des I-Anteils 1 = y(s) ⇒ T s y(s) = u(s) n Tn s u(s) (2.23) sei die von Siemens verwendete Diskretisierung gezeigt werden. Dies entspricht der DGL Tn dy(t) y(k) − y(k − 1) = u(t) ≈ T n = u(k) T dt (2.24) Löst man (2.24) nach y(k) auf, so folgt y(k) = y(k − 1) + T u(k) . Tn (2.25) Die Sprungantwort des diskreten Integrators liegt immer über der des kontinuierlichen Integrators. Zum Vergleich ist noch einmal der mit der bilinearen Transformation berechnete Integrator eingezeichnet. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 95 K. Müller, HS Bremerhaven 0.7 0.6 kontinuierlich 0.5 0.4 0.3 SIEMENS 0.2 Tustin 0.1 0 0 Bild 1.65: 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 Diskretisierung des kontinuierlichen Integrators Die Unterschiede werden besonders deutlich, wenn die Bode-Diagramme der PID-Regler verglichen werden (Bild 1.66). 10 Tustin Betrag [dB] 5 0 ---5 ---10 SIEMENS kontinuierlich ---15 ---20 ---25 ---30 90 Phase [Grad] Tustin 45 SIEMENS 0 ---45 kontinuierlich ---90 10 0 Bild 1.66: Frequenz [rad/s] Bode-Diagramme der Regler 101 Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 96 K. Müller, HS Bremerhaven Man erkennt, dass der Siemens-Regler deutliche Unterschiede im Betrags- und Phasenverlauf gegenüber dem kontinuierlichen Regler aufweisen. Die für die Stabilität wesentliche Phasenanhebung fällt beim Siemens-Regler deutlich geringer aus. Die Übereinstimmung von Tustin-Transformation und kontinuierlichem Regler ist dagegen sehr hoch. Die folgenden Rechnungen zeigen die Regelung des jeweils selben Prozesses mit den Reglern: kontinuierlich (Bild 1.67), Tustin (Bild 1.68) sowie der “Siemens-diskretisierte” Regler (Bild 1.69). 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 Bild 1.67: 5 10 15 20 25 30 Regelung mit kontinuierlichem PID-Regler 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 Bild 1.68: 5 10 15 20 25 Regelung mit dem diskreten Regler (Tustin-Transformation) 30 Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 97 K. Müller, HS Bremerhaven 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 Bild 1.69: 5 10 15 20 25 30 Regelung mit dem diskreten Regler (SIEMENS-Diskretisierung) Die Regelungen mit dem diskreten Reglern besitzen schlechtere Eigenschaften als mit dem kontinuierlichen Regler. Besonders ungünstig schneidet die Siemens-Variante ab. Es wäre aber vollkommen abwegig, daraus zu schließen, dass diskrete Regelungen grundsätzlich schlechter als kontinuierliche Regelungen sein müssen. Um wirklich gute Ergebnisse mit diskreten Reglern zu erhalten, muss nur der Entwurfsprozess auf die diskrete Regelung abgestimmt werden. Der Entwurf einer diskreten Regelung ist jedoch nicht Bestandteil dieser Lehrveranstaltung. 32.1 Verwendung des PID-Moduls der Siemens-SPS (FB41) Wenn eine PID-Regler-Funktion benötigt wird, kann der System-Funktionsblock SFB41 eingesetzt werden. Dieser Funktionsblock steht in der Standardbibliothek zur Verfügung und ist eine schnelle Methode einen fehlerfreien PID-Regler zu verwirklichen. Man ist dann allerdings auf die Einschränkungen des programmierten Reglers angewiesen, da der Programmcode (geschrieben in ST / Structured Text) nicht einsehbar und damit nicht veränderbar ist. Mit dem PID-Regler aus der Bibliothek ist allerdings auch ein Overhead verbunden, da einige Funktionen aus dem Regler nicht in jeder Anwendung benötigt werden. Das Blockschaltbild 2.1 zeigt die Struktur sowie die Parameter des Funktionsblocks bzw. des PID-Reglers. Steuerungs- und Feldbustechnik 98 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Bild 2.1: Blockschaltbild des SIEMENS -PID-Reglers in der SPS Dem Funktionsblock ist ein sogenannter Instanzdatenbaustein zugeordnet, der die Parameter enthält. Der Instanzdatenbaustein mit seinen Anfangswerten zeigt das folgende Diagramm 2.2. Steuerungs- und Feldbustechnik 99 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Bild 2.2: Parameter des Instanzdatenbausteins und Anfangswerte Der Instanzdatenbaustein zeigt eine bunte Mischung aus deutschen und englischen Bezeichnungen, vermutlich ein Relikt aus dem Aufkauf der Texas Instruments PLC Division durch Siemens. Die Bedeutung der einzelnen Parameter ist der Siemens-Dokumentation entnommen. Steuerungs- und Feldbustechnik K. Müller, HS Bremerhaven 100 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik K. Müller, HS Bremerhaven 101 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik K. Müller, HS Bremerhaven 102 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik 103 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Bei dem Parameter TI ist die Bezeichnung “reset time” falsch oder zumindest missverständlich, da es sich um die Nachstellzeit oder Integrationszeitkonstante des I-Anteils handelt. Zu beachten ist, dass das alle internen Zahlenwerte auf 1% (0,01) bezogen sind, d.h. die Stellgröße hat intern den Wert 100.0 (REAL). Dieses Siemens-Format sollte man nicht ändern, denn einige Zusatzwerkzeuge wie z.B. “PID Control” erwarten dieses Format. Sofern man die Regelgröße selbst normiert (über den Eingang PV_IN, Schalter PVP_ON = FALSE) muss dies also so erfolgen, dass sich die Größe im Zahlenbereich ---100.0...+100.0 bewegt. 32.2 Übung: PID-Regelung mit FB41 Mit dem PID-Baustein FB41/DB41 soll der analoge Prozess G a(s) = VS T1 s + 1 3 . (2.26) Steuerungs- und Feldbustechnik 104 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven aus Abschnitt 30 geregelt werden. 1. Parametrieren Sie den Instanzdatenbaustein. Verbinden Sie dabei die A/D- und D/A-Umsetzer mit den entsprechenden Schnittstellen des Instanzdatenbausteins. Beachten Sie das erforderliche Datenformat und die Skalierung. 2. Untersuchen Sie die Möglichkeit des Handbetriebs und des “stoßfreien” Umschaltens zwischen Handbetrieb und Reglerbetrieb. Als Signal für das Umschalten dient ein beliebiger digitaler Eingang. 3. Stellen Sie P-, I-, PI- und PID-Regler ein und untersuchen Sie ihre Eignung für die Regelung des analogen Prozesses. 33 Structured Text (ST) Structured Text ist die Programmiersprache der “nächsten Generation”, die wesentliche Vorteile gegenüber den anderen Programmierformen nach IEC-61131 SFC (Sequential Function Chart) FBD (Function Block Diagram) LD (Ladder Diagram) IL (Instruction List) aufweist. Siemens hat natürlich eigene Bezeichnungen. So firmiert ST bei Siemens unter SCL (structured control language). Zum großen Teil hält sich Siemens aber damit an die Vorgaben der PLCopen bzw. IEC-61131. Programme in ST sind portabel, d.h. sie können mit geringem Aufwand auf Anlagen eines anderen Herstellers portiert werden. Mit ST lässt sich Software für Automatisierungsanlagen endlich in einer Hochsprache entwickeln. Der Einsatz von ST bietet ausschließlich Vorteile gegenüber IL bei der Entwicklung neuer Programme. Die Vorteile im einzelnen sind: Bessere Lesbarkeit und damit bessere Wartbarkeit der Programme ST-Programme sind wesentlich kürzer und damit wesentlich weniger fehleranfällig und lassen sich schneller entwickeln Ermöglicht strukturiertes Programmieren im Gegensatz zu “Spaghetti”-IL-Programmen durch einen vollständigen Satz von Kontrollstrukturen (Vergleiche, Verzeigungen, Schleifen usw.) Eigene Definition komplexer Datentypen (damit kann man fast “objektorientiert” programmieren) Steuerungs- und Feldbustechnik 105 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven In Anbetracht der Vorteile von ST gegenüber IL ist es unverständlich, warum ST so wenig eingesetzt wird. Als Beispiel dient das Programm für einen PID-Regler, das man auch ohne Detailkenntnisse von ST fast verstehen kann. FUNCTION_BLOCK PID VAR_INPUT AUTO : BOOL ; PV : REAL ; SP : REAL ; X0 : REAL ; (* (* (* (* (* (* (* (* (* 0 - manual , 1 - automatic *) Process variable *) Set point *) Manual output adjustment - *) Typically from transfer station *) Proportionality constant *) Reset time *) Derivative time constant *) Sampling period *) KP : REAL ; TR : REAL ; TD : REAL ; CYCLE : TIME ; END_VAR VAR_OUTPUT XOUT : REAL; END_VAR VAR ERROR : REAL ; (* PV - SP *) ITERM : INTEGRAL ; (* FB for integral term *) DTERM : DERIVATIVE ; (* FB for derivative term *) END_VAR ERROR := PV - SP ; (* Adjust ITERM so XOUT := X0 when AUTO = 0 *) ITERM (RUN := AUTO, R1 := NOT AUTO, XIN := ERROR, X0 := TR * (X0 - ERROR), CYCLE := CYCLE) ; DTERM (RUN := AUTO, XIN := ERROR, CYCLE := CYCLE) ; XOUT := KP * (ERROR + ITERM.XOUT/TR + DTERM.XOUT*TD) ; END_FUNCTION_BLOCK 33.1 ST Syntax ST ist eine Hochsprache, die Elemente von PASCAL und Ada übernommen hat. Man hätte sich auch auch auf jede andere (existierende) Hochsprache einigen können, da ST kaum SPS-spezifisch ist (damit ist ST eigentlich recht überflüssig). Ein Bestreben der SPS-Produzenten in der PLCopen (www.plcopen.org) war sicherlich, die Kunden an die SPS mit einer spezifischen Sprache zu binden. ST ist aber leicht erlernbar. Kenntnisse von Programmiersprachen wie Java, C, oder natürlich PASCAL, Ada, Modula sind hilfreich für das Erlernen von ST. ST ist --- wie moderne Programmiersprachen --- nicht mehr zeilenorientiert, sondern die Sprachelemente werden jeweils durch ein Semikolon “;” abgegrenzt. Beispielsweise sind A := pi; B := SIN(2.0 * pi * 50 * x); und A := pi; B := SIN(2.0 * pi * 50 * x); vollkommen identisch in ihrer Auswirkung auf den Programmkode. Man kann diese Freiheit nutzen, um die Struktur eines Programms durch “Einrücken” zu verdeutlichen. Steuerungs- und Feldbustechnik 106 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 33.1.1 Ausdrücke (Expressions) Mathematische und logische Ausdrücke unterscheiden sich nicht von anderen Hochsprachen. Zu beachten ist, dass die Zuweisung durch das Symbol “:=” erfolgt (das Symbol “=” ist der Vergleichsoperator auf “Gleichheit”). Alle Ausdrücke sind in folgender Tabelle aufgelistet (von www.plcopen.org). 33.1.2 Kontrollstrukturen ST besitzt alle notwendigen Kontrollstrukturen für eine strukturierte Programmierung. Damit lassen sich Algorithmen leicht umsetzen und das Programm wird sehr viel Steuerungs- und Feldbustechnik 107 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven übersichtlicher und verständlicher. Jeder, der schon einmal eine längere IL (Anweisungsliste) analysieren musste, die von einen anderen Programmierer stammt, ist für dir Kontrollstrukuren von ST dankbar. Die Kontrollstrukturen sind in folgende Liste zusammengestellt (von www.plcopen.org). Steuerungs- und Feldbustechnik 108 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Es existiert eine Ausnahme zu den Kontrollstrukturen, die eine strukturierte Programmierung naheliegen: der EXIT-Befehl. Mit “EXIT” kann eine Schleife verlassen werden, auch wenn die Ende-Bedingung der Schleife noch nicht erreicht ist. Bei “sauberer” Programmierung lässt sich “EXIT” immer vermeiden. Ais Effizienzgründen kann eine Konstruktion mit EXIT dennoch günstig sein. sum := 0; FOR i := 1 TO 3 DO FOR j := 1 TO 2 DO IF flag THEN EXIT; END_IF sum := sum + j; END_FOR; sum := sum + i; END_FOR; Das “Einrücken” der Programmzeilen ist nicht erforderlich. Die folgende Fassung hätte somit die gleiche Funktion: SUM := 0; FOR I := 1 TO 3 DO FOR J := 1 TO 2 DO IF FLAG THEN EXIT; END_IF SUM := SUM + J; END_FOR; SUM := SUM + I; END_FOR; Es existieren unterschiedliche Empfehlungen, wie dies erfolgen sollte. Das erste Beispiel folgt der Empfehlung von Jensen und Wirth, den Entwicklern der Programmiersprache Steuerungs- und Feldbustechnik 109 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven PASCAL. Beachten Sie, dass die Schlüsselworte (FOR, EXIT usw.) groß geschrieben wurden. Auch dies ist keine Vorschrift, sondern eine Empfehlung zur Erhöhung der Lesbarkeit des Programms. 33.1.3 Schlüsselworte Schlüsselworte sind Bezeichnungen, die innerhalb eine ST-Programms bereits eine feste Bedeutung haben und nicht für Variablennamen zur Verfügung stehen. Dies sind alle Bezeichnungen von Kontrollstrukturen und Datentypen (z.B. REAL, BOOL usw.) sowie folgende Namen: START, DATA, PROJECT, SFC, SFC2, LADDER, I/O, ASCII, CAR, FORCE, PLC2, CONFIG, INC, ALL, YES, NO, STRUCTURED TEXT Variablennamen müssen mit einem Buchstaben beginnen. Ansonsten dürfen Variablennamen frei gewählt werden. 33.1.4 Unterprogramme Anstelle der FBs und FCs treten gewöhnliche Unterprogramme, an die Werte übergeben werden können. Die Variablen bekommen zusätzlich zum Typ auch noch ein Attribut, das den Zugriff auf die Variable angibt. Declaration Description VAR VAR_INPUT VAR_OUTPUT VAR_IN_OUT the general variable declaration defines a variable list for a function defines output variables from a function defines variable that are both inputs and outputs from a function VAR_EXTERNAL VAR_GLOBAL VAR_ACCESS RETAIN CONSTANT AT END_VAR Beispiele: a global variable a value will be retained when the power is cycled a value that cannot be changed can tie a variable to a specific location in memory (without this variable locations are chosen by the compiler) marks the end of a variable declaration Steuerungs- und Feldbustechnik 110 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven Durch die Definition und Deklaration geeigneter Variablen wird eine Programmieraufgabe deutlich vereinfacht. Steuerungs- und Feldbustechnik Hochschule Bremerhaven --- IAE 111 K. Müller, HS Bremerhaven 34 Vergleich zwischen ST und IL Entwicklungszeit --- Lesbarkeit --- Fehleranfälligkeit --- Wartbarkeit? Siemens % 4#' 2 2 " % " " % *" % -" /4 6 /4$ !4 % % 0" /4 6 , ) 5 * 5 1 2 ) 2 ) 1 6 2 6 2 1 6 2 2 " " 2 4$' ST ! "#$% & ' ) ) ) 1 ) !4 % % Modicon 5 2 + % IL ) 5 * 5 ) #%/ , ) ) # 2 ,( &3' ) - * + ( ( .# ( 0 1 .# ( 1 "#$% ! ) ( Steuerungs- und Feldbustechnik 35 112 Hochschule Bremerhaven --- IAE Labor #01: AWL, FUP und KOP Erstellen Sie ein SPS-Programm in Step-7, das die XOR Funktion in AWL, FUP und KOP (Kopplungsplan) umsetzt. Verwenden Sie eine Symbolik-Datei mit den Vereinbarungen x0 ⇔ E0.0 x1 ⇔ E0.1 y ⇔ A1.0 x0 x1 Bild L1.: =1 y0 Schaltung für Labor #01 Verwirklichen Sie die Schaltung als AWL (Anweisungsliste). Verwirklichen Sie die Schaltung als FUP (Funktionsplan). Verwirklichen Sie die Schaltung als KOP (Kontaktplan). Simulieren Sie die Funktion. Steuerungs- und Feldbustechnik 36 Hochschule Bremerhaven --- IAE 113 Labor #02: Elementare Logikfunktionen Erstellen Sie ein SPS-Programm in Step-7, das folgende Logikschaltung umsetzt. Verwenden Sie eine Symbolik-Datei mit den Vereinbarungen x0 ⇔ E0.0 x1 ⇔ E0.1 x2 ⇔ E0.2 x3 ⇔ E0.3 y0 ⇔ A1.0 y1 ⇔ A1.1 =1 x3 ≥1 a x2 =1 S R Q y0 y1 x1 & x0 Bild L2.: Schaltung für Labor #02 Verwirklichen Sie die Schaltung als AWL (Anweisungsliste). Verwirklichen Sie die Schaltung als FUP (Funktionsplan). Da sich die XOR-Funktion mit KOP (Kontaktplan) nur sehr umständlich umsetzen lässt, soll auf eine Realisierung als KOP verzichtet werden. Stellen Sie die Wahrheitstabellen für die Schaltung auf. Simulieren Sie die Funktion. Was passiert, wenn die Eingangssignale die Werte x3 = ’0’, x2 = ’0’, x1 = ’0’ sowie x0 = ’0’ annehmen? Begründen Sie Ihre Aussagen. Steuerungs- und Feldbustechnik 37 Hochschule Bremerhaven --- IAE 114 Labor #03: Zustandsdiagramme für Automaten und für eine Ablaufsteuerung der SPS Aufgabe des Ingenieurs ist es häufig, die abstrakte Struktur (Architektur) einer Lösung zu erzeugen. Die Umsetzung in ein entsprechendes Steuerungsprogramm muss auch beherrscht werden, kann aber auch von Programmierern erledigt werden. Bei eine Ablaufsteuerung erfordert dieser Schritt die Abbildung eines praktischen Problems auf ein Zustandsdiagramm. Um die Zahl der schweren Eisenbahnunfälle zu verringern, soll der Betrieb auf einer einspurigen Eisenbahnstrecke automatisiert werden. B0 B1 S0 W0 y0 y1 B2 y2 Weichen y3 W1 S1 B3 B4 Richtlinien für den Betrieb des einspurigen Streckenteils: 1. Der Zugbetrieb ist in Blöcke (B0 - B4) eingeteilt. Befindet sich ein Zug in einem Block, so ist die Variable Bx = ’1’. 2. Die Stellung der Weiche wird durch die Signale W0 und W1 angezeigt. 3. Die Signale S0 und S1 regeln die Einfahrt eines Zuges in den nächsten Block. 4. Die Signale S0 und S1 stehen grundsätzlich auf Halt (Sx = ’0’). Nur wenn ein Zug gefahrlos die einspurige Strecke befahren darf, geht das Signal kurzfristig auf Freigabe (Sx = ’1’). Steuerungs- und Feldbustechnik 115 Hochschule Bremerhaven --- IAE 5. Mit den Signalen y0 - y2 können die Weichen umgesteuert werden (Abfrage der Weichenstellung mit den Signalen W0 und W1). 6. Wenn die Anlage in Betrieb genommen wird, ist die Strecke frei und beide Weichen befinden sich in “Linksstellung”. Eingänge Bedeutung B0 ’1’ Block 0 belegt B1 ’1’ Block 1 belegt B2 ’1’ Block 2 belegt B3 ’1’ Block 3 belegt B4 ’1’ Block 4 belegt W0 ’0’ Weiche links, ’1’ Weiche rechts W1 ’0’ Weiche links, ’1’ Weiche rechts Ausgänge Bedeutung y0 ’1’ obere Weiche nach links steuern y1 ’1’ obere Weiche nach rechts steuern y2 ’1’ untere Weiche nach links steuern y3 ’1’ untere Weiche nach rechts steuern S0 ’1’ Signal S0 Freigabe S1 ’1’ Signal S1 Freigabe Sie können annehmen, dass die einzelnen Größen bereits in einer Symbolik-Datei vereinbart wurden, d.h. Sie können z.B. 7 8 9 programmieren. Zeichnen Sie ein Zustandsdiagramm (Zustände = Kreise, Bedingungen jeweils an den Pfeilen angeben). Zeichnen Sie das Zustandsdiagramm in der für SPS gebräuchlichen Form (Rechtecke mit Bedingungen, Merkern und Ausgängen). Steuerungs- und Feldbustechnik 38 Hochschule Bremerhaven --- IAE 116 Labor #04: Ampelsteuerung (Verwirklichung mit AWL und FUP) Im folgenden ist das Zustandsdiagramm eines Umlaufs für eine einfache Ampelsteuerung dargestellt (ohne Querrichtung bzw. Fußgängerampel). Start 0 rot (A1.0) M0.0 Start 1 Start rot (A1.0) M0.1 T0 2 Start M0.2 rot (A1.0) gelb (A1.1) T1 3 Start gruen (A1.2) M0.3 T2 4 Start gelb (A1.1) M0.4 T3 1 Bild L3.: Zustandsdiagramm für die Ampelsteuerung Erzeugen Sie eine Symboldatei für die Ein- und Ausgänge der Steuerung. Setzen Sie das Zustandsdiagramm in der Darstellung Funktionsplan (FUP) um. Für die einzelnen Zustände können separate “Netzwerke” verwendet werden. Setzen Sie das Zustandsdiagramm mit einer Anweisungsliste (AWL) um. Die Funktionsfähigkeit Ihrer Programme ist jeweils durch Simulation nachzuweisen. Steuerungs- und Feldbustechnik 39 117 Hochschule Bremerhaven --- IAE Labor #05: Industrie-Spülmaschine (Ablaufsteuerung durch Kodierung der Zustände und durch Kodierung der Übergänge) Die Ablaufsteuerung einer Industrie-Spülmaschine ist durch eine SPS zu automatisieren. Eingänge Bedeutung Start ’1’ Start-Signal betätigt Deckel_zu ’1’ Deckel geschlossen Oeko ’1’ Ökobetrieb, d.h. verkürzter Spülbetrieb --- 1 Minute (ansonsten 2 Minuten) Ausgänge Bedeutung Verriegelung ’1’ Deckel verriegelt Wasser_ein ’1’ Wasser einfüllen Spuelung_ein ’1’ Spülbetrieb eingeschaltet (Umwälzpumpe) Pumpe ’1’ Laugenpumpe ein Der Ablauf soll wie folgt durchgeführt werden: 1. Mit dem “Start”-Signal wird der Vorgang begonnen. Hierzu muss der Deckel geschlossen sein. 2. Deckel verriegeln. 3. Wasser einfüllen (30s). 4. Spülbetrieb ein: [Oeko = ’1’ ⇒ 1 Minute, Oeko = ’0’ ⇒ 2 Minuten] 5. Wasser abpumpen (30s). 6. Trocknen (Ruhephase = 30s). 7. Deckelöffner freigeben (Deckel entriegeln). Zeichnen Sie das Zustandsdiagramm. Schreiben Sie ein SPS-Programm durch “Kodierung der Zustände” (klassische Lösung) Schreiben Sie ein SPS-Programm durch “Kodierung der Übergänge” (Lösung aus der Automatentheorie) Die Funktionsfähigkeit Ihrer Programme ist jeweils durch Simulation nachzuweisen. Steuerungs- und Feldbustechnik 40 118 Hochschule Bremerhaven --- IAE Labor #06: Berechnung numerischer Ausdrücke mit der SPS Schreiben Sie eine Funktion (FC = Function), die die ganzzahlige Fakultät berechnet. Die Berechnungen sollen mit 32 Bit Integer (DW = Double Word) ausgeführt werden, um einen Überlauf bei der Berechnung vermieden wird. Die Fakultät ist definiert als x (1.57) k. x! = k=1 Man beachte, dass (1.58) 0! = 1 gilt. Die 32 Bit Integer-Konstante 123456 wird beispielsweise mit L #123456 geladen. Der Aufruf der Funktion im Block OB1 könnte dann wie folgt aussehen: L T L#5 MD 0 CALL FC x:=MD0 x_fak:=MD4 1 L 4 MD Der Ergebnis sollte dann 5! sein, was im Debugger zu überprüfen ist. Steuerungs- und Feldbustechnik 41 119 Hochschule Bremerhaven --- IAE Labor #07: Numerische Lösung einer Gleichung durch Iteration mit der SPS Die Gleichung cos(x) = ax 3 + x (1.59) lässt sich nicht analytisch, d.h. durch Auflösung nach x lösen. Mit Hilfe einer Newton-Raphson-Iteration x k+1 = x k − f (x) f (x) (1.60) kann die Lösung jedoch mit beliebiger Genauigkeit bestimmt werden. Mit ! ∆ f (x) == cos(x) − ax 3 − x = 0 (1.61) sowie der Ableitung df = f = − sin(x) − 3ax2 − 1 dx (1.62) lautet die Berechnungsvorschrift x k+1 = x k + cos(x) − ax 3 − x . sin(x) + 3ax 2 + 1 (1.63) Der Anfangswert x0 kann null gewählt werden. Eingänge Bedeutung a aus AD-Umsetzer Der Parameter a kann aus einem AD-Umsetzer mit folgender Programmsequenz ausgelesen werden: L IDT DTR L PEW 256 3.61689814e-04 // // // // // AD-Umsetzer Integer -> Doppelwort (32 Bit) Real Siemens Magic Number = Normierung auf 0..10.0 *R Schreiben Sie den Funktionsblock FB1, der diese Iteration durchführt. Vereinbaren Sie sinnvolle Variablen im Datenbaustein DB1 (Zuordnung zu FB1). Überprüfen Sie die Lösung mit dem Debugger. Steuerungs- und Feldbustechnik 42 120 Hochschule Bremerhaven --- IAE Labor #08: Digitales Filter Die kontinuierliche Übertragungsfunktion (Geschwindigkeitsmessung) G(s) = 10s s+1 (1.64) soll durch die bilineare Transformation s = 2 z−1 T z+1 (1.65) in eine diskrete Übertragungsfunktion G(z) überführt werden. Die Abtastzeit betrage T = 0.1s. Berechnen Sie die diskrete Übertragungsfunktion G(z). Bestimmen Sie die Differenzengleichung. Programmieren Sie das digitale Filter mit dem Funktionsblock FB1 mit dem Datenbaustein DB1. Der Aufruf von FB1 muss aus dem OB35 gemäß folgender Programmsequenz erfolgen: L ITD DTR L *R T PEW 256 // aus ADC (16 Bit) 3.616898e-05 // Normieren auf +-1.0 CALL FB1,DB1 // DIGITALES FILTER L L *R RND T DB1.y 2.764800e+04 // Denormieren PAW // Integer (ganzzahlig) // an DAC (16 Bit) DB1.uk 258 Es erfolgt keine Parameterübergabe; die Daten werden direkt in den Datenbaustein DB1 geschrieben. Steuerungs- und Feldbustechnik 43 121 Hochschule Bremerhaven --- IAE Labor #09: Digitales Filter 2. Ordnung Das diskrete Filter G(z) = 0.1833z + 0.1757 z 2 − 1.523z + 0.8819 (1.66) soll mit einer SPS verwirklicht werden. Die Abtastzeit beträgt T = 0.1s. Bestimmen Sie die Differenzengleichung. Beachten Sie, dass bei dem Filter 2. Ordnung sowohl u also auch y zeitlich verschoben werden muss. Dies erfolgt üblicherweise am Ende der Berechnung des digitalen Filters. Programmieren Sie das digitale Filter mit dem Funktionsblock FB1 mit dem Datenbaustein DB1. Der Aufruf von FB1 muss aus dem OB35 gemäß folgender Programmsequenz erfolgen: L ITD DTR L *R T PEW 256 // aus ADC (16 Bit) 3.616898e-05 // Normieren auf +-1.0 CALL FB1,DB1 // DIGITALES FILTER L L *R RND T DB1.y 2.764800e+04 // Denormieren PAW // Integer (ganzzahlig) // an DAC (16 Bit) DB1.uk 258 Es erfolgt keine Parameterübergabe; die Daten werden direkt in den Datenbaustein DB1 geschrieben. Was für ein dynamisches Verhalten zeigt das Filter? Steuerungs- und Feldbustechnik 44 Hochschule Bremerhaven --- IAE 122 Labor #10: PID-Regler Der kontinuierliche PID-Regler kp u P y ki s kd t *s s +1 I D soll als diskreter PID-Regler mit der SPS verwirklicht werden: K(z) = k dp + k di k − z −ddz z−1 1 Begrenzungen kdp u(k) xi [k+1] kdi 1 z xi [k] y(k) --- kdd xd [k+1] 1 z Limit xd [k] z1 Die Parameter des diskreten PID-Reglers lauten gemäß Vorlesungsumdruck nach Zusammenfassung: k dp = k p + 2k d ki T + , 2 2t * + T (1.68) k di = k i T , k dd = 4k d T (2t * + T) z 1 = 2t * − T . 2t * + T (1.67) 2 , (1.69) (1.70) Steuerungs- und Feldbustechnik 123 Hochschule Bremerhaven --- IAE Die Daten des kontinuierliche Reglers seinen: kp = 2.4 , ki = 0.2 , kd = 1.4 , t* = 0.5 . Die Abtastperiode soll T = 0.1 betragen. Bestimmen Sie die alle Differenzengleichungen. Definieren Sie alle benötigten Variablen und temporären Variablen. Programmieren Sie das digitale Filter mit dem Funktionsblock FB1 mit dem Datenbaustein DB1. Verwirklichen Sie die Begrenzungen auf ±0.8 an den im Blockschaltbild gezeigten Stellen. Steuerungs- und Feldbustechnik 45 124 Hochschule Bremerhaven --- IAE Labor #11: Füllstandsregelung (solide & einfach) Ziel ist die Konfiguration des Siemens S7-300 mit der Software Step-7 sowie die Programmierung einer Füllstandsregelung für die folgende Tankanlage. Y1 Y2 S1 S3 S2 S4 Eine einfache Lösung, die weit hinter einer optimalen Lösung (einschließlich Fehlererkennung) zurückbleibt, zeigt folgende Struktur (die Tanks sollen nicht gleichzeitig gefüllt werden): S2 0 S1 ∨ M0.1 Y1 (Tank 1) M0.0 S4 1 S3 ∨ M0.0 Y2 M0.1 Konfigurieren Sie die SPS mit Step-7 . Schreiben Sie eine SPS-Programm gemäß obiger Struktur. Überprüfen Sie die Funktion mit der Tankanlage. (Tank 2) Steuerungs- und Feldbustechnik 46 Hochschule Bremerhaven --- IAE 125 Labor #12: Füllstandsregelung (vollständig) Die Tankfüllanlage aus Labor #10 soll nun unter vollständiger Ausnutzung der Information aus der Sensorik optimal gesteuert werden. Hierzu soll auch zwischen den Tanks umgeschaltet werden, wenn der jeweils nicht befüllte Tank leerzulaufen droht (Schalter S2 bzw. S4). Weiterhin ist in einen Fehlerzustand zu verzweigen (Anzeige durch Blinken von Y1 und Y2), falls ein Fehler in der Anlage detektiert wird (z.B. durch S1 ∧ S2). Die Fehlerzustände können nur durch ein “Reset”-Signal wieder verlassen werden. “0” Tanks voll F1(u) F3(u) F0(u) F4(u) “1” Tank 1 füllen F2(u) “2” Tank 2 füllen F5(u) Reset (zum Zustand “0”) Fehler 250ms “3” Error 0 “4” Error 1 250ms Verwenden Sie die erfolgte Konfiguration SPS mit Step-7 . Schreiben Sie eine SPS-Programm gemäß der obiger Zustandsgraphen. Die Übergänge sollen durch minimierte boolsche Gleichungen (durch KV-Diagramm) erfolgen. Überprüfen Sie die Funktion mit der Tankanlage. Steuerungs- und Feldbustechnik 47 126 Hochschule Bremerhaven --- IAE Labor #13: Graphische Bedienung der Füllstandsregelung mit WinCC (HMI) Für die Tankfüllanlage aus Labor #11 ist eine graphische Bedienoberfläche (WinCC = Windows Control Center) entwickelt werden. Diese Art der Anlagenbedienung ermöglicht es dem Operator eine Vielzahl von Anlagenkomponenten zu steuern und zu überwachen, die sich nicht im unmittelbaren Umfeld des Bedieners befinden müssen. Das nachfolgende Bild enthält einen Vorschlag zur Verwirklichung der Tankbedienung zeigt das nachfolgende Bild. Erzeugen Sie eine graphische Bedienoberfläche mit dem Graphics Designer von WinCC . Modifizieren Sie Ihr Step7-Programm auf der SPS, so dass Sie geeignete Variablen für die Prozessanbindung zur Verfügung stellen. Überprüfen Sie die Funktion mit dem Modell der Tankanlage. Steuerungs- und Feldbustechnik 48 127 Hochschule Bremerhaven --- IAE Labor #14: PI-Regelung einer Tiefpassstrecke mit SPS Für die folgende Regelstrecke mit Operationsverstärkern soll ein diskreter PI-Regler mit der SPS verwirklicht werden. Zunächst sollen die Reglerparameter VR (Verstärkung) sowie TN (Nachstellzeit) durch Simulation des Prozesses mit Matlab ermittelt werden. Erzeugen Sie ein Modell mit der Matlab-Funktion : ; . Entwerfen Sie einen “guten” diskreten PI-Regler mit der Matlab-Funktion : < ; = > . Die Parameter VR und TN verstellen Sie iterativ, bis ein gutes Verhalten in Bezug auf Störungs- und Führungsverhalten erzielt wird. Erstellen Sie ein SPS-Programm, dass die folgenden Verläufe von Sollwert w und Störgröße d erzeugt. Die Abtastperiode (=Zykluszeit des OB35) sei T = 100ms. Sollwert w Störgröße d Steuerungs- und Feldbustechnik 128 Hochschule Bremerhaven --- IAE Berechnen Sie die Parameter des diskreten PI-Reglers gemäß kp = V R 2T n + T , 2T n ki = V R T . Tn (1.71) Erstellen Sie das vollständige SPS-Programm mit dem PID-Regler. Ein- und Ausgangsgrößen sind über A/D- bzw. D/A-Umsetzer zu führen. Überprüfung Sie die Funktion der Regelung mit dem Oszilloskop. Steuerungs- und Feldbustechnik 49 129 Hochschule Bremerhaven --- IAE Labor #15: Zweipunkt- und PI-Regelung einer Tiefpassstrecke mit SPS Für die folgende Regelstrecke mit Operationsverstärkern sollen ein Zweipunktregler mit Hysterese sowie ein diskreter PI-Regler (optional) mit der SPS verwirklicht werden. Der Sollwert gemäß Diagramm soll durch die SPS erzeugt werden (periodisches Signal, 150 Abtastschritte 0.5 dann 150 Abtastschritte 0.0, T = 100ms). Ein- und Ausgang der Strecke sind über A/D-Umsetzer anzuschließen. Sollwert w Programmieren Sie einen Zweipunktregler mit den Ausgängen 0.0 und 1.0 und einer Hysterese ε = 0.04 . Programmieren Sie den diskreten PI-Regler K(z) = 0.478125 + 0.05625 und vergleichen z−1 Sie die Ergebnisse mit denen des Zweipunktreglers. Überprüfung Sie die Funktion der Regelung mit dem Oszilloskop. Steuerungs- und Feldbustechnik 130 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik 131 Hochschule Bremerhaven --- IAE Teil L 50 Lösung Labor #03: Zustandsdiagramme für Automaten und für eine Ablaufsteuerung der SPS Wenn die Anlage in Betrieb geht, stehen die Weichen “links” und die Strecke ist frei. Der nachfolgende Ablauf ist ausschließlich durch die Belegung der Blöcke bzw. der Weichenstellung abhängig. Bild 2.3: Zustandsdiagramm der Eisenbahnsteuerung Steuerungs- und Feldbustechnik 132 Hochschule Bremerhaven --- IAE Das Programm ist nicht vollständig. Die Kodierung aller Übergänge (Transitionen) ist bei einen vorhandenen Zustandsdiagramm jedoch leicht möglich. L L ==I S MW0 0 U U S R M0.0 “B0” M0.1 M0.0 U U S R . . . M0.1 “B2” M0.2 M0.1 M0.0 // Ausgaenge O M0.1 O M1.5 = “S0” . . . // die ersten 16 Merker laden // sind alle Merker 0? // ersten Zustand markieren Steuerungs- und Feldbustechnik 51 133 Hochschule Bremerhaven --- IAE Lösung Labor #04: Ampelsteuerung (Verwirklichung mit AWL und FUP) Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 52 134 Hochschule Bremerhaven --- IAE Lösung Labor #05: Industrie-Spülmaschine (Ablaufsteuerung durch Kodierung der Zustände und durch Kodierung der Übergänge) Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 53 135 Hochschule Bremerhaven --- IAE Lösung Labor #06: Numerische Lösung einer Gleichung durch Iteration mit der SPS Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 54 136 Hochschule Bremerhaven --- IAE Lösung Labor #08: Digitales Filter Ersetzt man s in der Übertragungsfunktion durch s = 2z−1 , Tz + 1 (2.27) so folgt y(z) = G(z) = u(z) k1 = 20 , 2+T 20 z−1 T z+1 2 z−1 +1 T z+1 = 20 z−1 =k z−1 , 1 z−a 2 + T z − 2−T 2+T a=2−T . 2+T (2.28) (2.29) Dies entspricht der Differenzengleichung (soll in FB1, DB1 programmiert werden) y[k] = k 1 u[k] − u[k − 1] + a y[k − 1] . (2.30) Mit dem Zahlenwert T = 0.1 erhält man k1 = Bild 2.4: 20 = 9.5238 , 2 + 0.1 a = 2 − 0.1 = 0.9048 . 2 + 0.1 Sprungantwort kontinuierlichem (blau) und diskretem (grün) System (2.31) Steuerungs- und Feldbustechnik 55 137 Hochschule Bremerhaven --- IAE Lösung Labor #09: Digitales Filter 2. Ordnung Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 56 138 Hochschule Bremerhaven --- IAE Lösung Labor #10: PID-Regler Die Differenzengleichungen folgen unmittelbar aus dem Blockschaltbild. y[k] = k dp u[k] + x i[k] − x d[k] , (2.32) x i[k + 1] = k di u[k] + x i[k] , (2.33) x d[k + 1] = k dd u[k] + z 1 x i[k] . (2.34) Für xi [k+1] und xd [k+1] werden keine eigenen Variablen benötigt, da die Variablen xi [k] und xd [k] im Algorithmus einfach überschreiben werden können. FB1: FUNCTION_BLOCK FB1 VAR_INPUT uk:real:=0.000000e+00 END_VAR VAR_OUTPUT yk:REAL:=0.000000e+00 END_VAR VAR_IN_OUT END_VAR VAR kdp:REAL:=4.955450e+00 kdi:real:=2.000000e-02 kdd:REAL:=4.628100e-01 z1:REAL:=8.181800e-01 limit:REAL:=8.000000e-01 xik:REAL:=0.000000e+00 xdk:REAL:=0.000000e+00 END_VAR VAR_TEMP tmp:REAL END_VAR BEGIN // Ausgang L DB1.kdp L #uk *R L DB1.xik +R L DB1.xdk -R T #tmp // Begrenzung Ausgang L DB1.limit Steuerungs- und Feldbustechnik z000 z001 >R SPBN T :NOP L L NEGR <R SPBN T :NOP L T z000 #tmp 1 #tmp DB1.limit z001 #tmp 1 #tmp #yk // Zustaende L DB1.kdi L #uk *R L DB1.xik +R L #tmp // Begrenzung Integrator L DB1.limit >R SPBN z002 T #tmp z002 :NOP 1 L #tmp L DB1.limit NEGR <R SPBN z003 T #tmp z003 :NOP 1 L #tmp T DB1.xik L DB1.kdd L #uk *R T #tmp L DB1.z1 L DB1.xdk *R L #tmp +R T DB1.xdk END_FUNCTION_BLOCK 139 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik 140 OB35: ORGANIZATION_BLOCK OB35 BEGIN L PEW 256 ITD DTR L 2.764800e+04 /R T MD 0 // PID-Regler CALL FB uk:=MD0 yk:=MD4 1,DB1 L MD 4 L 2.764800e+04 *R RND T PAW 258 END_ORGANIZATION_BLOCK Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik 57 141 Hochschule Bremerhaven --- IAE Lösung Labor #11: Füllstandsregelung (solide & einfach) Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 58 142 Hochschule Bremerhaven --- IAE Lösung Labor #12: Füllstandsregelung (vollständig) Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 59 143 Hochschule Bremerhaven --- IAE Lösung Labor #13: PI-Regelung einer Tiefpassstrecke mit SPS Ersetzt man s in der Übertragungsfunktion durch Steuerungs- und Feldbustechnik 144 Hochschule Bremerhaven --- IAE Steuerungs- und Feldbustechnik 145 Hochschule Bremerhaven --- IAE K. Müller, HS Bremerhaven 60 Literatur [1] Gießler, W.: SIMATIC S7, SPS-Einsatzprojektireung und -Programmierung. VDE-Verlag, 2003 [2] Habermann, M. und T. Weiß: STEP7---Crashkurs. VDE-Verlag, 2002 [3] Wellenreuther, G. und D. Zastrow: Steuerungstechnik mit SPS. Vieweg, 1998 [4] Schnell, G.: Busssysteme und der Automatisierungstechnik. Vieweg, 1999 [5] Kriesel, W., T. Heimbold und D. Telschow: Bustechnologien für die Automation. Hüthig, 1998 [6] Pritschow, G.: Einführung in die Steuerungstechnik. Hanser, 2006