Einfache Kommandoschnittstelle Modicon M340-Steuerung
Transcrição
Einfache Kommandoschnittstelle Modicon M340-Steuerung
Einfache Kommandoschnittstelle Modicon M340-Steuerung Bibliotheksbeschreibung DTE102 1 Inhalt 1 2 3 4 Übersicht ....................................................................................................................................................... 3 Haftungsausschluss ...................................................................................................................................... 3 Einstellen der Verbindungsparameter in der Auswerteeinheit ...................................................................... 3 Projektieren der Verbindung in Unity Pro ...................................................................................................... 4 4.1 Einfügen der Auswerteeinheit in den Hardwarekatalog von Unity Pro ................................................. 4 4.2 Einfügen der Auswerteeinheit in das Softwareprojekt .......................................................................... 7 4.3 Einstellen der Verbindungsparameter im Kommunikationsmodul ........................................................ 9 4.4 Konfigurieren der Kanäle der Auswerteeinheit ................................................................................... 12 5 Arbeiten mit der Bibliothek .......................................................................................................................... 13 5.1 Integration der Bibliothek in Unity Pro ................................................................................................ 13 5.2 Inhalt der Bibliothek ............................................................................................................................ 13 5.3 Verwenden der Bausteine im Anwenderprogramm ............................................................................ 14 6 Die Funktionsbausteine der Bibliothek im Detail ......................................................................................... 14 6.1 Der Funktionsbaustein DTE102_INACTIVE ....................................................................................... 14 6.2 Der Funktionsbaustein DTE102_INPUT............................................................................................. 15 6.3 Der Funktionsbaustein DTE102_OUTPUT......................................................................................... 17 6.4 Der Funktionsbaustein DTE102_RWH_RW ....................................................................................... 19 6.4.1 Aufbau der Kommunikation ............................................................................................................ 21 6.4.2 Ablauf der Kommandobearbeitung ................................................................................................. 22 6.4.3 Lesen der UID des Tags ................................................................................................................. 23 6.4.4 Lesen eines Bereichs des USER-Speichers des Tags .................................................................. 24 6.4.5 Beschreiben eines Bereichs des USER-Speichers des Tags ........................................................ 24 6.4.6 Anzeigen am Ausgangsparameter owStatus ................................................................................. 25 2 1 Übersicht Die Unity Pro Bibliothek DTE102 beinhaltet ein Codepaket für eine Schneider Electric Modicon M340 Steuerung, um im Anwenderprogramm der SPS den Datenaustausch mit einer Auswerteeinheit DTE102 der Firma ifm electronic zu vereinfachen. Für jedes der unterstützten Module der Auswerteeinheit wird ein Funktionsbaustein (DFB) bereitgestellt. Dieses Dokument erläutert das Einrichten der Verbindung zwischen Steuerung und Auswerteeinheit, und beschreibt die Einbindung und Anwendung der Bibliothek im Unity-Pro Projekt. 2 Haftungsausschluss Das Codepaket der Bibliothek ist eine Demoversion. Es ist nur dazu gedacht, dem Benutzer als Beispiel zu dienen. Eine etwaige Anwendung dieses Codepakets zur Maschinensteuerung erfolgt auf eigene Gefahr! Die Autoren und Rechtsinhaber dieses Codepakets schließen jegliche Haftung für die Funktionstüchtigkeit oder Kompatibilität dieser Demoversion aus. Aus urheberrechtlichen Gründen ist nur die kostenlose Weitergabe des Codepakets erlaubt. 3 Einstellen der Verbindungsparameter in der Auswerteeinheit Zum Einstellen der Verbindungsparameter in der Auswerteeinheit wird das im Gerät integrierte Web-Interface verwendet. Dieses ist mit einem beliebigen Webbrowser erreichbar. Die Auswerteeinheit wird mit der IP-Adresse 192.168.0.79 ausgeliefert. PC und Auswerteeinheit in einem Netzwerk verbinden am PC den Webbrowser starten und die IP-Adresse der Auswerteeinheit eingeben auf der Seite Home kann mit einem Klick auf den Link EDS.ZIP ein Archiv mit dem EDS- File für das Gerät heruntergeladen werden. Abbildung 1 3 auf der Seite Network können die Netzwerkparameter eingestellt werden auf [submit] klicken, um die Netzwerkparameter in die Auswerteeinheit zu übernehmen Abbildung 2 4 Projektieren der Verbindung in Unity Pro Die Kommunikation zwischen Steuerung und Auswerteeinheit erfolgt über Ethernet/IP durch ein Kommunikationsmodul NOC0401 in der M340-Steuerung. Die Funktionsbausteine der Bibliothek DTE102 benutzen den zyklischen Dienst „Implicit Messaging“ zum Datenaustausch mit der Auswerteeinheit. Dazu ist eine Projektierung der Verbindung in Unity Pro zwingend notwendig. Jede Auswerteeinheit DTE102 belegt je 80 Bytes im Ein- und Ausgangsbereich des Kommunikationsmoduls NOC0401. Diese Bereiche sind bei der Konfiguration der Adressbereiche des Kommunikationsmoduls zu reservieren. 4.1 Einfügen der Auswerteeinheit in den Hardwarekatalog von Unity Pro Um die Auswerteeinheit in den Hardwarekatalog zu integrieren, ist das EDS-File der Auswerteinheit erforderlich. Dieses EDS-File kann über das Web-Interface der Auswerteeinheit als Archiv heruntergeladen werden (siehe Kapitel 3). Nach dem Entpacken dieses Archivs kann das EDS-File in den Hardwarekatalog integriert werden. 4 Im DTM-Browser mit der rechten Maustaste auf das Kommunikationsmodul klicken aus dem Kontextmenü GeräteMenü Zusätzliche Funktionen EDS in Bibliothek hinzufügen wählen Abbildung 3 5 mit Hilfe des sich öffnenden Assistenten die EDS-Datei der Auswerteeinheit zur Bibliothek hinzufügen Abbildung 4 In Unity Pro den Hardwarekatalog öffnen Abbildung 5 6 im Hardwarekatalog zum Tab DTM-Katalog wechseln mit Klick auf [Aktualisieren] den Katalog aktualisieren Abbildung 6 4.2 Einfügen der Auswerteeinheit in das Softwareprojekt im DTM-Browser mit der rechten Maustaste auf das Kommunikationsmodul klicken aus dem Kontextmenü Hinzufügen… wählen Abbildung 7 7 aus der Liste der Geräte das DTE102XX (from EDS) auswählen auf [DTM hinzufügen] klicken, um das Fenster Eigenschaften des Geräts zu öffnen Abbildung 8 im Tab General dem Gerät einen eindeutigen Alias-Namen geben Abbildung 9 im Tab Protokollinformation das erforderliche Protokoll CIP (EtherNet/IP) einstellen den Dialog Eigenschaften des Geräts mit Klick auf [OK] verlassen, um die Einstellungen zu übernehmen Abbildung 10 8 4.3 Einstellen der Verbindungsparameter im Kommunikationsmodul im DTM-Browser mit der rechten Maustaste auf das Kommunikationsmodul klicken aus dem Kontextmenü Öffnen wählen, um das Fenster zur Konfiguration des Kommunikationsmoduls zu öffnen Abbildung 11 in der Struktur in der linken Seite des Fensters den Eintrag Geräteliste erweitern und die Auswerteeinheit auswählen den Tab Eigenschaften auswählen im Bereich Elementverwaltung den Importmodus auf Manuell einstellen Abbildung 12 9 zum Tab Adresseinstellungen wechseln im Bereich Adresse ändern die in der Auswerteeinheit eingestellte IP-Adresse eingeben Abbildung 13 in der Struktur in der linken Seite des Fensters den Eintrag Exclusive Owner auswählen Parameter Request Packet Interval (RPI) >= 10 ms einstellen Der Wert Verbindungsbit gibt die Nummer des Bits an, welches in den HEALTH_BITS den Status der Ethernet/IPVerbindung zum Gerät anzeigt. Die HEALTH_BITS sind Teil des Status-ByteArrays im Eingangsbereich des Kommunikationsmoduls. Zum Beispiel ist in Abbildung 14 das Verbindungsbit = 0. Das heißt das Bit HEALTH_BITS_IN[0].0 zeigt, ob die Ethernet/IPVerbindung zur Auswerteeinheit aufgebaut ist. Abbildung 14 10 in der Struktur in der linken Seite des Fensters den Eintrag Elemente auswählen Abbildung 15 in den Tabs Eingang, Eingang(Bit), Ausgang und Ausgang(Bit) alle vordefinierten Elemente löschen mit Klick auf [OK] die Einstellungen übernehmen und das Fenster schließen Abbildung 16 11 4.4 Konfigurieren der Kanäle der Auswerteeinheit Im DTM-Browser mit der rechten Maustaste auf das Symbol der Auswerteeinheit klicken aus dem Kontextmenü Öffnen wählen, um das Fenster zur Konfiguration der Auswerteeinheit zu öffnen Abbildung 17 in der Struktur auf Exclusive Owner klicken zum Tab Konfigurationseinstellungen wechseln alle Kanäle der Auswerteeinheit entsprechend der vorgesehenen Verwendung konfigurieren. Die Bedeutung der Parameter ist im Gerätehandbuch der Auswerteeinheit beschrieben. mit Klick auf [OK] die Daten übernehmen Abbildung 18 12 5 Arbeiten mit der Bibliothek 5.1 Integration der Bibliothek in Unity Pro Die Bibliothek DTE102 wird als Archiv-Datei geliefert. Nach dem Entpacken dieses Archivs kann die Bibliothek mit dem Tool zur Typbibliotheks-Aktualisierung aus dem Unity Software Paket in die Typbibliothek von Unity Pro integriert werden. das Tool zur Typbibliothek-Aktualisierung starten als Quelle das Verzeichnis mit der Bibliothek einstellen auf [Familie installieren] klicken nach der Installation auf [Beenden] klicken, um das Tool zu verlassen Abbildung 19 Die Bausteine werden in der Bibliothek ifm electronic in die Familie DTE102 eingeordnet. Abbildung 20 5.2 Inhalt der Bibliothek Die Bibliothek DTE102 beinhaltet je einen benutzerspezifischen Funktionsbaustein (DFB) für jedes der unterstützten Module der Auswerteeinheit. Name Typ Beschreibung DTE102_INACTIVE DFB Funktionsbaustein für einen Kanal der Auswerteeinheit DTE102 mit Module Identifier = INACTIVE (nähere Beschreibung siehe Kapitel 6.1) DTE102_INPUT DFB Funktionsbaustein für einen Kanal der Auswerteeinheit DTE102 mit Module Identifier = INPUT (nähere Beschreibung siehe Kapitel 6.2) DTE102_OUTPUT DFB Funktionsbaustein für einen Kanal der Auswerteeinheit DTE102 mit Module Identifier = OUTPUT (nähere Beschreibung siehe Kapitel 6.3) DTE102_RWH_RW DFB Funktionsbaustein für einen Kanal der Auswerteeinheit DTE102 mit Module Identifier = RWH_RW (nähere Beschreibung siehe Kapitel 6.4) Tabelle 1 13 5.3 Verwenden der Bausteine im Anwenderprogramm Für jeden Kanal kann im Anwenderprogramm ein Funktionsbaustein verwendet werden. Dieser muss zu dem eingestellten Modul des Kanals passen (siehe Tabelle 1). Die korrekte Auswahl wird innerhalb der Funktionsbausteine nicht überprüft. Es ist nur eine Instanz eines Funktionsbausteins pro Kanal einer Auswerteeinheit zulässig. Alle verwendeten Instanzen müssen im zyklischen Programm der SPS einmal pro Zyklus aufgerufen werden. Zur Verwendung der Funktionsbausteine müssen im Unity Projekt dynamische Arrays (ANY_ARRAY_XXX) als Variablen und Bit-Extraktion aus Bytes zugelassen werden. Dies wird in den Eigenschaften des Projekts festgelegt. 6 Die Funktionsbausteine der Bibliothek im Detail 6.1 Der Funktionsbaustein DTE102_INACTIVE Dieser Funktionsbaustein kann für einen als INACTIVE parametrierten Kanal der Auswerteeinheit DTE102 verwendet werden. Er bietet folgende Funktion: Lesen der Diagnosedaten des Kanals der Auswerteeinheit Der Funktionsbaustein extrahiert in jedem SPS-Zyklus die Daten des Kanals aus den Eingangsdaten der Auswerteeinheit. Tritt an dem Kanal ein Diagnoseereignis auf, werden die Diagnosedaten selbständig gelesen und an den Ausgangsparametern angezeigt. Das Lesen der Diagnosedaten arbeitet asynchron, das bedeutet es erstreckt sich über mehrere SPS-Zyklen. Das folgende Bild zeigt einen Aufruf des Funktionsbausteins DTE102_INACTIVE. Abbildung 21 Die Parameter haben folgende Bedeutung: Eingangsparameter: Name Typ Beschreibung iarbDTE102 ANY_ARRAY_BYTE Datenfeld der Eingänge von der Auswerteeinheit iiChannelNo INT Kanal-Nummer (1..4) ixConnOK BOOL Ethernet/IP-Verbindung zur Auswerteeinheit ist hergestellt ixAckDiag BOOL Löschen der angezeigten Diagnosedaten Tabelle 2 14 Ausgangsparameter: Name Typ Beschreibung oarbDTE102 ANY_ARRAY_BYTE Datenfeld der Ausgänge zur Auswerteeinheit oiDiagLength INT Anzahl der Einträge in den Diagnosedaten oardwDiagData ARRAY[0..3] OF DWORD Array mit Diagnosedaten (Fehlercodes siehe Gerätehandbuch DTE102) Tabelle 3 Die Eingangsdaten von der Auswerteeinheit werden dem Baustein am Eingangsparameter iarbDTE102 zur Verfügung gestellt. Der Ausgangsparameter oarbDTE102 verweist auf die Ausgangsdaten, die zur Auswerteeinheit transferiert werden. Durch den Eingangsparameter iiChannelNo wird bestimmt, welcher Kanal der Auswerteeinheit bearbeitet werden soll. Der Eingangsparameter ixConnOK zeigt dem Baustein an, dass die Ethernet/IP-Verbindung zur Auswerteeinheit aufgebaut ist. Vorzugsweise ist dieser Eingangsparameter mit dem entsprechenden Verbindungsbit (Abbildung 14) aus dem Eingangsbereich der Kommunikationsbaugruppe zu verknüpfen. Solange der Eingangsparameter ixConnOK = FALSE ist, werden die an den Ausgangsparametern angezeigten Diagnosedaten mit 0 initialisiert. Ist das Signal am Eingangsparameter ixConnOK = TRUE, beginnt der Funktionsbaustein zu arbeiten. Wird von der Auswerteeinheit ein Fehler an dem parametrierten Kanal gemeldet, fügt der Funktionsbaustein selbständig die Steuersignale für das Lesen der Diagnosedaten in die Ausgangsdaten zur Auswerteeinheit ein. Die erhaltenen Diagnosedaten werden im Ausgangsparameter oardwDiagData angezeigt. Dabei werden die bisher angezeigten Diagnosedaten komplett gelöscht. Der Ausgangsparameter oiDiagLength zeigt, wie viele Diagnosedatensätze aktuell angezeigt werden. Die Beschreibungen der Fehlercodes in den Diagnosedaten sind im Gerätehandbuch der Auswerteeinheit aufgeführt. Eine steigende Flanke am Eingangsparameter ixAckDiag löscht die angezeigten Diagnosedaten. 6.2 Der Funktionsbaustein DTE102_INPUT Dieser Funktionsbaustein kann für einen als INPUT parametrierten Kanal der Auswerteeinheit DTE102 verwendet werden. Er bietet folgende Funktionen: Lesen des digitalen Signals am Eingang C/Qi Lesen des digitalen Signals am Eingang I/Q Überwachung der Last am L+ Anschluss der Ports Lesen der Diagnosedaten des Kanals der Auswerteeinheit Der Funktionsbaustein extrahiert in jedem SPS-Zyklus die Daten des Kanals aus den Eingangsdaten der Auswerteeinheit und stellt die Daten der digitalen Eingänge des Kanals an seinen Ausgangsparametern zur Verfügung. Tritt an dem Kanal ein Diagnoseereignis auf, werden die Diagnosedaten selbständig gelesen und an den Ausgangsparametern angezeigt. Das Lesen der Diagnosedaten arbeitet asynchron und erstreckt sich über mehrere SPS-Zyklen. Die zyklischen Funktionen des Bausteins werden davon nicht beeinflusst. Wird dieser Funktionsbausteins für einen Kanal verwendet, der nicht als INPUT parametriert ist, führt dies zur Fehlfunktion des Bausteins. Das folgende Bild zeigt einen Aufruf des Funktionsbausteins DTE102_INPUT. 15 Abbildung 22 Die Parameter haben folgende Bedeutung: Eingangsparameter: Name Typ Beschreibung iarbDTE102 ANY_ARRAY_BYTE Datenfeld der Eingänge von der Auswerteeinheit iiChannelNo INT Kanal-Nummer (1..4) ixConnOK BOOL Ethernet/IP-Verbindung zur Auswerteeinheit ist hergestellt ixAckDiag BOOL Löschen der angezeigten Diagnosedaten Name Typ Beschreibung oarbDTE102 ANY_ARRAY_BYTE Datenfeld der Ausgänge zur Auswerteeinheit oxCQi BOOL Status des digitalen Eingangs C/Qi oxIQ BOOL Status des digitalen Eingangs I/Q oxOverload BOOL Overload der Spannungsversorgung aus L+ oiDiagLength INT Anzahl der Einträge in den Diagnosedaten oardwDiagData ARRAY[0..3] OF DWORD Array mit Diagnosedaten (Fehlercodes siehe Gerätehandbuch DTE102) Tabelle 4 Ausgangsparameter: Tabelle 5 Die Eingangsdaten von der Auswerteeinheit werden dem Baustein am Eingangsparameter iarbDTE102 zur Verfügung gestellt. Der Ausgangsparameter oarbDTE102 verweist auf die Ausgangsdaten, die zur Auswerteeinheit transferiert werden. Durch den Eingangsparameter iiChannelNo wird bestimmt, welcher Kanal der Auswerteeinheit bearbeitet werden soll. Der Eingangsparameter ixConnOK zeigt dem Baustein an, dass die Ethernet/IP-Verbindung zur Auswerteeinheit aufgebaut ist. Vorzugsweise ist dieser Eingangsparameter mit dem entsprechenden Verbindungsbit (Abbildung 14) aus dem Eingangsbereich der Kommunikationsbaugruppe zu verknüpfen. Solange der Eingangsparameter ixConnOK = FALSE ist, werden alle Ausgangsparameter mit 0 initialisiert. Ist das Signal am Eingangsparameter ixConnOK = TRUE, beginnt der Funktionsbaustein zu arbeiten. 16 Ein als INPUT parametrierter Kanal der Auswerteeinheit stellt 2 digitale Eingänge zur Verfügung. Der Status dieser Eingänge wird an den Ausgangsparametern oxCQi und oxIO angezeigt. Eine Überlastung der Spannungsversorgung aus diesen Eingängen wird am Ausgangsparameter oxOverload signalisiert. Wird von der Auswerteeinheit ein Fehler an dem parametrierten Kanal gemeldet, fügt der Funktionsbaustein selbständig die Steuersignale für das Lesen der Diagnosedaten in die Ausgangsdaten zur Auswerteeinheit ein. Die erhaltenen Diagnosedaten werden im Ausgangsparameter oardwDiagData angezeigt. Dabei werden die bisher angezeigten Diagnosedaten komplett gelöscht. Der Ausgangsparameter oiDiagLength zeigt, wie viele Diagnosedatensätze aktuell angezeigt werden. Die Beschreibungen der Fehlercodes in den Diagnosedaten sind im Gerätehandbuch der Auswerteeinheit aufgeführt. Eine steigende Flanke am Eingangsparameter ixAckDiag löscht die angezeigten Diagnosedaten. 6.3 Der Funktionsbaustein DTE102_OUTPUT Dieser Funktionsbaustein kann für einen als OUTPUT parametrierten Kanal der Auswerteeinheit DTE102 verwendet werden. Er bietet folgende Funktionen: Steuern des digitalen Signals am Ausgang C/Qo Lesen des digitalen Signals am Eingang I/Q Aktivieren der erhöhten Stromversorgung des Ausgangs C/Qo (nur für Kanal 3 und 4 verfügbar) Überwachung der Last am L+ Anschluss der Ports Lesen der Diagnosedaten des Kanals der Auswerteeinheit Der Funktionsbaustein extrahiert in jedem SPS-Zyklus die Daten des Kanals aus den Eingangsdaten der Auswerteeinheit und stellt die Daten des digitalen Eingangs des Kanals an seinen Ausgangsparametern zur Verfügung. Die Signale für den digitalen Ausgang des Kanals werden zyklisch in die Ausgangsdaten zur Auswerteeinheit eingefügt. Tritt an dem Kanal ein Diagnoseereignis auf, werden die Diagnosedaten selbständig gelesen und an den Ausgangsparametern angezeigt. Das Lesen der Diagnosedaten arbeitet asynchron und erstreckt sich über mehrere SPS-Zyklen. Die zyklischen Funktionen des Bausteins werden davon nicht beeinflusst. Wird dieser Funktionsbausteins für einen Kanal verwendet, der nicht als OUTPUT parametriert ist, führt dies zur Fehlfunktion des Bausteins. Das folgende Bild zeigt einen Aufruf des Funktionsbausteins DTE102_OUTPUT. Abbildung 23 Die Parameter haben folgende Bedeutung: 17 Eingangsparameter: Name Typ Beschreibung iarbDTE102 ANY_ARRAY_BYTE Datenfeld der Eingänge von der Auswerteeinheit iiChannelNo INT Kanal-Nummer (1..4) ixConnOK BOOL Ethernet/IP-Verbindung zur Auswerteeinheit ist hergestellt ixCQo BOOL Signal für Ausgang C/Qo ixHighCurrent BOOL Aktivieren der erhöhten Stromversorgung des Ausgangs C/Qo ixAckDiag BOOL Löschen der angezeigten Diagnosedaten Name Typ Beschreibung oarbDTE102 ANY_ARRAY_BYTE Datenfeld der Ausgänge zur Auswerteeinheit oxIQ BOOL Status des digitalen Eingangs I/Q oxOverload BOOL Overload der Spannungsversorgung aus L+ oiDiagLength INT Anzahl der Einträge in den Diagnosedaten oardwDiagData ARRAY[0..3] OF DWORD Array mit Diagnosedaten (Fehlercodes siehe Gerätehandbuch DTE102) Tabelle 6 Ausgangsparameter: Tabelle 7 Die Eingangsdaten von der Auswerteeinheit werden dem Baustein am Eingangsparameter iarbDTE102 zur Verfügung gestellt. Der Ausgangsparameter oarbDTE102 verweist auf die Ausgangsdaten, die zur Auswerteeinheit transferiert werden. Durch den Eingangsparameter iiChannelNo wird bestimmt, welcher Kanal der Auswerteeinheit bearbeitet werden soll. Der Eingangsparameter ixConnOK zeigt dem Baustein an, dass die Ethernet/IP-Verbindung zur Auswerteeinheit aufgebaut ist. Vorzugsweise ist dieser Eingangsparameter mit dem entsprechenden Verbindungsbit (Abbildung 14) aus dem Eingangsbereich der Kommunikationsbaugruppe zu verknüpfen. Solange der Eingangsparameter ixConnOK = FALSE ist, werden alle Ausgangsparameter mit 0 initialisiert. Ist das Signal am Eingangsparameter ixConnOK = TRUE, beginnt der Funktionsbaustein zu arbeiten. Ein als OUTPUT parametrierter Kanal der Auswerteeinheit stellt 1 digitalen Ausgang und 1 digitalen Eingang zur Verfügung. Der Status des Eingangs wird am Ausgangsparameter oxIO angezeigt. Das Signal am Eingangsparameter ixCQo wird in die Ausgangsdaten zur Auswerteeinheit eingetragen und steuert den digitalen Ausgang des Kanals. Das Signal am Eingangsparameter ixHighCurrent wird nur für die Kanäle 3 und 4 berücksichtigt und an die Auswerteeinheit übermittelt. Eine Überlastung der Spannungsversorgung aus dem Eingang oder dem Ausgang wird am Ausgangsparameter oxOverload signalisiert. Wird von der Auswerteeinheit ein Fehler an dem parametrierten Kanal gemeldet, fügt der Funktionsbaustein selbständig die Steuersignale für das Lesen der Diagnosedaten in die Ausgangsdaten zur Auswerteeinheit ein. Die erhaltenen Diagnosedaten werden im Ausgangsparameter oardwDiagData angezeigt. Dabei werden die bisher angezeigten Diagnosedaten komplett gelöscht. Der Ausgangsparameter oiDiagLength zeigt, wie viele Diagnosedatensätze aktuell angezeigt werden. Die Beschreibungen der Fehlercodes in den Diagnosedaten sind im Gerätehandbuch der Auswerteeinheit aufgeführt. 18 Eine steigende Flanke am Eingangsparameter ixAckDiag löscht die angezeigten Diagnosedaten. 6.4 Der Funktionsbaustein DTE102_RWH_RW Dieser Funktionsbaustein kann für einen als RWH_RW parametrierten Kanal der Auswerteeinheit DTE102 verwendet werden. Mit Hilfe einer angeschlossenen RFID-Antenne können Daten von einem Tag gelesen werden oder auf einem Tag gespeichert werden. Bei Verwendung dieses Funktionsbausteins muss bei der Parametrierung des Kanals der Parameter Data Hold Time = 0 eingestellt werden (Abbildung 18). Der Funktionsbaustein bietet folgende Funktionen: Anwesenheit eines Tags erfassen Lesen der UID eines Tags Bereich des USER-Speichers von einem Tag lesen Bereich des USER-Speichers eines Tags beschreiben Aus- und Einschalten der Antenne Lesen der Diagnosedaten des Kanals der Auswerteeinheit Das Schreiben der UID ist nicht möglich. Der Versuch wird mit einer Fehlermeldung quittiert. Wird dieser Funktionsbausteins für einen Kanal verwendet, der nicht als RWH_RW parametriert ist, führt dies zur Fehlfunktion des Bausteins. Der Funktionsbaustein extrahiert die Daten des Kanals aus den Eingangsdaten der Auswerteeinheit und wertet diese aus. Steuersignale für das Lesen oder Beschreiben eines Tags werden in die Ausgangsdaten zur Auswerteeinheit eingefügt. Tritt an dem Kanal ein Diagnoseereignis auf, werden die Diagnosedaten selbständig gelesen und an den Ausgangsparametern angezeigt. Die Kommunikation muss nach einem definierten Ablauf erfolgen. Abbildung 24 verdeutlicht dies anhand eines Ablaufplans. Abbildung 24 Um den Vorgang der Kommandoabwicklung für den Anwender komfortabler zu gestalten, wurde der Funktionsbaustein DTE102_RWH_RW entwickelt. Dieser Baustein bearbeitet das oben aufgeführte Kommandoprotokoll selbständig. Das folgende Bild zeigt einen Aufruf des Funktionsbausteins DTE102_RWH_RW. 19 Abbildung 25 Die Parameter haben folgende Bedeutung: Eingangsparameter: Name Typ Beschreibung iarbDTE102 ANY_ARRAY_BYTE Datenfeld der Eingänge von der Auswerteeinheit iiChannelNo INT Kanal-Nr. (Kanal 1 .. 4) ixConnOK BOOL Ethernet/IP-Verbindung zur Auswerteeinheit ist hergestellt ixAntOff BOOL Antenne ausschalten ixUserMem BOOL Zugriff auf USER-Speicher des Tag ixRead BOOL steigende Flanke startet das Lesen vom Tag ixWrite BOOL steigende Flanke startet das Schreiben auf den Tag iiRdWrStartAddr INT Startadresse im USER-Speicher der Tag zum Lesen/Schreiben iiRdWrLength INT Anzahl der zu lesenden/schreibenden Bytes iarbSendBuf ANY_ARRAY_BYTE Bereich mit den zu schreibenden Daten Tabelle 8 20 Ausgangsparameter: Name Typ Beschreibung oarbDTE102 ANY_ARRAY_BYTE Datenfeld der Ausgänge zur Auswerteeinheit oxBusy BOOL Funktionsbaustein ist beschäftigt, kein neuer Befehl möglich oxDone BOOL Funktion fehlerfrei beendet oxError BOOL Fehler erkannt owStatus WORD Status Information oder Fehlercode (siehe Kapitel 6.4.6) oiDiagLength INT Anzahl der Einträge in den Diagnosedaten oardwDiagData ARRAY[0..3] OF DWORD Array mit Diagnosedaten (Fehlercodes siehe Gerätehandbuch DTE102) oxTagPresent BOOL Tag erkannt oiRcvdLength INT Anzahl der gelesenen Bytes oarbRcvBuf ANY_ARRAY_BYTE Empfangsbereich für die gelesenen Daten Tabelle 9 6.4.1 Aufbau der Kommunikation Die Eingangsdaten von der Auswerteeinheit werden dem Baustein am Eingangsparameter iarbDTE102 zur Verfügung gestellt, der Ausgangsparameter oarbDTE102 verweist auf die Ausgangsdaten, die zur Auswerteeinheit transferiert werden. Durch den Eingangsparameter iiChannelNo wird bestimmt, welcher Kanal der Auswerteeinheit bearbeitet werden soll. Der Eingangsparameter ixConnOK zeigt dem Baustein an, dass die Ethernet/IP-Verbindung zur Auswerteeinheit aufgebaut ist. Vorzugsweise ist dieser Eingangsparameter mit dem entsprechenden Verbindungsbit (Abbildung 14) aus dem Eingangsbereich der Kommunikationsbaugruppe zu verknüpfen. 21 Solange der Eingangsparameter ixConnOK = FALSE ist, werden die Ausgangsparameter oxBusy = TRUE und owStatus = 0x1000 ausgegeben. Alle anderen Ausgangsparameter werden mit 0 initialisiert. ixConnOK Eingangsparameter ixConnOK = TRUE setzen: Die Kommunikation mit dem parametrierten Kanal der Auswerteeinheit wird aktiviert. Die Signale für den Datenaustausch werden synchronisiert. ixAntOff oxBusy Eingangsparameter ixAntOff = FALSE aktiviert die Antenne oxDone Wurden der Datenaustausch synchronisiert und die Antenne aktiviert, wird der Ausgangsparameter oxBusy = FALSE ausgegeben. Der Funktionsbaustein ist nun bereit für den Datenaustausch mit einem Tag. oxError owStatus 0x1000 0x2*** 0x3000 0x7000 Abbildung 26 6.4.2 Ablauf der Kommandobearbeitung Der Funktionsbaustein DTE102_RWH_RW ist ein asynchron arbeitender Funktionsbaustein, das bedeutet die Bearbeitung erstreckt sich über mehrere FB-Aufrufe. Der Bearbeitungszustand des Funktionsbausteins wird am Ausgangsparameter owStatus angezeigt. Solange die angeschlossene Antenne ein Tag erkennt, wird der Ausgangsparameter oxTagPresent gesetzt. Zeigt der Funktionsbaustein am Ausgangsparameter oxBusy = FALSE, ist er bereit für einen neuen Auftrag. Durch den Eingangsparameter ixUserMem bestimmen, ob auf den USER-Speicher oder die UID des Tags zugegriffen wird in den Eingangsparametern iiRdWrStartAddr und iiRdWrLength den USER-Speicherbereich angeben steigende Flanke am Eingangsparameter ixRead oder ixWrite startet das Lesen oder Beschreiben des Tags. Die angezeigten Diagnosedaten werden gelöscht und der am Ausgangsparameter oarbRcvBuf definierte Empfangsbereich initialisiert. Während der Bearbeitung ist der Ausgangsparameter oxBusy = TRUE. Im Ausgangsparameter owStatus wird der Fortschritt der Auftragsbearbeitung angezeigt. Bei Abschluss des Auftrags wird der Ausgangsparameter oxBusy = FALSE ausgegeben. Das Ergebnis der Bearbeitung wird in den Ausgangsparametern oxDone und oxError mitgeteilt. Es bleibt erhalten solange der auslösende Eingangsparameter ixRead oder ixWrite = TRUE ist, mindestens jedoch einen SPS-Zyklus. Das Ergebnis wird wie folgt dargestellt: kein Fehler während der Bearbeitung aufgetreten: oxDone = TRUE oxError = FALSE owStatus = 0x0000 oiRcvdLength = zeigt die Anzahl der gelesenen Daten die gelesene Daten werden in dem durch den Ausgangsparameter oarbRcvBuf definierten Empfangsbereich abgelegt Fehler während der Bearbeitung aufgetreten oxDone = FALSE 22 oxError = TRUE owStatus zeigt ein Fehlercode. Die möglichen Fehlercodes sind in Tabelle 11 aufgelistet. Der Signalverlauf ist in Abbildung 27 beispielhaft dargestellt. kein Fehler aufgetreten Fehler aufgetreten ixConnOK ixRead oxBusy oxDone 0x7000 0x8*** 0x7*** 0x7000 0x8*** 0x7*** 0x7000 0x0000 0x7*** 0x7000 0x0000 0x7*** owStatus 0x7000 oxError Abbildung 27 Wird von der Auswerteeinheit ein Fehler an dem parametrierten Kanal gemeldet, fügt der Funktionsbaustein selbständig die Steuersignale für das Lesen der Diagnosedaten in die Ausgangsdaten zur Auswerteeinheit ein. Die erhaltenen Diagnosedaten werden im Ausgangsparameter oardwDiagData angezeigt. Dabei werden die bisher angezeigten Diagnosedaten komplett gelöscht. Der Ausgangsparameter oiDiagLength zeigt, wie viele Diagnosedatensätze aktuell angezeigt werden. Die Beschreibungen der Fehlercodes in den Diagnosedaten sind im Gerätehandbuch der Auswerteeinheit aufgeführt. 6.4.3 Lesen der UID des Tags Wie der Funktionsbaustein die UID eines Tags zur Verfügung stellt, hängt von der Parametrierung des Kanals ab (Abbildung 18). Kanalparameter Edge Controlled UID Read nicht aktiviert: Eingangsparameter ixUserMem = FALSE einstellen Erkennt die Antenne einen Tag (oxTagPresent = TRUE), wird dessen UID im Empfangsbereich zur Verfügung gestellt. Die Länge der UID wird am Ausgangsparameter oiRcvdLength angezeigt. Diese Daten werden gelöscht, wenn der Tag das Antennenfeld verlässt oder der Eingangsparameter ixUserMem = TRUE gesetzt wird. Kanalparameter Edge Controlled UID Read aktiviert: Eingangsparameter ixUserMem = FALSE einstellen steigende Flanke am Eingangsparameter ixRead startet das Lesen der UID des Tags. Nach Beendigung ohne Fehler wird der Ausgangsparameter oxDone gesetzt und die UID im Empfangsbereich zur Verfügung gestellt. Die Länge der UID wird am Ausgangsparameter oiRcvdLength angezeigt. 23 Diese Daten bleiben erhalten, solange der Ausgangsparameter oxDone gesetzt bleibt (siehe Kapitel 6.4.2) 6.4.4 Lesen eines Bereichs des USER-Speichers des Tags Ein Bereich des USER-Speichers eines Tags wird wie folgt gelesen: Eingangsparameter ixUserMem = TRUE einstellen am Eingangsparameter iiRdWrStartAddr die Adresse im USER-Speicher des Tags angeben, ab der gelesen werden soll am Eingangsparameter iiRdWrLength die Anzahl der zu lesenden Bytes einstellen steigende Flanke am Eingangsparameter ixRead übernimmt die Eingangsparameter iiRdWrStartAddr und iiRdWrLength und startet das Lesen vom Tag. Die vom Tag gelesenen Daten werden im Empfangsbereich abgelegt. Kann die angegebene Datenlänge nicht mit einem einzelnen Lesezyklus transferiert werden, führt der Funktionsbaustein selbständig mehrere Lesezyklen mit entsprechenden Adressoffsets im Quell- und Zielbereich aus. Die Länge der zu lesenden Daten ist somit nur durch den angegebenen Empfangspuffer und den Speicher des Tags limitiert. Bei Abschluss des Auftrags wird das Ergebnis der Bearbeitung angezeigt (siehe Kapitel 6.4.2). Im Ausgangsparameter oiRcvdLength wird die Gesamtlänge der Daten im Empfangsbereich angezeigt. Die Daten bleiben erhalten, solange der Ausgangsparameter oxDone gesetzt ist. 6.4.5 Beschreiben eines Bereichs des USER-Speichers des Tags Ein Bereich des USER-Speichers eines Tags wird wie folgt beschrieben: Eingangsparameter ixUserMem = TRUE einstellen die zu schreibenden Daten in den am Eingangsparameter iarbSendBuf eingestellten Sendebereich eintragen am Eingangsparameter iiRdWrStartAddr die Adresse im USER-Speicher des Tags angeben, ab der die Daten geschrieben werden sollen am Eingangsparameter iiRdWrLength die Anzahl der zu übertragenden Bytes einstellen steigende Flanke am Eingangsparameter ixWrite übernimmt die Eingangsparameter iiRdWrStartAddr und iiRdWrLength und startet das Beschreiben des Tagspeichers. Kann die angegebene Datenlänge nicht mit einem einzelnen Schreibzyklus transferiert werden, führt der Funktionsbaustein selbständig mehrere Schreibzyklen mit entsprechenden Adressoffsets im Quell- und Zielbereich aus. Die Länge der zu schreibenden Daten ist somit nur durch den angegebenen Sendepuffer und den Speicher des Tags limitiert. Die Daten im Sendebereich dürfen während der Bearbeitung des Auftrags nicht verändert werden! Bei Abschluss des Auftrags wird das Ergebnis der Bearbeitung angezeigt (siehe Kapitel 6.4.2). 24 6.4.6 Anzeigen am Ausgangsparameter owStatus Statusanzeigen owStatus Beschreibung 0x0000 Funktion ohne Fehler abgeschlossen 0x1000 warten auf Eingangsparameter ixConnOK = TRUE 0x2000 Startup Signale für den Datenaustausch prüfen 0x2101 0x2102 0x2103 Startup USER-Speicher-Modus aktivieren Startup USER-Speicher lesen synchronisieren Startup USER-Speicher lesen abschließen 0x2201 0x2202 0x2203 Startup USER-Speicher-Modus aktivieren Startup USER-Speicher schreiben synchronisieren Startup USER-Speicher scheiben abschließen 0x2402 0x2403 Startup Diagnosedaten lesen synchronisieren Startup Diagnosedaten lesen abschließen 0x3000 warten auf Eingangsparameter ixAntOff = FALSE 0x7000 Warten auf Start eines Auftrags 0x7101 0x7102 0x7103 USER-Speicher-Modus aktivieren USER-Speicher lesen USER-Speicher lesen abschließen 0x7201 0x7202 0x7203 USER-Speicher Modus aktivieren USER-Speicher beschreiben USER-Speicher beschreiben abschließen 0x7301 0x7302 0x7303 UID Zugriff aktivieren UID lesen UID lesen abschließen 0x7401 0x7402 0x7403 Wechsel zu USER-Speicher oder UID abschließen Diagnosedaten lesen Diagnosedaten lesen abschließen 0x8*** Fehlercode (siehe Tabelle 11) Tabelle 10 25 Fehlercodes owStatus Beschreibung 0x8000 Auswerteeinheit meldet Fehler; Diagnosedaten im Ausgangsparameter oardwDiagData auswerten 0x8101 0x8102 0x8103 0x8104 0x8105 0x8106 Eingangsparameter iiChannelNo ungültig Eingangsparameter iarbDTE102 ungültig Eingangsparameter oarbDTE102 ungültig unterschiedliche Größen der Eingangsparameter iarbDTE102 und Ausgangsparameter oarbDTE102 Eingangsparameter iarbSendBuf ungültig Ausgangsparameter oarbRcvBuf ungültig 0x8201 0x8202 Eingangsparameter ixConnOK = FALSE während der Datenübertragung Timeout; Auswerteeinheit reagiert nicht 0x8301 0x8302 0x8303 0x8304 0x8305 0x8306 0x8307 Start eines Auftrags während Funktionsbaustein beschäftigt ist (oxBusy = TRUE) Start eines Auftrags mit abgeschalteter Antenne (ixAntOff = TRUE) Start von Lese- und Schreibauftrags gleichzeitig Start eines Auftrags ohne Tag im Antennenfeld Eingangsparameter iiRdRwLength <= 0 oder größer als der definierte Empfangsbereich (oarbRcvBuf) Eingangsparameter iiRdRwLength <= 0 oder größer als der definierte Sendebereich (iarbSendBuf) UID schreiben wird vom System nicht unterstützt 0x8401 Empfangsbereich (oarbRcvBuf) zu klein für zyklisch gelesene UID Tabelle 11 26