Automatisierungstechnik Mess-, Steuerungs- und Regelungstechnik 11 Strukturierte Programmierung in Strukturierter Text [Variante: ST Strukturierter Text SCL] V13 SP1 26.02.2016 Fachhochschule Südwestfalen Labor für Automatisierungstechnik Raum K206 Bearbeitungszeit: 45 min Nur für den internen Gebrauch der Studierenden der Fachhochschule Südwestfalen Seite 11-0
I. Lehrziele 11 Strukturierte Programmierung in Strukturierter Text Analyse der Zustandsübergänge im Zustandsgraphen Umsetzung der Zustände und Übergänge in Strukturierter Text SCL II. Grundlagen Strukturierter Text Der strukturierte Text (ST Structured Text; in Siemens S7 auch SCL Structured Control Language) ist eine textuelle Programmiersprache für Speicherprogrammierbare Steuerungen. Die Norm EN 61131-3 legt neben anderen auch den Sprachumfang von ST fest. Dabei ist die Syntax der Sprachelemente ähnlich denen der Hochsprache Pascal und es wird wie bei allen Sprachen der EN 61131-3 bei Schlüsselwörtern keine Unterscheidung zwischen Großund Kleinschreibung gemacht (Case Insensitive). SCL SCL enthält neben Hochsprachenelementen wie Ausdrücke, Wertzuweisungen und Operatoren auch typische Elemente der SPS wie Eingänge, Ausgänge, Zeiten, Bausteinaufrufe usw. als Sprachelemente. Das SCL-Programm besteht aus einer Folge von Anweisungen, die mit einem Semikolon abschließen. Schleifen, wie FOR bis REPEAT sowie Auswahlanweisungen, wie IF und CASE, sind in dieser Sprache möglich. Beispiele: Gegenüberstellung von Anweisungen in FUP und SCL: Seite 11-1
Anweisungen in SCL 11 Strukturierte Programmierung in Strukturierter Text IF: Bedingt ausführen Mit der Anweisung "Bedingt ausführen" verzweigen Sie den Programmfluss abhängig von einer Bedingung. Die Bedingung ist ein Ausdruck mit einem booleschen Wert (TRUE oder FALSE). Als Bedingung können logische Ausdrücke oder Vergleichsausdrücke angegeben werden. Bei der Ausführung der Anweisung werden die angegebenen Ausdrücke ausgewertet. Wenn der Wert eines Ausdrucks TRUE ist, so gilt die Bedingung als erfüllt, bei FALSE gilt die Bedingung als nicht erfüllt. Je nach Verzweigungsart können Sie die folgenden Formen der Anweisung programmieren: IF <Bedingung> THEN <Anweisungen> END_IF; Wenn die Bedingung erfüllt ist, werden die Anweisungen ausgeführt, die nach THEN programmiert sind. Wenn die Bedingung nicht erfüllt ist, wird die Programmbearbeitung mit der nächsten Anweisung nach END_IF fortgesetzt. IF <Bedingung> THEN <Anweisungen1> ELSE <Anweisungen0> END_IF; Wenn die Bedingung erfüllt ist, werden die Anweisungen ausgeführt, die nach THEN programmiert sind. Wenn die Bedingung nicht erfüllt ist, werden die Anweisungen ausgeführt, die nach ELSE programmiert sind. Danach wird die Programmbearbeitung mit der nächsten Anweisung nach END_IF fortgesetzt. IF <Bedingung1> THEN <Anweisungen1> ELSIF <Bedingung2> THEN <Anweisung2> ELSE <Anweisungen0> END_IF; Wenn die erste Bedingung (<Bedingung1>) erfüllt ist, werden die Anweisungen (<Anweisungen1>) nach THEN ausgeführt. Nach der Bearbeitung der Anweisungen wird die Programmbearbeitung nach END_IF fortgesetzt. Wenn die erste Bedingung nicht erfüllt ist, wird die zweite Bedingung (<Bedingung2>) geprüft. Wenn die zweite Bedingung (<Bedingung2>) erfüllt ist, werden die Anweisungen <Anweisungen2> nach THEN ausgeführt. Nach der Bearbeitung der Anweisungen wird die Programmbearbeitung nach END_IF fortgesetzt. Wenn keine der Bedingungen erfüllt ist, werden die Anweisungen (<Anweisungen0>) nach ELSE ausgeführt und danach wird die Programmbearbeitung nach END_IF fortgesetzt. Sie können beliebig viele Kombinationen von ELSIF und THEN innerhalb der IF-Anweisung schachteln. Die Programmierung eines ELSE-Zweigs ist optional. CASE: Mehrfach verzweigen Mit der Anweisung "Mehrfach verzweigen" bearbeiten Sie abhängig vom Wert eines numerischen Ausdrucks eine von mehreren Anweisungsfolgen. Der Wert des Ausdrucks muss eine Ganzzahl sein. Bei der Ausführung der Anweisung wird der Wert des Ausdrucks mit den Werten mehrerer Konstanten verglichen. Wenn der Wert des Ausdrucks mit dem Wert einer Konstante übereinstimmt, werden die Anweisungen ausgeführt, die direkt nach dieser Konstante programmiert sind. CASE <Ausdruck> OF <Konstante1>: <Anweisungen1> <Konstante2>: <Anweisungen2> <KonstanteX>: <AnweisungenX>; // X >= 3 ELSE <Anweisungen0> END_CASE; Wenn der Wert des Ausdrucks mit dem Wert der ersten Konstante (<Konstante1>) übereinstimmt, werden die Anweisungen (<Anweisungen1>) ausgeführt, die direkt nach der ersten Konstante programmiert sind. Danach wird die Programmbearbeitung nach END_CASE fortgesetzt. Wenn der Wert des Ausdrucks mit dem Wert der ersten Konstante (<Konstante1>) nicht übereinstimmt, wird dieser mit dem Wert der Konstante verglichen, die als nächste programmiert ist. Auf diese Weise wird die CASE-Anweisung ausgeführt, bis eine Übereinstimmung der Werte vorliegt. Wenn der Wert des Ausdrucks keinem der programmierten Konstantenwerte entspricht, werden die Anweisungen (<Anweisungen0>) ausgeführt, die nach ELSE programmiert sind. ELSE ist ein optionaler Teil der Syntax und kann entfallen. Die CASE-Anweisung kann auch geschachtelt werden, indem ein Anweisungsblock durch CASE ersetzt wird. END_CASE bildet den Abschluss der CASE-Anweisung. Seite 11-2
III. Versuchsablauf Dieser Versuch baut auf eine erfolgte Gerätekonfiguration und Parametrierung der Hardware für die SPS- Station und die PLC-Variablentabelle für das Simulationsmodell Gepäckbandanlage auf. Für den späteren Betrieb des Simulationsmodells wird eine Vorlagendatei zur Verfügung gestellt, in der die erforderlichen PLC- und HMI-Variablen definiert sind um eine Steuerung über die Kopplung mit PLCSIM zu ermöglichen. In dem Versuch werden die Zustände und Übergänge in eine strukturierte Programmierung mit ST Strukturierter Text SCL umgesetzt. Die Funktionalität wird dabei in einem FB Funktionsbaustein programmiert, der dann in einem OB Organisationsbaustein als Instanz aufgerufen wird. Der Programmtest erfolgt durch eine Simulation der CPU mit PLCSIM und eines HMI mit WinCC RT Simulator. Optional ist auch ein Funktionstest mit dem entsprechenden Wildlife-Simulationsmodell möglich Versuchsablauf zu Strukturierte Programmierung in SCL Variante 5 1. Projektierung Projektvorlage mit Gerätekonfiguration öffnen und speichern Planung der Zustände und Übergänge 2. Programmierung Umsetzung der Zustände und Zustandsübergänge in eine Programmierung der Funktionsbausteine in SCL Erstellung Organisationsbaustein OB1 3. Funktionstest Laden des Steuerungsprogramms nach PLCSIM Funktionstest mit Simulation HMI Optionaler Funktionstest mit Wildlife-Simulationsmodell Versuchsende Seite 11-3
Simulationsmodell Gepäckbandanlage Funktionsbeschreibung Die Gepäckbandanlage zur Gepäckausgabe an einem Flughafen besteht aus zwei Förderbändern, die durch die Motoren NS1 und NS2 angetrieben werden. Am Rollfeld werden die Gepäckstücke manuell auf das Förderband NS1 gelegt und die Anlage durch Aktivierung des EIN-Schalters eingeschaltet. Daraufhin läuft das Förderband NS1 sofort los, das Förderband NS2 (Rondell) jedoch erst 30s später, wenn die ersten Koffer in der Ankunftshalle angelangt sind. Wenn beide Bänder laufen und der Sensor Lichtschranke GS einen Koffer detektiert, muss das Förderband NS1 anhalten, um eine Kollision zu vermeiden. Wird im Anschluss 10s lang kein Koffer mehr als Hindernis erkannt, läuft das Förderband NS1 wieder an. Wenn der letzte Koffer auf das Band gelegt wurde und die Anlage ausgeschaltet wird, muss das Förderband NS1 noch 30 s nachlaufen, damit der letzte Koffer die Ankunftshalle erreicht. Das Förderband NS2 läuft noch so lange, bis der letzte Koffer vom Förderband 2 genommen wurde. Dies ist der Fall, wenn die Lichtschranke GS 120s lang keinen Koffer mehr auf dem Förderband detektiert. Seite 11-4
1. Projektierung 1.1 Öffnen Sie über den Desktop- Link zum Ordner TIA das Projekt: C:\TIA\Konfiguration\ Vorlage_ Gepäckband_Multivariant\ als Bestehendes Projekt mit dem TIA Portal. Im TIA in die Projektansicht wechseln und unter Projekt Speichern unter mit einem Neuen Dateinamen im Pfad C:\TIA\Student speichern! Die Vorlagendatei enthält bereits die Gerätekonfiguration für die PLC und ein HMI, das zum späteren Testen des Programms ohne ein zusätzliches Simulationsmodell genutzt werden kann. Alternativ kann auch ein Wildlife-Simulationsmodell gesteuert werden. In den PLC- und HMI- Variablentabellen sind hierzu alle erforderlichen Symbole definiert. In der Projektstruktur befinden sich auch schon die Programmbausteine, die im Laufe des Versuchs entsprechend editiert werden müssen Seite 11-5
1.2 Planung Die Planung beschränkt sich auf den Zustandsgraph. Die Übergänge zwischen den Zuständen sollen dann nachfolgend direkt als Verknüpfungen in SCL realisiert werden. Zustände: Z0: Aus (N1=0, N2=0) Z1: Anlaufphase (N1=1, N2=0) Z2: Normalbetrieb (N1=1, N2=1) Z3: 10sStopp NS1 (N1=0, N2=1) Z4: Auslaufphase1 (N1=1, N2=1) Z5: Auslaufphase2 (N1=0, N2=1) 2. Programmierung 2.1 Funktionsbaustein Gepäckbandsteuerung_Variante5_SCL Erstellen Sie unter einen neuen FB Funktionsbaustein mit dem Namen Gepäckbandsteuerung_Variante5_SCL mit SCL Definieren Sie dann in der Bausteinschnittstelle nebenstehende Variablen mit Name und Datentyp: Für die Konstanten unter Constant dabei die Defaultwerte eintragen. Seite 11-6
Die Aktionen für die Zustände und die Transitionen für die Übergänge werden jetzt im SCL-Editor in dem FB Gepäcksteuerung_Varinte5_SCL programmiert: Als erstes werden Standardwerte für die temporären Variablen festgelegt. Als nächstes werden für die Übergangssignale (Transitionen) in den jeweiligen Zuständen die neuen Zustände zugewiesen. 11 Strukturierte Programmierung in Strukturierter Text Bei der Texteingabe im Editor werden entsprechende Vorschläge angeboten, die bequem ausgewählt werden können: Ebenso können die Variablen direkt aus der Bausteinschnittstelle in die Zeile des Editors gezogen werden. Am Ende der Anweisungen das Semikolon ; nicht vergessen! Seite 11-7
Jetzt werden die Aktionen für die einzelnen Zustände programmiert: Falls Ihnen auf der Tastatur ein Zeichen fehlt, öffen Sie unter Alle Programme und kopieren es sich aus der Tabelle. Copy and Paste erleichtert die Tipparbeit Jetzt werden noch die 3 Timer programmiert: Und den neuen Zustand als bisherigen Zustand zuweisen: Seite 11-8
2.2 Organisationsbaustein OB1 programmieren In der Projektnavigation unter Programmbausteine den Main [OB1] aufrufen. Ziehen Sie den Funktionsbaustein 11 Strukturierte Programmierung in Strukturierter Text in ein neues Netzwerk des OB1 und bestätigen bei Aufrufoptionen den Datenbaustein. Die im OB1 bereits vorhandenen Netzwerke nicht löschen! Verschalten Sie die Schnittstellen wie abgebildet: Markieren Sie in der Projektnavigation die PLC_1 [CPU 314C ] und wählen dann mit Rechtsklick Übersetzen Software (Bausteine komplett übersetzen) Falls beim Übersetzen Fehler angezeigt werden, korrigieren sie die... 3. Funktionstest Markieren Sie in der Projektnavigation PLC_1 [CPU 314C ] und wählen dann in der oberen Menüleiste Online Simulation Starten oder Symbol aus. Es öffnet sich S7-PLCSIM und das Fenster Erweitertes Laden. [Warten Sie bis die Fenster für das Laden erscheinen ] Für Erweitertes Laden [Fenster erscheint nur, wenn die Schnittstelle noch nicht konfiguriert wurde] die Einstellungen vornehmen: Suche starten mit Teilnehmer Adresse 2 wählen Seite 11-9
Danach Laden 11 Strukturierte Programmierung in Strukturierter Text und Vorschau Laden um das Programm in die mit PLCSIM simulierte CPU zu laden. In PLCSIM: PLCSIM (PROFIBUS) auswählen Die CPU auf RUN und abwarten ob alle LED der CPU auf Grün gehen. Über Menüpunkt Einfügen sämtliche Eingänge und Ausgänge einfügen, die in dem zu testenden Programm verwendet werden und deren Byteadressen eingeben: Einfügen Eingang Einfügen Ausgang Für die Kommunikationsverbindung zu einem simulierten Modell oder der HMI- Visualisierung muss PLCSIM im Hintergrund laufen, daher nicht beenden. Markieren Sie in der Projektnavigation HMI_1 [KTP1200 Basic DP] und wählen dann in der oberen Menüleiste Online Simulation Starten oder Symbol aus. Um des HMI in einem Fenster zu starten Das Startbild zeigt dann grafisch den Zustandsgraph mit den Zuständen und die Anlage an. Wählen Sie dazu die Variante 5 SCL in der Auswahlbox. Über die Schaltfläche AUS/EIN wird der Anlagenzustand gewechselt und angezeigt: Mit Betätigung der Schaltfläche GS kann ein Gepäckstück vor der Lichtschranke an Förderband 2 simuliert werden: Seite 11-10
Testen Sie jetzt die Funktionalität Ihres Steuerungsprogramms. Der aktuelle Zustand der Anlage wird dabei im Zustandsgraph angezeigt. Die Balken visualisieren die aktuellen Zeitwerte der Timer. [Hinweis zur Fehlersuche: Überprüfen Sie den Programmcode im FB] Mit werden die zeitlichen Kurvenverläufe der Signale an der Anlage dargestellt. Über die Schaltflächen AUS/EIN und GS auf Seite Zustandsgraph kann der Zustand der Anlage geändert werden. Zum Versuchsende sind die nebenstehenden Punkte in der Reihenfolge durchführen: WinCC RT Simulator beenden (Fenster schließen) In S7-PLCSIM die CPU auf STOP S7-PLCSIM Simulation Beenden (Fenster schließen) Nein - Nicht speichern! Im TIA-Portal Projekt Beenden (Fenster schließen) Seite 11-11
Vorbereitungsbogen Beantworten Sie als Vorbereitung zu diesem Praktikumsversuch die folgenden Verständnisfragen: Wird an einer Anlage für den Transport von Paletten über den Schalter S1_Freigabe freigegeben, so läuft das Förderband Q1_Band nur, wenn sich eine Palette auf dem Band befindet. Der Sensor B1_hinten erkennt, ob eine Palette vorhanden ist. Am Ende des Bandes wird über den Sensor B2_vorne das Band abgeschaltet. Realisieren Sie die Steuerung für das Band in SCL. Seite 11-12
Notizen: 11 Strukturierte Programmierung in Strukturierter Text Seite 11-13