RFID-Fehlercodes

Fehlerausgaben werden an zwei Ausgängen des RFID-SPS-Funktionsbausteins zur Verfügung gestellt. Die beiden Ausgangsvariablen iErrorID und iErrCodeRcv werden im Folgenden erläutert.

iErrorID

Wenn ein Fehler vorliegt, zeigt die Ausgangsvariable iErroID die Art des Fehlers an. Die nachfolgende Liste zeigt die möglichen Werte.

TYPE E_RFID_ErrID :(
    eRFERR_NoError             := 0,

    (* general errors *)
    eRFERR_TimeOutElapsed     := 16#4001,

    (* invalid input parameters *)
    eRFERR_InvalidCommand        := 16#4101,
    eRFERR_IncompatibleCfg       := 16#4102,
    eRFERR_InvalidManufacturer   := 16#4103,
    eRFERR_InvalidTimeOutParam   := 16#4104,
    eRFERR_InvalidRawDataParam   := 16#4105,
    eRFERR_InvalidAccessData     := 16#4106,
    eRFERR_InvalidCfg            := 16#4107,
    eRFERR_InvalidCfgParam       := 16#4108,
    eRFERR_InvalidCtrlHeadNumber := 16#4109,

    (* error at receive of response *)
    eRFERR_InvalidResponse  := 16#4201,
    eRFERR_InvalidRspLen    := 16#4202,
    eRFERR_InvalidBlocksize := 16#4203,
    eRFERR_ErrorRcv         := 16#4204,
    eRFERR_ChecksumError    := 16#4205,

    (* internal errors *)
    eRFERR_UnknownReaderGroup    := 16#4401,
    eRFERR_CreatedTelegramTooBig := 16#4402,
);
END_TYPE

Wenn iErrorID den Wert eRFERR_ErrorRcv besitzt, wurde ein Fehlercode von dem RFID Reader empfangen. Der empfangene Fehlercode wird in der Ausgangsvariablen iErrCodeRcv angegeben.

Bei einem anderen Wert für iErrorID kann zusätzlich vom RFID Reader ein Fehler empfangen worden sein, der auch in der Ausgangsvariablen iErrCodeRcv angezeigt wird.

Wert

ID
(hex)

ID
(dec)

Beschreibung

eRFERR_TimeOutElapsed

0x4001

16385

Dieser Fehler tritt ein, wenn die als Timeout am Eingang (Default = 5 s) angegebene Zeitdauer abgelaufen ist. Eine noch in Bearbeitung befindliche Aktion wird damit abgebrochen.

Es kommt auch zu einem Timeout-Fehler, wenn die serielle Hintergrundkommunikation nicht funktioniert. Dies kann beispielsweise der Fall sein, wenn die falsche Baudrate eingestellt ist oder die Taskzykluszeit nicht ausreicht, um die Daten zu verarbeiten.

Siehe auch: RFID Reader Anbindung und Dokumentation der SPS-Bibliothek Serielle Kommunikation.

eRFERR_InvalidCommand

0x4101

16641

Der Befehl wurde nicht ausgeführt. Der gewählte Befehl kann mit diesem RFID-Reader-Modell nicht ausgeführt werden. Im Befehlssatz sind die zur Verfügung stehenden Befehle gelistet.

Um sicherzustellen, dass das vorliegende RFID‑Reader‑Modell dem Funktionsbaustein bekannt ist, muss, wenn möglich, zu allererst der Befehl „GetReaderVersion“ ausgeführt werden.

eRFERR_IncompatibleCfg

0x4102

16642

Der Befehl wurde nicht ausgeführt. Die aktuelle RFID‑Reader‑Konfiguration (siehe Ausgangsstruktur ST_RFID_Config) ist nicht kompatibel mit dem ausgewählten Befehl (und den dazu gehörigen Eingangsparametern).

Es muss sichergestellt werden, dass die Konfiguration zuvor einmal gelesen wurde. Andernfalls kann ebenso dieser Fehlercode auftreten.

eRFERR_InvalidManufacturer

0x4103

16643

Am Eingang des generischen Funktionsbausteins FB_RFIDReader muss mit der Variablen eManufacturer der RFID-Hersteller des RFID‑Reader‑Modells angegeben werden. Der Fehler eRFERR_InvalidManufacturer signalisiert eine ungültige Angabe.

eRFERR_InvalidTimeOutParam

0x4104

16644

Dieser Fehler wird ausgegeben, wenn die Angabe der Eingangsvariablen tTimeOut ungültig ist. Es gilt die Bedingung tTimeOut > tPreSendDelay + tPostSendDelay.

eRFERR_InvalidRawDataParam

0x4105

16645

Wenn Rohdaten gesendet werden sollen, müssen diese am Eingang des Funktionsbausteins angegeben werden. Der Fehler eRFERR_InvalidRawDataParam wird ausgegeben, wenn die Angabe der Eingangsvariablen pRawDataCommand oder iRawDataCommandLen ungültig ist.

Siehe auch: LowLevel-Kommunikation.

eRFERR_InvalidAccessData

0x4106

16646

Der Befehl wurde nicht ausgeführt, weil die am Eingang angegebenen Parameter in der Struktur ST_RFID_AccessData ungültig sind.

eRFERR_InvalidCfg

0x4107

16647

