2.2.1 Aufbau und Arbeitsweise universelle Automatisierungssysteme mit modularem Aufbau CPU mit Steuer- und Rechenwerk, Programmspeicher, Merkern, Zeitgliedern, Zählern und Bussystem
2.1 Speicherprogrammierbare Steuerungen (SPS)
2.1 Speicherprogrammierbare Steuerungen (SPS) wichtigstes Kennzeichen: zyklische Programmabarbeitung
2.1 Speicherprogrammierbare Steuerungen (SPS) Nachteil der zyklischen Arbeitsweise: Reaktionszeit auf Änderungen beträgt im ungünstigsten Fall zwei Programmzyklen
2.1 Speicherprogrammierbare Steuerungen (SPS) unterschiedliche Ausführungsformen für verschiedene Anwendungsbereiche
2.2.2 Programmierung (IEC 61131) Sämtliche Industriezweige, vor allem der Maschinenbau, stehen unter einem enormen Kostendruck und müssen alle Rationalisierungspotentiale ausschöpfen. Bei den Steuerungsprogrammen heißt das, die einzelnen Softwareteile bereits erstellter Programme und Funktionen wiederzuverwenden und in neuen Applikationen zu nutzen. Hauptforderungen an ein modernes SPS-Programmiersystem Hohe Funktionalität 7% Online- Änderungen 13% Leichte Bedienung, hoher Komfort 7% Portabilität der AWL-Programme 33% Aufwärts- Kompatibilität 13% Leichte Änderbarkeit der Applikation 27% Abbildung entnommen aus: Brendel, W.: SPS-Programmierung nach IEC 1131-3 - das Pflichtenheft steht
Die Norm IEC 61131 wurde im Februar 1993 von der Internationalen Elektronischen Kommission (IEC) herausgegeben definiert ein Grundgerüst von Sprachelementen für die Programmierung von Steuerungen verbindet die klassische SPS-Programmierung mit den Vorteilen der Hochsprachen-Programmierung Ziele und Vorteile einheitliche Planung und Programmierung verschiedener Systeme Einsatz normierter Komponenten führt zu erhöhter Anlagensicherheit Integration von Modulen verschiedener Hersteller Kostensenkung ein international gültiges Sprachsystem erhöhte Software-Qualität durch strukturierte Programmierung Entwicklungsmöglichkeit von komplexeren Programmen verkürzte Programmerstellung dank Standardfunktionen und Funktionsbausteinen Portabilität der Software (Austauschbarkeit und Wiederverwendbarkeit)
Konfiguration Überblick (Software-Modell nach IEC 61131-3) Ressource Ressource Task Task Task Task Programm Programm Programm Programm Legende Pfad der Ausführungssteuerung Pfad des Variablenzugriffs FB FB FB FB FB Funktionsbaustein Variable Globale und direkt dargestellte Variable Zugriffspfade Konfigurationen: Kombination und Gruppierung aller Ressourcen eines SPS-Systems (z.b. Prozessoren, E/A-Einheiten, etc.) Ressourcen: vergleichbar mit einzelnen CPUs, Ausführung von einer oder mehreren Tasks Tasks: bestimmen den Zeitplan der ihnen zugewiesenen Programme oder Funktionsblöcke Laufzeitprogramme: Einheiten, die aus Programmen oder FBs bestehen Im Teil 3 der IEC 61131 werden die Syntax und Semantik der vereinheitlichten Programmiersprachen für Speicherprogrammierbare Steuerungen (SPS) festgelegt.
Programm-Organisationseinheiten Die Sprachnorm unterstützt die Strukturierung der Programme innerhalb der Ressourcen nach sog. Programm-Organisationseinheiten (POE). Eine POE besteht je nach Anwendung aus: Programm (Hauptprogramm, Schlüsselwort PROGRAM ): Startpunkt einer Applikation. Funktionsbaustein (Schlüsselwort FUNCTION_BLOCK : werden vom Programm aus aufgerufen, besitzen eigenen Datenspeicher, Realisierung komplexer Steuerfunktionen Funktion (Schlüsselwort FUNCTION ): Baustein mit mehreren Eingängen, aber nur einem Ausgang (z.b. Berechnung eines Wertes). Einzelne Programm-Organisationseinheiten werden über mehrere Stufen hinweg aus den Rümpfen anderer Programm-Organisationseinheiten heraus strukturiert aufgerufen. Programm-Organisationseinheiten dürfen nicht rekursiv sein. D.h. der Aufruf einer Programm- Organisationseinheit darf nicht den Aufruf einer weiteren Programm-Organisationseinheit desselben Typs verursachen. Vorteil: Strukturierung des Anwenderprogrammes sowie der verwendeten Daten entsprechend dem zugrunde liegenden Prozeß. Globale Variablen und lokale Variablen sind ausschließlich eingebunden in einzelne Bausteine und sind außerhalb des Bausteins weder lesbar noch beschreibbar. Bausteine können ohne Änderung in verschiedenen Programmteilen wiederverwendet werden!
Datentypen Elementare Datentypen Definition über Schlüsselwort und die Anzahl der Bits: Schlüsselwort BOOL INT REAL TIME DATE STRING BYTE WORD Datentyp boolesche ganze Zahl (Integer) reelle Zahl Zeitdauer Datum variabel-lange Zeichenfolge Bitfolge der Länge 8 Bit-Folge der Länge 16 Bits 1 16 32 implementierungsabhängig implementierungsabhängig implementierungsabhängig 8 16 Abgeleitete Datentypen in IEC 1131-3 auch abgeleitete Datentypen, wie sie aus höheren Programmiersprachen bekannt sind: Beispiel: TYPE MESSWERTE : ARRAY [1..16] OF ANALOG_DATA END_TYPE
Variablen Die Darstellung von Variablen erfolgt durch die Aneinanderreihung des % -Zeichens, eines Präfix für den Speicherort sowie eines Präfix für die Größe. Präfix I Q M X oder kein Präfix B W D L Bedeutung Speicherort Eingang Speicherort Ausgang Speicherort Merker (Einzel-)Bit-Größe Byte-(8 bit) Größe Wort-(16 bit) Größe Doppelwort-(32 bit) Größe Langwort-(64 bit) Größe Beispiele: %QX75 und Ausgangsbit 75 %Q75 %IW215 Eingangswort Speicherort 215 %QB7 Ausgangsbyte Speicherort 7 %MD48 Merkerdoppelwort Speicherort 48
SPS-Programmiersprachen a) Ablaufsprache (AS) Der erste Schritt zur Lösung einer Aufgabenstellung beginnt üblicherweise mit der Erstellung eines Flussdiagrammes. Die Aufgabe lässt sich so in Teilstücke zerlegen und übersichtlich strukturieren. Hierzu wird die Ablaufsprache (AS) verwendet, die das gesamte Programm in einzelne Teilschritte zerlegt. Außerdem sind Verzweigungen im Programmablauf definierbar. Ein Prozess besteht aus einer Menge von Schritten (stabilen Zuständen) und Transitionen, die durch gerichtete Verbindungen miteinander verbunden sind. Jeder Transition wird eine boolesche Bedingung zugeordnet. Die Aktionen in den Schritten werden in den Sprachen ST, AWL, KOP oder FBS beschrieben. S1 Initialschritt PROJEKT Ablaufsprache (AS) Programm AWL FBS KOP ST Funktionsbausteine Funktionen Transitionsbedingung in ST-Sprache %IX2.1 OR %IX2.2 Elemente der Ablaufsprache: Schritte Transitionen Aktionen %IX2.4 %IX2.3 & S2 S3 Transitionsbedingung in FBS-Sprache N ACTION_4 Aktion in ST-Sprache %QX17 := %IX1 & %MX3 & S8.X ; FF28 (S1 := (C<D)) ; %MX10 := FF28.Q;
SPS-Programmiersprachen b) Kontaktplan (KOP) Die KOP-Sprache (Kontaktplan) ist eine geläufige Methode, logische Gleichungen und einfache Aktionen darzustellen. Die Symbole des KOP-Diagramms werden wie Elemente eines elektrischen Kontaktplans behandelt. Hierzu werden Kontakte als Eingänge und Spulen als Ausgänge mittels Verbindungselementen kombiniert. Links und rechts sind KOP-Diagramme von Versorgungsleisten (Stromschienen) begrenzt. Kontakte: Ein Kontakt übergibt einen Zustand an die horizontale Verbindung auf seiner rechten Seite. Dieser Zustand ergibt sich aus der booleschen UND-Verknüpfung des Zustandes der horizontalen Verbindung auf seiner linken Seite mit einer entsprechenden Funktion einer zugehörigen booleschen Variablen (***) (Eingang, Ausgang oder Merker). Spulen: Eine Spule kopiert den Zustand der Verbindung auf ihrer linken Seite ohne Veränderung auf die Verbindung auf ihrer rechten Seite und speichert eine entsprechende Funktion des Zustandes oder des Übergangs der linken Verbindung in die boolesche Variable. Öffner Schließer Spule negative Spule *** *** *** *** Beispiel: START NOT_AUS ENABLE RUN ENABLE START NOT_AUS >=1 & RUN
SPS-Programmiersprachen c) Strukturierter Text (ST) Die ST-Sprache (Strukturierter Text) ist eine strukturierte Sprache hohen Niveaus, die in Automatisierungsanwendungen benutzt wird. Ihre Syntax ähnelt der Pascal-Sprache. Sie dient vor allem der Implementierung komplexer Prozeduren, deren Beschreibung mit grafischen Sprachen schwer darzustellen ist. Ausdrücke bestehen aus Operatoren (Addition, Subtraktion, Vergleich, Boolesches UND,...) sowie Operanden (Variablen, Funktionsaufrufe, weitere Ausdrücke) Zuweisung Funktionsbaustein-Aufruf RETURN IF A := B; C:=SIN(X); CMD_TMR(IN:=%IX5, PT:=T#300ms); RETURN; IF D>10.0 THEN... ELSE_IF... END_IF; CASE CASE TW OF 1 : DISPLAY:=TEMP; 2 : DISPLAY := LEVEL; END_CASE; FOR WHILE REPEAT EXIT FOR I:=1 TO 100 DO... END_FOR; J:=1; WHILE J<=100 DO J:=J+1; END_WHILE; J:=0; REPEAT J:=J+1; UNTIL J=100; END_REPEAT; EXIT;
SPS-Programmiersprachen d) Anweisungsliste (AWL) Die AWL-Sprache ist eine Textsprache niedrigen Niveaus. Die AWL eignet sich besonders für die Programmierung kleinerer Anwendungen oder um kritische Teile einer Anwendung zu optimieren. Eine AWL setzt sich aus einer Folge von Anweisungen zusammen. Jede Anweisung muss in einer neuen Zeile beginnen und muss einen Operator und einen oder mehrere Operanden enthalten. Der Operator zeigt an, welche Art von Operation zwischen dem aktuellen Ergebnis und dem Operand erfolgen soll. Der Anweisung kann eine identifizierende Marke vorangehen, der ein Doppelpunkt folgt. Operator LD ST AND,& OR ADD Bedeutung Setzt aktuelles Ergebnis dem Operanden gleich Speichert aktuelles Ergebnis auf die Operanden-Adresse S Setzt booleschen Operator auf 1 R Setzt booleschen Operator auf 0 Boolesches UND Boolesches ODER Addition GT Vergleich >= JMP Sprung zur Marke Beispiel: Marke Operator Operand Kommentar START: LD %IX1 (*Drucktaster*) ANDN %MX5 (*Nicht gesperrt*) ST %QX2 (*Lüfter an*)
SPS-Programmiersprachen e) Funktionsbausteinsprache (FBS) Die FBS (Funktionsbaustein-Sprache) ist eine grafische Sprache. Ein FBS-Diagramm beschreibt eine Funktion zwischen Eingangs- und Ausgangsvariablen. Diese Funktion wird wie ein Netzwerk aus elementaren Funktionsbausteinen aufgebaut. Die Ein- und Ausgangsvariablen werden mit den Funktionsbausteinen durch Verknüpfungslinien verbunden. Der Ausgang eines Funktionsbausteins kann an den Eingang eines anderen Funktionsbausteins angeschlossen werden. Es können mehrere bezeichnete Instancen ( Fälle ) eines Funktionsbausteines erzeugt werden. Jeder Funktionsbaustein, der bereits deklariert wurde, kann in der Deklaration eines weiteren Funktionsbausteines oder Programms benutzt werden. Der Name des Funktionsbaustein-Typs steht innerhalb des Blocks und der Name der Instance oberhalb des Blocks. Die Größe und Anordnung des Blocks darf in Abhängigkeit der Eingänge, Ausgänge und weiterer anzuzeigender Informationen variieren. Die Namen der formalen Ein- und Ausgangsparameter müssen links- bzw. rechtsseitig innerhalb des Blocks angezeigt werden. in FBS: in ST: %IX1 %IX2 S1 R FF75 SR Q1 Name der Instance Name des Funktionsbaustein-Typs formale Eingangs- bzw- Ausgangsparameter %QX3 VAR FF75 : SR; END_VAR (* Deklaration *) FF75(S1:=%IX1, R:=%IX2); (* Aufruf *) %QX3:=FF75.Q1; (* Ausgangszuweisung *)
SPS-Programmiersprachen f) Beispiel Die Funktion WIEGEN (WEIGH) beinhaltet die Wandlung einer Eingabe von einer Waage, wobei das Bruttogewicht (gross weight) von BCD in binär gewandelt wird, Funktion WIEGEN: die binäre ganzzahlige Subtraktion des Taragewichtes (tare weight), das vorher gewandelt und im SPS-Speicher abgelegt wurde und die Wandlung des resultierenden Nettogewichtes (net weight) zurück in die BCD- Form, z.b. für eine Ausgabe auf einer Anzeige. Textuelle Deklaration der Funktion FUNCTION WEIGH : WORD VAR_INPUT weight-command : BOOL; gross_weight : WORD; tare_weight : INT; END_VAR ( * F u n k t i o n s r u m p f * ) END_FUNCTION Rumpf der Funktion in AWL LD weight_command JMPC WEIGH_NOW ST ENO RET WEIGH_NOW: LD gross_weight BCD_TO_INT SUB tare_weight INT_TO_BCD Rumpf der Funktion in ST IF weight_command THEN WEIGH := INT_TO_BCD ( BCD_TO_INT (gross_weight) - tare_weight ); END_IF;
SPS-Programmiersprachen f) Beispiel Grafische Deklaration der Funktion Funktion WIEGEN: Funktionsrumpf in FBS BOOL BOOL WORD INT WEIGH EN weigh_command gross_weight tare_weight ENO net_weight weigh_command gross_weight tare_weight BCD_ TO_INT EN ENO SUB EN ENO INT_ TO_BCD EN ENO ENO net_weight Funktionsrumpf in KOP weigh_command BCD_ TO_INT EN ENO SUB EN ENO INT_ TO_BCD EN ENO ENO gross_weight net_weight tare_weight
Verfügbare Tools (Anbieter) Programmiersystem ACCON-ProSys 1131 CoDeSys ConCept ISaGRAF logicad MULTIPROG wt NAISControl 1131 Open DK Selecontrol CAP 1131 SoftControl SUCOsoft S40 DELTALOGIC AEG CJ INTERNATIONAL kirchner SOFT GmbH Klöpper und Wiege Software GmbH Matsushita Automations Controls infoteam Software GmbH Selectron Softing GmbH Anbieter Smart Software Solutions GmbH Klöckner-Moeller das einzige Programmiersystem für SIMATIC-SPS, das sich streng nach der Norm IEC 1131-3 richtet OEM-Software Offline-Simulation am PC in allen fünf Sprachen möglich OEM-Software OEM-Software Bemerkungen Import bereits bestehender SPS- Programme (von Klöckner- Moeller) ist möglich
Verfügbare Tools (Leistungsumfang) Projektierung Projektverwaltung, um Programme zu ordnen und zu strukturieren Verkabeln von Ein- und Ausgängen über Variablendeklaration im Hauptprogramm Programmierung Grafische Editoren (Windows-Oberfläche) für alle oder ausgewählte IEC-Fachsprachen - Einfügen, Verschieben, Kopieren ganzer Netzwerke - Umschalten zwischen verschiedenen Ansichten - Syntax- und Plausibilitäts-Prüfung bei der Eingabe Variablen-Editor zur Festlegung der lokalen und globalen Variablen Task-Editor für die Unterstützung einer Multitasking-Umgebung Inbetriebnahme Übersetzer zur Code-Erzeugung für eine SPS Test-, Simulations- und Inbetriebnahme-Funktionen (Offline-Simulation (auch im Schrittbetrieb), Online-Betrieb zum Verfolgen des Programmablaufes, Anzeige ausgewählter Variablen, ) Dokumentations-Werkzeuge (Dokumentation des Anwenderprogrammes, der Querverweise, der Programmorganisation, der Datentypen, der Tasks sowie der SPS-Konfiguration) Features Herstellerspezifische Zusatzbausteine für komplexe Regelungstechnik, für Fuzzy-Logik, Import alter, nicht IEC-konformer Programme