RFID Integration

Website: xplore-dna.net > Die DNA des digitalen Lernens!
Kurs: I4.0-Anlage - RFID
Buch: RFID Integration
Gedruckt von: Gast
Datum: Mittwoch, 15. Mai 2024, 01:01

Beschreibung

Integration von RFID Readern in die Industrie 4.0 Anlage

  • Voraussetzungen
  • Hardwarekonfiguration
  • Gerätekonfiguration
  • SPS-Programmierung
  • Anwendungsbeispiel

1. Vorraussetzung für die Integration

Für die Integration von RFID sind folgende Voraussetzungen gegeben:

Hardware:

  • CPU (im Beispiel Simatic ET 200SP)
  • IO-Link Master CM 4x IO-Link
  • 2 RFID-Reader (im Beispiel Simatic RF 210R (6GT2821-1BC32))
  • eine passende Readerleitung
  • mit dem Reader kompatible RFID-Transponder (auf Frequenz etc. achten)

Software:

  • TIA Portal V15 SP1
  • Step 7 Professional
  • S7-PCT (Siemens Support Zugang benötigt) zur Downloadseite
  • IOL Bibliothek S7 1200-1500 (Siemens Support Zugang benötigt) zur Downloadseite
Die Integration wird hier beispielhaft für den RF210R IO-Link Sensor erklärt. Im Beispiel wird ein CM 4xIO-Link IO-Link Master von Siemens benutzt. Außerdem wird die Bibliothek "IOL-Library_S7_1200_1500" verwendet.






2. Schritt 1: Anschluss des IO-Link Masters und der Reader

  • Zunächst muss der IO-Link Master in die ET200SP in der PROFINET Baugruppe eingebaut werden, falls noch nicht geschehen.
  • In diesem Kurs wird der schreibende RFID Sensor auf Port bzw. Klemme 4 und der lesende RFID Sensor auf Port bzw. Klemme 2 angeschlossen.
  • Die beiden RFID Sensoren müssen wie folgt angeschlossen werden:

    Anschlussbelegung
    Abbildung aus dem Gerätehandbuch "Kommunikationsmodul IO-Link Master CM 4xIO-Link"


    Leiterkennzeichnungen, weiß wird gekappt

3. Schritt 2: Hardwarekonfiguration

