Programmierung nach IEC 61131 16.05.2016 Seite 1 Inhalt Ziele und Inhalte der IEC 61131 Programmiertools Modelle der IEC 61131 Variablen und Datentypen Programmorganisation 16.05.2016 Seite 2 Lernziele IEC 61131 Sie kennen die wesentlichen Ziele und Inhalte und können sie mit eigenen Worten erläutern Sie die Architektur eines Systemes nach IEC 61131 Sie kennen die 3 Programmorganisationseinheiten und die Datenorganisation (Uebungsbeispiele) Sie können ein einfaches Beispiel in zwei grafischen Programmiersprachen einer SPS programmieren 16.05.2016 Seite 3 Die Erstellung und Wartung von Programmen von Anlagensteuerungen sind: wesentliche Kostenfaktoren schwierige Unsicherheitsfaktoren 16.05.2016 Seite 4 Aspekte: 15-30% der Planungskosten zur Programmierung hohe Folgekosten bei Problemen Anlageschäden verzögerte Inbetriebnahme 16.05.2016 Seite 5 Worin unterscheidet sich Steuerungssoftware von 'Bürosoftware'? Echtzeit oft zeitkritisch kompliziertes Prozessinterface Restart- und Resume-fähig viele zeitlich andauernde Aufgaben kaum Fehlertoleranz hohe Verfügbarkeit viele, aber einfache Funktionen 16.05.2016 Seite 6 Variablennamen: was ist wahr? Name Wert 'Türe_zu' wahr falsch 16.05.2016 Zahl logisch Bedeutung 1 wahr die Türe ist zu 0 falsch die Türe is nicht zu (beachte: die ist Türe offen) Seite 7 Bei Alarmen leider oft: Name Wert Zahl logisch 'Not_Aus' falsch 0 wahr wahr 16.05.2016 1 falsch Bedeutung Anlage ist/wird abgestellt kein Not-Aus, d.h. z.B. Normalbetrieb Seite 8 Darstellung von y:= A und (B oder C) in Tabellenform: Wahrheitstabelle 16.05.2016 Seite 9 Beispiel einer Wahrheitstabelle: Funktion: Werte von Werte von Werte von Ausgang y A B C y:=A&(B/C) 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 16.05.2016 Seite 10 Steuerproblem: richtige Aktion zur richtigen Zeit auslösen Zeitdiagramme 16.05.2016 Seite 11 Beispiel: Einschaltverzögerung TON Steuersignal (Bool) IN Q Verzögerungszeit (Zeit) PT ET 16.05.2016 verzögertes Schaltsignal ( Bool) verstrichene Verzögerunszeit ( Zeit) Seite 12 Zeitdiagramm: IN Q ET PT 16.05.2016 Seite 13 Entwicklung der Programmierung von SPS Proprietäre Sprachen und Softwarestrukturen verschiedener Hersteller Starke Verbreitung einzelner Sprachen durch die Dominanz der Hersteller (Siemens) Erste internationale Normierungsbestrebungen (Grafcet, DIN 19239 und 2880) 16.05.2016 Seite 14 Was ist die IEC 1131? weltweit einheitliche Norm für die Automation speziell für SPS-Systeme anerkanntes Werk, da gemeinsam erarbeitet(PLCopen) Wegweiser für zukünftige Entwicklungen Definition systemunabhängiger Sprachen ein Muss für jemanden der Automation 16.05.2016 Seite 15 Entwicklung der IEC 61131 Gründung der PLCopen 1992 als treibende Kraft der Normierung Ziele: 16.05.2016 Anwendung eines internationalen Standards IEC 61131 konforme SPS anbieten und einsetzen Definition von Konformitätskriterien Zusammenfassung der bisherigen Erfahrungen und Entwicklungen in der IEC 61131 Seite 16 Vorteile für Hersteller Gemeinsame Entwicklung von Software (Editoren, Programmiersystem) Wiederverwendbarkeit bestehender Software durch einheitliche Programmierung Normgerecht - bedeutet - marktgerecht Integration von Modulen verschiedener Hersteller 16.05.2016 Seite 17 Vorteile Anwender Einheitliche Programmierung und Planung verschiedener Systeme Minimierte Ausbildungs- und Einarbeitungskosten Einsatz normgerechter Komponenten bedeutet ein erhöhtes und kalkulierbares Mass an Sicherheit der Anlagen 16.05.2016 Seite 18 Wofür IEC 61131 Für verteilte Automatisierungssysteme Steuerung Kommuni- Steuerung Kommuni- kation Betriebssystem Anwendung Prozessgeräte 16.05.2016 kation Logische Einheit Betriebssystem Anwendung Prozessgeräte Seite 19 Was enthält die IEC 61131? Teil 1: Generelle Uebersicht und Definitionen damit Anwender und Hersteller die gleiche Sprache sprechen. Teil 2: Hardware (I/O-Signale, Sicherheitsmerkmale, Umgebung) elektrischen, mechanischen und funktionalen Merkmale Teil 3: Programmiersprachen: Softwaremodell, Syntax und Semantik der Programmiersprachen und deren Darstellung Teil 4: Anwender Informationen: Richtlinien für den Anwender, Hilfe bei der Lösungserabeitung Teil 5: Kommunikationsdienste: Kommunikation innerhalb und zwischen den einzelnen Kommunikationspartnern einer Applikation 16.05.2016 Seite 21 Schwerpunkt Programmierung: Bildung von Programmstrukturen Einführung abgeleiteter Strukturen, d.h. eigene Datentypen und Steuerbibliotheken SPS-Programmierung grafisch oder wie in einer Hochsprache Programmierung von SPS-Systemen! (wo gibt es dies sonst noch ?) 16.05.2016 Seite 22 Modelle der IEC 61131: Softwaremodell - Struktur der Software Kommunikationsmodell - Informationsfluss zwischen verschiedenen Steuerungen Programmiermodell - Datendarstellung und Programmiersprachen Hardwaremodell 16.05.2016 Seite 23 Projektverwaltung Projektname SPS-Parameter (Typ, Speicher) Task Globale Variablen Funktionsbaustein Funktion Programme 16.05.2016 Seite 24 Programmiermodell Variablen und Datentypen Programmorganisationseinheiten Programme Funktionsbausteine Funktionen Programmiersprachen 16.05.2016 Seite 25 Programmorganisationseinheiten (POE) Funktion Funktionsbaustein Programm englische Bezeichnung: POU (Program Organisation Units) 16.05.2016 Seite 26 Elemente einer POE Deklarationsteil Variablen Formalparameter und Rückgabewerte Externe und interne Variablen Anweisungsteil Funktion in einer Programmiersprache realisiert 16.05.2016 Seite 27 Variablen symbolische Namen physikalischer Standort (I/O, Merker) Müssen dort deklariert werden, wo sie benutzt werden. Variablenart 16.05.2016 Bezeichner Datentyp Initialisierung Seite 28 Variablenart var Lokale Variable var_input Eingangsvariabel einer POE var_output Ausgangsvariabel einer POE var_external Externe Varialbe einer POE var_global Global geltende Variable in einer Konfiguration 16.05.2016 Seite 29 Datentypen elementare bool, int, float, time strukturierte enum - Aufzähltypen array - Felder structure - Datenstrukturen 16.05.2016 Seite 30 Geltungsbereich der Variablen lokal: nur in der Programmeinheit global: in ganzer Ressource oder Konfiguration (lokal als extern definieren) gültig in den POE in denen sie deklariert sind und in allen untergeordneten Einheiten (Eine Variable in einem Programm gilt auch in den Funktionsbausteinen die das Programm aufruft) 16.05.2016 Seite 31 Initialisierung Initialisierung übernimmt Wert vor letzten Stop übernimmt anwenderspezifischen Wert übernimmt voreingestellten Wert des Datentyps Warmstart Kaltstart gepufferte Variablen (RETAIN) übernehmen letzten Wert andere die definierten Anfangswerte alle übernehmen Anfangswerte 16.05.2016 Seite 32 Programmiersprachen graphische KOP FBS AS Programmiersprachen (Kontaktplan) (Funktionsbausteinsprache) (Ablaufsprache ) Textsprachen AWL (Anweisungsliste) ST (Strukturierter Text) 16.05.2016 Seite 33 graphische Sprachen vs. Textsprachen einfach, teilweise auch für Laien verständlich Kommunikation über Programm einfacher effizienter bei Inbetriebnahme und Wartung keine Nachdokumentation nötig zwingt zu Programmierdisziplin 16.05.2016 effizienter in der Programmierung kleinere Dokumente in MB einfacher im Umgang mit komplexen Datenstrukturen Seite 34 1. Sprache: FBS Programmierung mit Funktionen in der Funktions-Bausteinen-Sprache: Variablen: Signallinien Funktionen: Rechteck mit Funktionsname und Signalverbindungsstellen Alle Datenverarbeitungselemente werden als Funktionsblöcke dargestellt 16.05.2016 Seite 35 Darstellung in FBS Funktionsblöcke (Funktionen und Funktionsbausteine) Linien Variablen (Eingang) R1 S >=1 OR & AND Q1 Variablen (Ausgang) Q1 Programmierung = Netz von FB verbunden mit Signalen 16.05.2016 Seite 36 Silo 16.05.2016 Seite 37 2. Sprache: KOP Programmierung mit Kontaktplandarstellung und Funktionsbausteinen, Sprache: Variablen: Bezeichnung von Oeffner, Schliesser, Spulen Funktionen: durch 'Stromverdrahtung' und Funktionsbausteinen 16.05.2016 Seite 38 Beispiel KOP - Silo Kontakte Spulen 16.05.2016 Funktionsblöcke Seite 39 Elemente: Var-Name Schalter Bedeutung Schliesser Der Zustand der linken Verbindung wird auf die rechte Verbindung kopiert, wenn der Zustand der zugehörigen Variablen 'WAHR' ist. Andernfalls ist der Zustand der rechten Verbindung 'AUS'. 16.05.2016 Seite 40 Elemente: Var-Name Schalter Oeffner 16.05.2016 Bedeutung Der Zustand der linken Verbindung wird auf die rechte Verbindung kopiert, wenn der Zustand der zugehörigen Variablen 'FALSCH' ist. Andernfalls ist der Zustand der rechten Verbindung 'AUS'. Seite 41 Elemente: Var-Name Schalter Spule 16.05.2016 Bedeutung Der Zustand der linken Verbindung wird auf die zugehörige boolesche Variable und die rechte Verbindung kopiert. Seite 42 Elemente: Var-Name Schalter negative Spule 16.05.2016 Bedeutung Der Zustand der linken Vebindung wird auf die rechte Verbindung kopiert. Die Invertierung des Zustands der linken Verbindung wird auf die zugehörige boolesche Variable kopiert. Seite 43 Elemente: Var-Name S Schalter Bedeutung Setzen Der Zustand der linken Vebindung wird auf die der Spule rechte Verbindung kopiert, wenn er wahr ist. Die boolesche Variable wird wahr gesetzt. 16.05.2016 Seite 44 Elemente: Var-Name R Schalter Rücksetzen der Spule 16.05.2016 Bedeutung Der Zustand der linken Vebindung wird negierend auf die rechte Verbindung kopiert, wenn er wahr ist. Die zugehörige boolesche Variable wird false gesetzt. Seite 45 Funktion eine oder mehrere Eingangsvariablen werden zu genau einem Ausgangswert berechnet. Speichern intern keine Daten Liefert bei gleichen Eingangswerten immer das gleicher Ergebnis 16.05.2016 Seite 46 Standardfunktionen vordefinierte Funktionen SPS wird zu einer vollwertigen Rechnereinheit SPS kann auch Texte bearbeiten SPS kann Datentypen konvertieren die meisten aus Informatik bekannt 16.05.2016 Seite 47 Funktionsbaustein aus einer oder mehreren Eingangsvariablen werden mehrere Ausgangsvariablen berechnet Strukturierungshilfsmittel innerhalb eines Programmes Kann mehrfach genutzt werden Kann intern Daten speichern und muss instanziert werden 16.05.2016 Seite 48 FB definieren Deklaration Anweisungen Ergebnis muss gespeichert werden 16.05.2016 Seite 49 FB RS-Flip-Flop UND-Bausteine können das Resultat direkt aus den Eingängen berechnen bei RS-Bausteinen hängt es aber noch zusätzlich vom Wert von Q1 ab: R1 S >=1 OR & AND Q1 Q1 16.05.2016 Seite 50 Konsequenz: Baustein muss Variable zwischen zwei Ausführungen abspeichern Namen gefordert gelöst durch Instanzennamen = gleich Pointer auf Objekt 16.05.2016 Seite 51 Instanz: Die Instanz ist ein individuelles Exemplar einer Datenstruktur, verknüpft mit einem Funktionsbaustein-Typ oder ProgrammTyp, das von einem Aufruf der zugehörigen Operation bis zum nächsten erhalten bleibt. 16.05.2016 Seite 52 Instanzierung Deklaration Anwendung 16.05.2016 Seite 53 Zeitgeber: Einschaltverzögerung TON Bool IN Q Bool Time PT ET Time IN Q ET PT 16.05.2016 Seite 54 Zeitgeber: Ausschaltverzögerung TOF Bool IN Q Bool Time PT ET Time IN Q ET PT 16.05.2016 Seite 55 Programm logische Anordnung von Funktionen und Funktionsbausteinen mit ihren Verknüpfungen Ausführung eines Programmes kommt durch die Zuordnung in einer Task zum Ausdruck Kann Funktionen und Funktionsbausteine aufrufen 16.05.2016 Seite 56 Ausführung der Programme: Tasks Ein Task fasst innerhalb einer Ressource ein oder mehrere Programme mit gleichem Ausführungs- und Zeitverhalten zusammen. (Wann sollen sie bearbeitet werden) Wann, bei welchem Ereignis Wie oft Wie dringend 16.05.2016 Seite 57 Kommunikationsmodell (wird nur gestreift) Durch Uebergabe der Variablen bei Funktionsaufruf Kommunikation über globale Variablen Kommunikation über SEND und RECEIVEFunktionen Kommunikation über Zugriffspfade 16.05.2016 Seite 59 Uebung: Selbsthaltung • POE einrichten - Programm • Variablen deklarieren • mit Kontaktplan programmieren 16.05.2016 Seite 60 Aufgabe: wie werden die folgenden Funktionen programmiert (sie sind gegenüber der FBSDarstellung verschwunden)? UND ODER 16.05.2016 Seite 61