Der Befehl „Konfiguration ändern“ wurde nicht ausgeführt, weil die angegebenen Konfigurationsdaten ungültig sind. Die Konfigurationsdaten liegen als Konfigurationsstruktur an (bUseCfgReg = FALSE). Im Zweifelsfall sind die genauen gültigen Wertebereiche der Daten in der proprietären Protokollspezifikation durch den Hersteller gegeben.

Wenn die zuletzt gelesene Konfiguration für die in der Konfigurationsstruktur nicht verfügbaren Parameter genutzt wird (bUseCfgDefault = FALSE in ST_RFID_ConfigIn), muss sichergestellt werden, dass die Konfiguration zuvor gelesen wurde. Andernfalls kann ebenso dieser Fehlercode auftreten.

eRFERR_InvalidCfgParam

0x4108

16648

Der Befehl „Konfiguration ändern“ wurde nicht ausgeführt, weil die angegebenen Eingangsparameter der Konfigurationsdaten ungültig sind. Die Konfigurationsdaten sollen als Konfigurationsregister oder Konfigurationsstruktur anliegen. Dessen Länge oder ein anderer Parameter in ST_RFID_ConfigIn sind ungültig.

eRFERR_InvalidCtrlHeadNumber

0x4109

16649

Wenn ein RFID-Lesegerät mit mehreren Leseköpfen angesprochen wird, wird in der Eingangsstruktur ST_RFID_Control eine Wahl des Lesekopfes angegeben. Ist für den angegebenen Wert kein Lesekopf verfügbar, so wird dieser Fehlerwert ausgegeben.

eRFERR_InvalidResponse

0x4201

16897

Wenn die Bytefolge der empfangenen Response keiner bekannten Nachrichtenart entspricht oder einzelne Bytes nicht die erforderlichen Werte aufweisen, wird dieser Fehler ausgegeben. Die empfangenen Daten können als Rohdatenblock am Ausgang ST_RFID_RawData analysiert werden.

eRFERR_InvalidRspLen

0x4202

16898

Wenn die Bytefolge theoretisch einer bekannten Nachrichtenart entspricht, die Länge allerdings nicht der Erwartung entspricht, wird diese Fehlermeldung erzeugt. Die empfangenen Daten können als Rohdatenblock am Ausgang ST_RFID_RawData analysiert werden.

eRFERR_InvalidBlocksize

0x4203

16899

Tritt dieser Fehlerwert ein, so konnten die empfangenen vom Transponder gelesenen Daten nicht ausgewertet werden. Die Anzahl der empfangenen Bytes signalisiert, dass die konfigurierte Blocksize nicht mit der Eingabe beim Befehlsaufruf übereinstimmt.

eRFERR_ErrorRcv

0x4204

16900

Ein Fehlercode wurde mit der empfangenen Nachricht gesendet. Der vom RFID Reader angezeigte Fehler wird ebenso ausgegeben und von der Ausgangsvariablen „iErrCodeRcv“ repräsentiert (Erläuterung am Ende dieses Abschnitts).

eRFERR_ChecksumError

0x4205

16901

Je nach Protokollspezifikation wird eine Checksumme, beispielsweise eine CRC-Prüfsumme, im Telegramm mit gesendet. Wird von der Steuerung ein Telegramm mit fehlerhafter Checksumme empfangen, so wird dieser Fehler ausgegeben.

eRFERR_UnknownReaderGroup

0x4401

17409

Die RFID-Bibliothek teilt die RFID‑Reader‑Modelle intern in Gruppen ein. Der Fehler „eRFERR_UnknownReaderGroup“ kann auftreten, wenn der RFID Reader noch keiner Gruppe zugeordnet ist. Deshalb muss je nach RFID‑Reader‑Modell bei Programmstart als erste Abfrage der Befehl „GetReaderVersion“ ausgeführt werden.

eRFERR_CreatedTelegramTooBig

0x4402

17410

Es wurde versucht, ein Telegramm zu senden, das die maximal mögliche Größe von 300 Bytes überschritten hat. Es können nur Telegramme mit bis zu 300 Bytes versendet werden.

RFID-Fehlercodes 1:

In einigen wenigen Fällen werden vom RFID-Gerät mehrere Telegramme unmittelbar hintereinander versendet. Es ist deshalb wichtig, immer den Fehler zu erkennen und zu beheben, der als Erstes eintraf.

iErrCodeRcv

Wenn vom RFID Reader ein Fehlercode mitgeschickt wird, wird dieser in der Ausgangsvariable iErrCodeRcv ausgegeben. Teilweise werden auch Statusmeldungen vom RFID Reader mitgeschickt und an iErrCodeRcv ausgegeben, die nicht zu einem Fehler führen (bError bleibt FALSE und iErrorID zeigt keinen Fehler).

Eine Liste möglicher Werte kann entweder der Datentypdeklarationen (E_RFID_ErrCodeRcv_Balluff, E_RFID_ErrCodeRcv_Deister, E_RFID_ErrCodeRcv_Leuze usw.) der SPS-RFID-Bibliothek über die TwinCAT-XAE-Bibliothekdetails oder direkt der Protokollspezifikation entnommen werden.

Zur weiteren Fehleranalyse wird auf die Logging-Möglichkeit hingewiesen. Hierzu wird der Eingangsparameter bLogging gesetzt. Details finden Sie in der Parameterbeschreibung in der API.