Bevor mit dem Bearbeiten des Programms begonnen werden soll, sollte die vorhandene Datei unter einem neuen Namen und / oder Pfad gespeichert werden. Dadurch wird verhindert, dass das bisherige Programm überschrieben wird. Soll das Programm überschrieben werden, reicht es, nach Veränderungen auf "Projekt speichern" zu klicken.

  • Das Modul "CM 4xIO-Link" mit der richtigen Firmware (2.1) in die Hardware Konfiguration übernehmen. Das Modul ist rechts im "Hardwarekatalog" unter "Kommunikationsmodule" ->"IO-Link Master" -> "CM 4xIO-Link" zu finden. Zum Integrieren des Moduls in die Hardwarekonfiguration das Modul einfach auf den richtigen Steckplatz (3) ziehen.              
    Die Firmware muss nach dem Einfügen u.U. in den "Eigenschaften" -> "Allgemein" -> "Kataloginformation" geändert werden.
  • Die Potenzialgruppe des Moduls muss gegebenenfalls unter "Eigenschaften" -> "Allgemein" -> "Potenzialgruppe" angepasst werden. Die Potenzialgruppe ist anhand des hell oder dunkel gefärbten Anschlussfeldes an dem IO-Link Master erkennbar.
  • In der Geräteübersicht können nun gegebenenfalls die E/A-Adressen geändert werden. Hier ist es wichtig darauf zu achten, welche Reader verwendet werden (ob Art. Nr. 6GT2821-1AC32 oder 6GT2821-1BC32). Da die "BC"-Reader gegenüber den "AC"-Readern eine Adressbreite von 32 Byte statt 8 Byte haben, muss die Adressbreite des Moduls CM 4xIO-Link auf 144/128 erweitert werden. Anschließend müssen die Änderungen noch mit Rechtsklick auf das Modul übersetzt und in das Gerät geladen werden.

  • Anschließend muss die Online-Verbindung getrennt werden und die Konfiguration unter Rechtsklick, "Laden in Gerät" -> "Hardwarekonfiguration" bestätigt werden.


  • Nun wird die Online-Verbindung erneut Hergestellt. Mit Rechtsklick auf den IO-Link Master in der Hardwarekonfiguration -> "Device Tool starten" -> "Start" wird das "Device Tool" (S7-PCT) in einem seperaten Fenster geöffnet. Falls "Device Tool Starten" grau hinterlegt ist, muss S7-PCT zunächst installiert werden.
  • Als nächstes wird in S7-PCT der RFID-Sensor "SIMATIC RF210R IO-Link" im Katalog ausgewählt und auf die entsprechenden benutzten Ports gezogen. Auch hier muss wieder zwischen den beiden Readern unterschieden werden. Die "AC"-Reader befinden sich unter dem Hauptordner "IO Link 1.0", während sich die "BC"-Reader unter dem Hauptordner "IO Link 1.1" befinden. Falls die "BC"-Reader nicht im Katalog zu finden sind, so müssen diese noch importiert werden. Dies geht unter "Extras" -> "IODD importieren...". Vorher muss die entsprechende IODD-Datei von der Siemens Internetseite heruntergeladen werden.

  • Die Anschlüsse auf Port 1 und 3 sind für den Betrieb der RFIDs irrelevant, aber für die weitere Verarbeitung des Programms der Anlage teils notwendig. Deswegen können sie an dieser Stelle bereits im SIMATIC S7-PCT integriert werden. Der Ultraschall Distanzsensor befindet sich an Port 3, er befindet sich im Ordner "PEPPERL+FUCHS GmbH" im Programm, auch diese IODD-Datei muss vorher integriert werden. Der Druckmesssensor wird an Port 1 angeschlossen, auch seine Datei muss zuvor importiert werden. Danach befindet sich das Gerät im Ordner "Festo AG & Co. KG".

  • Für eine korrekte Funktionsweise der RFIDs ist es wichtig, darauf zu achten, dass die unter dem Reiter "Adressen" zu findenden Portinformationen für "Eingang Anfang" und "Ausgang Anfang" bei den jeweiligen Readern gleich sind. Wenn dies nicht der Fall sein sollte, so ist die Adresse im Feld "Ausgang Anfang" auf die von "Eingang Anfang" zu ändern.



  • Als nächstes muss die Betriebsart zu "Erfassung Anwenderdaten" geändert werden. Dazu klappt man den "Steckplatz RF210R IO-Link" auf und wählt den Reader aus. Im Reiter "Parameter" kann die Betriebsart zu "Erfassung Anwenderdaten" geändert werden. Dies muss jeweils für beide Reader gemacht werden.

  • Zuletzt müssen noch die Parameter in den IO-Link Master und in die RFID-Reader geladen werden. Dazu klickt man auf den Steckplatz des IO-Link Masters, zum Beispiel "[Steckplatz 3] CM 4xIO-Link_1" und betätigt den Knopf "Laden mit Geräten" in der oberen Leiste mit den Buttons.
  • Danach kann S7-PCT geschlossen werden (Datei -> Beenden). Die nun aufkommende Frage, ob wir die Änderungen speichern möchten, bestätigen wir mit "ja".

4. Schritt 3: SPS-Programm

Nachdem die Hardware eingebaut wurde und die Reader konfiguriert wurden, kann man mit der Programmierung der SPS fortfahren. In diesem Kapitel wird grundlegend erklärt, welche Bausteine verwendet werden müssen, welche Funktion diese haben und darüber hinaus welche Daten auf den Tag geschrieben werden können. Des Weiteren wird auf einige häufig auftretenden Fehler hingewiesen.


4.1. Schritt 3.1: Laden der Bibliothek

  • Bibliothek integrieren
    • Zip-Datei entpacken                                                                                                                                         
    • Reiter „Bibliotheken“ im TIA-Portal öffnen
    • Reiter "Globale Bibliotheken" öffnen
    • „Globale Bibliothek öffnen“ anklicken

    Laden der Bibliothek

