Das Buch beschreibt sehr praxisorientiert die Techniken der SPS
Transcription
Das Buch beschreibt sehr praxisorientiert die Techniken der SPS
Schiebe- und Füllregister ST-Programmierung nach IEC61131-3 1-2012 Automatisierungslösungen bei Massenfluss- und Zielsteuerungen Anwendung Schiebe- und Füllregister Für die Realisierung von Massenfluss- und Zielsteuerungen kommen vor allem Schiebeund Füllregister zum Einsatz. Die Bewegung einzelner Produkte z.B. auf Förderbändern, Kreisförderern (Anwendung Schieberegister), oder Staubändern (Anwendung Füllregister) lässt sich im Anwenderprogramm nachbilden. Durch die Nutzung offener Standards wie IEC61131-3 und PLCopen ist es möglich, mit Hilfe der unter CoDeSys (Hersteller: 3S-Smart Software Solutions) vom Autor entwickelten zusätzlichen anwendereigenen Funktionsbausteine (FB) in entsprechenden Applikationen einfach zu realisieren. Schieberegister Schieberegister werden vorwiegend zur Serien-Parallel-Umsetzung benutzt. Bei der Serien-Parallel-Umsetzung wird eine in Serie ankommende Information Stelle für Stelle in das Register aufgenommen und liegt nach erfolgter Übernahme parallel zur Weiterverarbeitung vor. Die Parallel-Serien-Umsetzung dient z.B. dazu, eine parallel vorliegende Information Stelle für Stelle einem Übertragungskanal aufzuschalten. Das Schieberegister wird dabei für eine bestimmte Anzahl Positionen projektiert (Registerlänge). An jeder Eingabestation können Informationen in das Schieberegister eingespeist werden. In einem Schieberegister werden an beliebigen Plätzen eingegebene Informationen durch einen Takt weitertransportiert. Die Informationen können an beliebigen Ausgangsplätzen entnommen werden. Die Verschiebung der Registerinhalte wird dabei nur scheinbar ausgeführt. Tatsächlich aber wird nur ein Adresszeiger durch 0/1-Übergang des Schiebetaktes verändert, auf den sich alle Bearbeitungspositionen der beteiligten Bausteine beziehen. Schieberegister können nur synchron aufgebaut werden. Grundsätzlich kommen folgende Arten von Schieberegistern vor: Einrichtungsschieberegister (Bit), vor- oder rückwärts, offen Einrichtungsschieberegister (Wort), vor- oder rückwärts, offen Zweirichtungsschieberegister (Bit), vor-/rückwärts, offen Zweirichtungsschieberegister (Wort), vor-/rückwärts, offen Einrichtungsschieberegister (Bit), vor- oder rückwärts, geschlossen Einrichtungsschieberegister (Wort), vor- oder rückwärts, geschlossen Zweirichtungsschieberegister (Bit), vor-/rückwärts, geschlossen Zweirichtungsschieberegister (Wort), vor-/rückwärts, geschlossen Die nachfolgend aufgeführten Schiebe- und Füllregister-Funktionsbausteine (FB) werden u. a. bei der Massenfluss- und Stückgutverfolgung eingesetzt und wurden im Strukturierten Text (ST) editiert. Schieberegister (Wort), 12 Stufen, ZWSRI, (vor/rück mit serieller Eingabe und paralleler Ausgabe, offen) Der Baustein ZWSRI verwirklicht die Funktion eines Zweirichtungs-Schieberegisters (INT) für 12 Stufen. Der Baustein eignet sich zur Serien-Parallelumsetzung von INT- Informationen. Die zum Zeitpunkt des Schiebetakt- Eingangs CLOCK am Informations-Eingang INF anstehende Date wird in das Register übernommen. Der Richtungseingang V_R be stimmt, ob die eingelesene Information vorwärts (>= Stufe_1) bzw. rückwärts (<=Stufe_12) geschoben wird. 0-Signal am Eingang V_R bedeutet Schieben vorwärts, 1-Signal gibt die Rückwärtsrichtung frei. Liegt am Informations-Eingang INF die Date INT und führt der Richtungs-Eingang V_R 0Signal, so hat nach dem 1. 0-1-Übergang am Schiebetakt- Eingang CLOCK der Ausgang Stufe_1 die Date INT. Die übrigen Stufen (2 bis 12) bleiben unverändert. Durch das 2. Schiebetakt-Signal am Eingang CLOCK führt der Ausgang Stufe_2, Date INT. Mit jedem weiteren Schiebetakt am Eingang CLOCK werden nacheinander die 3., 4. usw. Registerstufe auf den Wert der Date vom Type INT gesetzt, d. h. die eingegebene Information an INF, Datentyp INT, wird mit jedem Schiebetakt vorwärts weiter geschoben. Bei 1-Signal am Richtungseingang V_R werden die eingelesenen Informationen in Verbindung mit dem Schiebetakt-Eingang CLOCK taktsynchron ausgelesen. Es können Werte im Bereich 0 bis 32767 am Informations-Eingang INF in Verbindung mit dem Schiebetakt in das Register übernommen werden. Der Inhalt des Schieberegisters wird durch den RESET- Eingang gelöscht. Bild 1: Parameter-Beschreibung Bild 3: Bausteinrumpf in ST, Teil 1 Bild 2: Bausteinkopf ZWSRI Bild 4: Bausteinrumpf in ST, Teil 2 Bild 5: Anwendung ZWSRI Vor-/Rückwärts-Schieberegister, offline Status Bild 6: Anwendung ZWSRI Vor-/Rückwärts-Schieberegister, online Status Schieberegister (Bit), 16 Stufen, ZSVRG (vor-/rückwärts mit paralleler Eingabe und serieller Ausgabe, geschlossen) Der Baustein ZSVRG verwirklicht die Funktion eines ZweirichtungsSchieberegisters (Bit) für 16 Stufen. Der Baustein eignet sich zur ParallelSerienumsetzung von Bit- Informationen. Ein über die Eingänge IN_0 bis IN_11 voreingestelltes Bitmuster wird Baustein intern nach WORD konvertiert und mit dem Übernahme-Eingang INFC auf die Ausgangsbitspur (Stufe_0 bis Stufe_15) kopiert. Wird nun der Richtungs-Eingang V_R auf 1-Signal gesetzt, so wird über den Schiebetakt- Eingang CLOCK die Ausgangsbitspur um 1 Stufe vorwärts verschoben. 0- Signal am Richtungs-Eingang V_R bewirkt, dass in Verbindung mit dem Schiebetakt-Eingang CLOCK die Ausgangsbitspur um 1 Stufe rückwärts verschoben wird. Mit jedem weiteren Schiebetakt am Eingang CLOCK werden in Abhängigkeit des Richtungs-Eingangs nacheinander die In- halte der Registerstufen taktsynchron vor- bzw. rückwärts rotierend geschoben; d. h. die eingelesenen BitInformationen gehen nicht verloren. Der Inhalt des Schieberegisters wird durch den Eingang RESET drahtbruchsicher gelöscht. Bild 7: Parameter-Beschreibung Bild 8: Bausteinkopf ZSVRG Bild 9: Bausteinrumpf in ST Bild 10: Anwendung 1 Bild 11: Anwendung 2 Im Bild 10 ist das Eingangs-Bitmuster (Eingänge IN_0 bis IN_11) erkennbar. Mit dem Übernahme-Eingang INFC (0-1-Übergang) wird das Eingangsbitmuster auf die Ausgangsbitspur (Stufe_0 bis Stufe_11) kopiert. Im Bild 11 ist das Ausgangsbitmuster rotierend verschoben. Hierzu ist der Richtungs-Eingang V_R auf 1 (vorwärts) bzw. 0-Signal (rückwärts) zu setzen. Mit dem Schiebetakt (0-1-Übergang) am Eingang CLOCK wird in Verbindung mit dem Richtungs-Eingang V_R das Rotieren für jeweils eine Stufe ausgelöst. Füllregister In zwei Sonderbauarten haben Füllregister in der Automatisierungstechnik eine große Bedeutung erfahren. Im Bereich der Warenwirtschaft ist FIFO das übliche Verfahren, da die- von der Warte des Periodenendes gesehen- ältesten (zuerst gelagerten) Bestände auch nach Möglichkeit zuerst verbraucht werden sollten. Ausnahmen bestehen beispielsweise bei der Lagerung von Schüttgütern, die nur wieder von oben abgetragen werden können, also nach dem LIFO-Verfahren betrachtet werden. In einem Füllregister werden eingegebene Informationen so lange lückenlos entsprechend der Reihenfolge ihrer Eingaben gespeichert, bis sie entnommen oder gelöscht werden. Durch eine 0/1-Flanke am Eingang „SET“ werden die Eingabedaten ins Füllregister übernommen. Entsprechend der Reihenfolge der Eingabe können diese Informationen dem Register wieder entnommen oder gelöscht werden (First In-First Out). Grundsätzlich kommen folgende Arten von Füllregistern vor: Füllregister (Bit), First IN - First OUT Füllregister (Wort), First IN - First OUT Füllregister (Bit), Last IN - First OUT Füllregister (Wort), Last IN - First OUT FIFO-Speicher In der Informatik bezeichnet First In - First Out, auch Silo-Speicher genannt, eine spezielle Art Daten abzulegen und wieder abzurufen. Die Warteschlange (engl. Queue) be- ruht auf dem FIFO Prinzip. Elemente werden in genau der Reihenfolge abgerufen, in der sie zuvor abgelegt wurden. Während beim normalen Schieberegister die Daten mit jedem Taktsignal nur eine Stufe in Richtung Ausgang verschoben werden, „sinken“ sie im Silo-Speicher ohne externen Takt auf den letzten noch freien Platz vor dem Ausgang. Dieser „Bubble Through“- Mechanismus ist asynchron zu den Schreib- und Lesesignalen. Eine Steuerlogik markiert, welche Registerplätze schon belegt sind und erzeugt intern so viele Schiebesignale, dass die Daten aufschließen. Die Meldung „FULL“ zeigt an, wenn der Speicher voll ist. Dadurch wird die weitere Dateneingabe gesperrt. Die Meldung „EMPTY“ signalisiert den leeren Silo- Speicher. Der FIFOSpeicher eignet sich als Pufferspeicher bei der Datenübertragung, wenn Sender und Empfänger mit unterschiedlichen Geschwindigkeiten arbeiten. Paletten-Durchlaufregallager z.B. werden als Pufferlager im Versand, im Produktions- bereich sowie im Wareneingang eingesetzt. Die Lagerung erfolgt nach dem FIFO-Prinzip. Lagergut mit Verfallsdatum oder Produktchargen sind leichter zu überwachen. LIFO-Speicher LIFO-Speicher (Last In - First Out), auch Stapel-Speicher, Stack- oder Kellerspeicher genannt, sind seriell organisierte Schreib-Lese-Speicher, die ein Auslesen der Daten nur in der umgekehrten Reihenfolge des Einschreibens erlauben. Beim Einschreiben, dem PUSH-Vorgang, sinken die Daten zum Stapelgrund auf das zuletzt gespeicherte Wort. Beim Lesen, dem POP-Vorgang, werden die Daten vom Stapelgrund zum Datenausgang angehoben. Eine Steuerlogik ähnlich der beim FIFO-Speicher übernimmt die Steuerungsaufgaben. Der Speicher entspricht einem Links-Rechts-Schieberegister. Die Daten werden mit Links-Schiebeimpulsen gespeichert, mit Rechts-Schiebeimpulsen ausgelesen. Paletten-Einschubregallager z. B. sind Platz sparende Pufferlager mit nur einem Bediengang. Bei dieser Lagertechnik wird das Lagergut mit Hilfe eines Beschickungsgerätes gegen die Neigung der Rollenbahn geschoben. Bei der Auslagerung werden die nachfolgenden Paletten durch den Entnahmevorgang des Staplers abgebremst. Paletten-Einschublager arbeiten nach dem LIFO-Prinzip. Füllregister (Bit), Last IN - First OUT, LIFO Funktion Einlesen: Dieser Baustein verwirklicht den Last IN – First OUT buffer für 12 Stufen. Immer wenn das Eingangssignal an CLOCK aktiv ist (0-1-0-Übergang) und der Richtungseingang V_R 0- Signal führt, wird die am Eingang DATA_IN anstehende Bit-Information (0/1) auf die Position 1 des buffers kopiert (sichtbar Stufe_1) und alle bereits im buffer enthaltenen Informationen werden um 1 Position aufwärts „geshiftet“. Befinden sich 12 Informationen, Datentyp BOOL, im buffer, wird die zuerst eingelesene Information an Stufe_12 angezeigt. Funktion Auslesen: Ist das Eingangssignal an CLOCK aktiv (0-1-0-Übergang) und führt der Richtungseingang V_R 1-Signal, wird der Inhalt von Stufe_1 in das Ausgabebit DATA_OUT, Datentyp BOOL, kopiert. Alle weiteren im buffer enthaltenen Informationen (Stufe_2 bis Stufe_12) werden um 1 Position rückwärts „geshiftet“. Die ausgelesenen Stufen werden mit FALSE, Datentyp BOOL, aufgefüllt. Befinden sich 12 Informationen mit Inhalt FALSE, (Datentyp BOOL) im buffer, sind alle eingeschriebenen 12 Informationen wieder ausgelesen. Bild 12: Parameter-Beschreibung Bild 13: Bausteinkopf LIFO Bild 14: Bausteinrumpf in ST Bild 15: Anwendung LIFO: Ist das Eingangssignal %IX1.0 an CLOCK aktiv (0-1-0-Übergang) und führt der Richtungseingsng V_R 1-Signal, wird 0-Signal auf die Position 12 des buffers kopiert (sichtbar Stufe_12) und alle bereits im buffer enthaltenen Informationen werden um 1 Position rückwärts „geshiftet“. Befinden sich 12 Informationen (0-Signale) im buffer, sind alle zu- erst eingelesenen Informationen wieder raus geschoben (sichtbar an Stufe_1). Füllregister (Wort), FIFO, FIFO_SETGET Der Baustein FIFO_SETGET besitzt zwei boolesche Eingänge SET und GET, um einen Wert in das Queue- (Warteschlange) Register zu schreiben bzw. aus dem Queue-Register lesen zu können. Das Queue-Register wird gelöscht, wenn RESET = TRUE. Der Parameter N_MAX definiert die maximale Anzahl von Elementen im QueueRegister. Wenn das Queue-Register voll ist (Anzahl der Elemente im QueueRegister = N_MAX / (Größe von (X)), dann wird FULL auf TRUE gesetzt. Keine weiteren Elemente können in das Queue-Register abgelegt werden. Wenn das Queue-Register leer ist (Anzahl der Elemente im Queue-Register = 0), dann wird EMPTY auf TRUE gesetzt. Die Funktion besitzt einen Eingang X und einen Ausgang Y mit gleichen Datentypen (INT). Bild 16: Parameter-Beschreibung Bild 17: Bausteinkopf FIFO_SETGET Bild 18: Bausteinrumpf in ST, Teil 1 Bild 19: Bausteinrumpf in ST, Teil 2 Fazit Die Wiederverwendbarkeit von Automatisierungs-Software steht in der Liste der Automatisierer ganz oben. Auf Basis des PLCopen Reusability Level ist dieses Ziel der Wiederverwendung von anwendereigenen Funktionen und Funktionsbausteinen auf unterschiedlichen Automatisierungsgeräten einen entscheidenden Schritt näher gekommen. Allerdings sind einige Randbedingungen einzuhalten. So müssen z. B. die Systeme, zwischen denen Funktionen und Funktionsbausteine ausgetauscht werden sollen, selbst nach „PLCopen Reusability Level“ zertifiziert sein. Das Prinzip der Konvertierung eines anwendereigenen Funktionsbausteins vom Hersteller A später auf der SPS eines anderen Herstellers laufen zu lassen, besteht darin, dass zunächst das Programm in ST geschrieben wird. Der Strukturierte Text (ST) innerhalb der Norm IEC61131-3 bietet hier die größtmögliche Menge an Übereinstimmungen zwischen verschiedenen SPS Programmiersystemen. Die grafischen Sprachen FBS (Funktionsbausteinsprache), CFC (Continuous Function Chart), KOP (Kontaktplan) und AS (Ablaufsprache) gestalten sich da sehr viel schwieriger, da die Hersteller oftmals unterschiedliche Zwischensprachen verwenden. Bei Verwendung von ST ist der Austausch der Programme im ASCII-Format wesentlich einfacher. Durch die systemeigenen ASCII- Export/Import Funktionen wird der Austausch bei vielen Herstellern bereits jetzt schon unterstützt. Die hier beschriebenen Schiebe- und Füllregister-Bausteine sind das Ergebnis langjähriger Projektierungserfahrung des Autors. Der Test der Bausteine wurde mit der virtuellen SPS innerhalb CoDeSys erfolgreich durchgeführt. Durch die konsequente Nutzung offener Standards wie IEC61131-3 und PLCopen durch Programmiersysteme wie z.B. CoDeSys (Hersteller: 3S-Smart Software Solutions) oder MULTIPROG (Hersteller: KW-Software) sehen Bausteinrumpf und -kopf in der Sprache ST deshalb auch nahezu identisch aus. Text, Abbildungen und Programme wurden mit größter Sorgfalt erarbeitet. Für eventuelle verbliebene fehlerhafte Angaben und deren Folgen übernimmt der Autor weder eine juristische Verantwortung noch irgendeine Haftung. Die vorliegende Publikation ist urheberrechtlich geschützt. Jochen Petry IBP Ingenieurbüro Petry www.ibp-automation.de Juli 2012