4.2. Schritt 3.2: Read & Write Bausteine

  • Zunächst müssen Funktionsbausteine für das Lesen (Read) und Schreiben (Write) des Transponders erstellt werden. Dazu auf "Neuen Baustein hinzufügen" klicken, "Funktionsbaustein" und die Sprache "FUP" wählen.
  • Unter „Globale Bibliotheken“ ist nun die Bibliothek zu finden. Den entsprechenden Reiter ausklappen und unter „Kopiervorlagen“, „IOL_Read“ und „IOL-Write“ per drag and drop in die entsprechenden Programmbausteine einfügen (falls die Funktionsbausteine in der Bibliothek anders benannt sind, sollte man dies vernachlässigen). 
    • Hierbei muss auf die hinteren Buchstaben der Seriennummer des RFID-Readers geachtet werden. Bei AC muss man die Bausteine aus V1.0 verwenden, andernfalls (BC) muss V1.1 verwendet werden.

    4.3. Schritt 3.3: Datentypen anlegen

    • Als nächstes wird der Datentyp "Anwenderdatentyp_Nutzdaten" erstellt  (PLC-Datentypen -> Neuen Datentyp hinzufügen) und mit frei wählbaren Variablen (z.B. Anzahl der abgefüllten MuMs) belegt.


    • Ebenso wird der Datentyp "Anwenderdatentyp_Rohdaten" erstellt und mit einem Array of Bytes belegt. Die Anzahl der Bytes im Array muss der gesamten Größe der zu übertragenden Nutzdaten entsprechen und darf die zulässige Anzahl der Bytes, die auf den Transponder geschrieben werden kann, nicht überschreiten!

    Anwendungsdaten



    4.4. Schritt 3.4: Datenbaustein für Read/Write

    • Der Datenbaustein "Data_block_Ident_Read_optimiert" wird angelegt (Programmbausteine -> Neuen Baustein hinzufügen).
    • Anschließend kann der Datenbaustein mit den Rohdaten und den Nutzdaten gefüllt werden.



    • Im nächsten Schritt wird der Datenbaustein "Data_block_Ident_Write_optimiert" angelegt mit den gleichen Variablen und Datentypen angelegt. 

    4.5. Schritt 3.5: Programmbaustein für Read/Write

    Anschließend wird der Funktionsbaustein "Read_Write_RFID" angelegt (Programmbausteine -> Neuen Baustein hinzufügen). Als Sprache wird hier "FUP" ausgewählt.

    Zunächst werden wie im Bild unten Variablen definiert (Datentypen und Defaultwerte beachten). Diese werden als Aus- und Eingangsbelegung der folgenden Funktionsbausteine benötigt.

    Read_Write_Variablen


    5. Schritt 4: Einfügen der Netzwerke

    Im Funktionsbaustein Read_Write_RFID werden 5 Netzwerke angelegt, die folgende Überschriften besitzen:


    • Hinweis: Wenn eine Variable nicht auffindbar erscheint, dann empfiehlt es sich, zuerst in Netzwerk 1 und 5 die Anweisungen einzufügen.


    5.1. Schritt 4.1: Netzwerk 1

    In Netzwerk 1 des Bausteins Read_Write_RFID wird dann der Funktionsbaustein „IOL_Read“ per Drag and Drop eingefügt. Ebenso wird der Baustein „IOL_Write“ auf dieselbe Weise in Netzwerk 5 eingefügt. Die Ein- und Ausgänge der beiden Bausteine werden in den folgenden Tabellen näher erläutert. Bei den verschiedenen Zuständen am rechten Rand des Bausteins müssen noch wie abgebildet die entsprechenden Variablen ausgewählt werden.

    Funktionsbaustein „IOL_Read“

    EXECUTE

    Wenn dieser Eingang true ist, wird der Schreib-/Lesevorgang gestartet. Die Beschaltung der EXECUTE Eingänge können frei in Abhägigkeit von der Aufgabenstellung gewählt werden.

    ADR_TAG

    Damit wird festgelegt, bei welcher Adresse auf dem Transponder angefangen werden soll, die Daten zu speichern bzw. die Daten zu lesen. Da wir einen festen Anwenderdatentyp definiert haben, sollten die Angaben bei diesem Eingang beim Read und Write Block dieselben sein.                                                                                                                                                                                                                              

    LEN_DATA

    An diesem Eingang wird angegeben, wie viele Byte auf den Transponder geschrieben werden. Die Anzahl sollte so groß sein, wie die Anzahl der Bytes im Array Rohdaten.

    HW_ID

    Die „Hardware-ID“ ist eine Kennung des IO-Link Master. Diese kann man wie folgt herausfinden:

    -> Gerätekonfiguration -> doppelt Linksklick auf den IO-Link Master 

    Im unteren Bereich öffnet sich die Info über das Gerät. Unter „CM 4xIO-Link“ findet man in dem Reiter Systemkonstanten in der Spalte HW-Kennung die HW-Kennung, die man am Eingang des „HW_ID“ einträgt.

    PORT_ADR

    Bei „PORT_ADR“ wird die Ausgangsadresse des jeweiligen Readers eingetragen. Diese kann ebenfalls in der Gerätekonfiguration eingesehen werden. Dazu startet man das S7 PCT für das IO-Link Modul. Dann wählt man den gewünschten Steckplatz aus und geht in den Reiter Adressen. Ist der Reader am ersten Port des IO-Link Moduls angeschlossen, trägt man die Anfangsadresse der A-Adresse in Zeile Port 1 ein. Ist der Writer am zweitien Port des IO-Link Moduls angeschlossen, trägt man trägt man die Anfangsadresse der A-Adresse in Zeile Port 2 ein.

    IDENT_DATA

    Bei „IDENT_DATA“ wird angegeben, welche Daten geschrieben bzw. wo die gelesenen Daten abgespeichert werden sollen. Beim Lesen wird das Array im Datenbaustein zum Lesen unter Rohdaten genutzt. Für das Schreiben wird das gleiche Array aus dem Datenbaustein zum Schreiben genutzt. ("Name des Datenbausteines"."Rohdaten"."Name des Arrays"."kein Eintrag")


    5.2. Schritt 4.2: Netzwerk 2

    In das Netzwerk 2 wird der Baustein Deserialize ("Anweisungen" -> "einfache Anweisungen" (evtl. muss die Version geändert werden, um auf die neuste Version der Bausteine zugreifen zu können)) hinzugefügt, der die Rohdaten in Nutzdaten umwandelt. Der Baustein überführt die eingelesenen Rohdaten in die jeweiligen Speicherbereiche, sodass sie dem Programm als Nutzdaten zur Verfügung stehen.



    5.3. Schritt 4.3: Netzwerk 3

    In das Netzwerk 3 wird der Baustein Serialize (ebenfalls aktuellste Version) hinzugefügt, der die Nutzdaten in Rohdaten umgewandelt. Hier werden die Daten, die auf den Transponder geschrieben werden sollen, in ein Format, mit dem der IOL_Write-Block arbeiten kann, übersetzt.



    5.4. Schritt 4.4: Netzwerk 4

    Im Netzwerk 4 werden die Variablen definiert, die auf den Transponder geschrieben werden sollen. Diese können im Sinne der Aufgabenstellung per MOVE-Befehl gewählt werden. Im Folgenden ist ein mögliches Beispiel für Netzwerk 4 dargestellt:


    5.5. Schritt 4.5: Netzwerk 5

    In Netzwerk 5 muss der IOL-Write Baustein per drag and drop eingefügt werden.


    Die Beschaltung der EXECUTE Eingänge können frei in Abhängigkeit von der Aufgabenstellung gewählt werden.

    6. Schritt 5: Einfügen in die Main

    Damit der fertige Baustein "Read_Write_RFID" beim Starten der Anlage aktiviert wird, muss der Baustein in die "Main" eingefügt werden. Nur so wird der Baustein durchlaufen.

    Dazu wird als erstes ein neues Netzwerk hinzugefügt, wenn noch kein leeres existiert. Dieses bekommt den Namen "Read/Write". Danach wird der Baustein "Read_Write_RFID" per "Drag & Drop" in das neue Netzwerk eingefügt.


    7. Schritt 6: Schrittkette ergänzen

    Die bereits existierende Schrittkette "Automatikbetrieb" durchläuft im bisherigen Stand das Befüllen und Schließen der Dosen ohne dass die RFIDs verwendet werden.

    Damit der neue Baustein "Read_Write_RFID" sinnvoll verwendet wird, müssen die RFIDs und ihre Funktionen in die Schrittkette eingearbeitet werden. Dazu werden neue Schritte und Transitionen hinzugefügt werden. Die Schritte bestimmen, was während eines Schrittes durchgeführt werden soll, beispielsweise dass ein Zylinder vor fährt o.ä. . Die Transition nach einem Schritt ist die Bedingung, die erfüllt sein muss, damit der vorherige Schritt beendet und der nächste Schritt gestartet wird. Das kann zum Beispiel sein, dass der Zylinder vor gefahren ist, was durch eine Variable markiert ist.

    Um einen Schritt und eine Transition in eine Schrittkette einzufügen, muss das Teil "Schritt und Transition" per "Drag & Drop" wie im folgenden Bild dargestellt an der richtigen Stelle eingefügt werden.


    7.1. Schritt 6.1: Schreibenden RFID einfügen

    Der erste Schritt der RFIDs in der Schrittkette bzw. in der Funktion der Anlage ist das Beschreiben des Transponders. Dies muss auch in die Schrittkette "Automatikbetrieb" eingefügt werden. Es wird nach dem "Pick & Place" des Deckels durchgeführt. Also muss in der Schrittkette auch dort angefangen werden.

    Nach dem Schritt "Greifer_auf" soll der Schritt "S16" so verändert werden, dass das Band beim ersten RFID, und nicht an der Lichtschranke am Ende der Rutsche anhält. Dazu werden sowohl der Schritt als auch die Transition als erstes auf "Bandlauf_zu_RFID_Write" und "Trans_Bandlauf_bei_RFID_Write" umbenannt. Der Motor soll anhalten, wenn der RFID Writer einen Transponder registriert. Deswegen wird die Variable ""Read_Write_RFID_DB".WriPres" in die Transition eingefügt und die Negation entfernt. Die Negation kann entfernt werden, indem eine neue Invertierung auf die gleiche Stellung gezogen wird. Das Ergebnis soll wie folgt aussehen:

    Als nächstes soll ein Schritt (namens "RFID_Write") mit Transition (namens "Trans_RFID_Write_fertig") eingefügt werden, bei dem darauf gewartet wird, dass der Transponder beschrieben wurde. Während des Schrittes soll die Variable "LED3" auf 1 gesetzt sein. 

    Um den neuen Schritt mit Transition einzufügen, muss erst wieder in die Kettenübersicht umgeschaltet werden (doppelter Klick auf den Hintergrund bei "Ketten (1)").

    Das Ergebnis soll aussehen, wie im folgenden Bild zu sehen. Die Nummerierungen der Schritte und Transitionen sind dabei irrelevant.

    7.2. Schritt 6.2: Lesenden RFID einfügen

    Als nächstes in der Schrittfolge soll der RFID Reader den Transponder wieder auslesen, damit erkannt wird, wie viele M&Ms in der Dose sind und die Dose in die richtige Rutsche sortiert wird.

    Dazu muss als erstes ein neuer Schritt mit Transition eingefügt werden, bei dem der Motor so weit läuft, bis der RFID Reader den Transponder erkennt. Das ist in etwa so aufgebaut wie der Schritt mit Transition, bei dem der Motor zum RFID Writer läuft. Das genaue Ergebnis ist im folgenden Bild zu sehen.

    Als nächstes folgt der Schritt, bei dem das Lesen beendet wird. Auf den Schritt folgen zwei Transitionen, durch einen Alternativzweig getrennt. Es soll der eine Zweig durchlaufen werden, wenn weniger als 10 M&Ms gezählt wurden. Sind mindestens 10 M&Ms vorhanden, soll der andere Zweig durchlaufen werden.
    Dieser Aufbau kann dadurch erzeugt werden, dass wieder auf die Ansicht der gesamten Kette umgeschaltet wird. Als erstes wird ein Schritt mit Transition an der richtigen Stelle eingefügt. Nun wird ein Alternativzweig per "Drag & Drop" vor der erstellten Transition eingefügt. Im neuen Zweig wird automatisch eine neue Transition erstellt.

    Die neuen Teile sollen wie folgt erstellt werden (die logischen Verknüpfungen bzw. ihre Bausteine sind rechts bei den einfachen Anweisungen zu finden und per "Drag & Drop" einzufügen):


    Im Schritt "Trans_mehr_als_13_MuMs" ist ein Zeitbaustein eingefügt. Falls der Transponder nicht gelesen werden kann, oder nach 5 Sekunden noch nicht mit dem Lesen fertig ist, wird angenommen, dass sich mindestens 10 M&Ms in der Dose befinden und der zweite Zweig wird durchlaufen.

    7.3. Schritt 6.3: Zweig 1 - weniger als 10 MuMs

    Als erstes soll der linke Zweig vervollständigt werden. Dieser beschreibt den Vorgang, was passiert, wenn eine Anzahl von weniger als 10 M&Ms eingelesen wird.
    Sind weniger als 10 M&Ms in der Dose, soll die Dose nicht in die hintere Rutsche fahren. Stattdessen soll sie schon bei der ersten Rutsche vom Band geschoben werden. Da sich der RFID Reader direkt beim Sortierzylinder befindet, muss der Motor dafür nicht mehr angeschaltet werden.

    Für den Zweig sollen zwei Schritte mit ihren jeweiligen Transitionen eingefügt werden.

    Im ersten Schritt soll der Vereinzeler ausgefahren werden (Variable "MB15"). Dieser Schritt soll erst beendet werden, wenn die Variable "B24_no" auf 1 gesetzt wird. Diese wird auf 1 gesetzt, wenn der Vereinzeler ausgefahren ist.

    Im zweiten Schritt soll der Vereinzeler wieder eingefahren werden (Variable "MB16"). Der Schritt wird beendet, wenn die Variable "B23_no" wieder auf 1 gesetzt wird.


    7.4. Schritt 6.4: Zweig 2 - mehr als 10 MuMs

    Als nächstes soll der rechte Zweig vervollständigt werden. Er beschreibt die Vorgehensweise in dem Fall dass mindestens 10 M&Ms in der Dose sind.

    Dazu soll der Motor so lange laufen, bis die Lichtschranke an der Rutsche eine Dose registriert. Dadurch wird die Dose bis in die hintere Rutsche durchgefahren. Für diesen Vorgang ist nur ein neuer Schritt mit Transition nötig.
    Die erzeugten Teile sollen wie folgt aussehen (hier ist es wichtig, auf die Negation der Transitions-Variable zu achten):

    Nun wird der rechte Zweig wieder mit dem linken verbunden, indem man den Pfeil per "Drag & Drop" an die richtige Stelle zieht.

    Schließlich muss sich noch dem letzten Schritt "Dose_zur_Rutsche" zugewandt werden. Da die Schrittkette für den Sprung zurück zu Schritt 2 vorher einen Schritt mit Transition benötigt, kann dieser Schritt nicht einfach entfernt werden.
    Er wird deshalb dort gelassen, nur verändert. Als erstes wird die Aktion der Variable "Q1" entfernt, da der Motor nach dem Durchlaufen der Zweige nicht mehr benötigt wird. Zweitens wird die Transition verändert. Statt der negierten Variable "B6_nc" wird ein Zeitbaustein mit einer beliebigen Zeitangabe (nicht zu groß) eingebaut.


    8. Schritt 7: Beobachtungstabelle

    Zum Schluss soll eine Beobachtungtabelle unter "Beobachtungs- und Forcetabellen" erstellt werden. Klickt man hier auf "alle beobachten" (Die "Brille" in der Menüleiste direkt über der Tabelle) kann man einen Überblick über alle für die RFIDs wichtigen Variablen bekommen. Vor allem zum Testen der Anlage ist das sehr hilfreich.