FB_RFIDReader

Die TwinCAT RFID Bibliothek besteht lediglich aus einem Funktionsbaustein.

Dessen Schnittstelle ist weitgehend selbsterklärend. Für einen schnellen Einstieg in die Handhabung der Bibliothek folgt eine Erläuterung der Schnittstellenvariablen.
Ebenso sei auf das Tutorial und die Beispiele hingewiesen.

Die einheitliche Handhabung für alle RFID Reader Modelle und die damit verbundenen aufbereiteten Schnittstellendeklarationen sind besonders anwenderfreundlich.

Allerdings sei darauf hingewiesen, dass der Funktionsbaustein der RFID Bibliothek aufgrund der Unterschiede einiger RFID Reader Modelle einen geringfügigen Overheat besitzt. Diese unabdingbare Eigenschaft wird jedoch stark durch die Vorteile überwogen, welche die verfügbare Flexibilität bietet.

FB_RFIDReader 1:

Eingangsvariablen

VAR_INPUT
    bExecute        : BOOL;
    eCommand        : E_RFID_Command;
    stAccessData    : ST_RFID_AccessData;
    stCtrl          : ST_RFID_Control;
    stCfg           : ST_RFID_ConfigIn;
    eManufacturer   : E_RFID_ReaderManufacturer;
    tTimeOut        : TIME := T#5s;
END_VAR

bExecute

Um Nachrichten des RFID Readers zu empfangen wird der Funktionsbaustein mit FALSE an diesem Eingang aufgerufen.
Der Funktionsbaustein reagiert auf eine positive Flanke von bExecute indem der ausgewählte Befehl eCommand ausgeführt bzw. beim RFID Reader angefragt wird.

eCommand

Der Eingang eCommand bietet eine Auswahl an Befehlen, wie beispielsweise Lesen oder Schreiben eines Transponders, in Form einer Enumeration an. Siehe Beschreibung des Befehlssatzes. Ein Befehl wird ausgeführt, indem der Eingang bExecute gesetzt wird.

stAccessData

Falls ein Schreib- oder Lesebefehl ausgeführt werden soll, müssen mit dieser Eingangsstruktur Parameter übergeben werden. Details zu dieser Struktur: ST_RFID_AccessData

stCtrl

Mit stCtrl können unterschiedliche Kontrollparameter am Eingang übergeben werden. Dazu gehört unter anderem auch die Möglichkeit, Verzögerungszeiten anzugeben. Details zu dieser Struktur: ST_RFID_Control

stCfg

Ein RFID Reader besitzt eine interne Konfiguration. Diese lässt sich bei einigen Geräten auslesen und ändern. An dem Eingang stCfg werden Konfigurationsparameter übergeben, die auf den RFID Reader übertragen werden sollen. Siehe Beschreibung der Konfigurationsmöglichkeiten.
Details zu dieser Struktur: ST_RFID_ConfigIn

eManufacturer

An diesem Eingang wird der Hersteller des verwendeten RFID Reader Modells angegeben. Details zu dieser Enumeration: E_RFID_ReaderManufacturer

tTimeOut

Gibt eine maximale Zeitdauer für die Ausführung des Funktionsbausteines an. Der Defaultwert ist 5 Sekunden.

FB_RFIDReader 2:

Es gilt die Bedingung 'tTimeOut > tPreSendDelay + tPostSendDelay'. Andernfalls wird ein Fehler am Ausgang ausgegeben. Siehe Details zu den Verzögerungszeiten in ST_RFID_Control.

Ein-/Ausgangsvariablen

VAR_IN_OUT
    RxBuffer            : ComBuffer;
    TxBuffer            : ComBuffer;
END_VAR

RxBuffer

Es wird der Empfangspuffer angegeben, welcher als Eingangsvariable deklariert und im TwinCAT System Manager mit der seriellen Klemme verlinkt wurde.
Siehe dazu die Beschreibung der seriellen Anbindung eines RFID Readers.

TxBuffer

Es wird der Ausgangspuffer angegeben, welcher als Ausgangsvariable deklariert und im TwinCAT System Manager mit der seriellen Klemme verlinkt wurde.
Siehe dazu die Beschreibung der seriellen Anbindung eines RFID Readers.

Ausgangsvariablen

VAR_OUTPUT
    bBusy           : BOOL;
    bResponseRcv    : BOOL;
    eResponse       : E_RFID_Response;

    bError          : BOOL;
    iErrorID        : UINT;     (* general RFID error *)
    iErrCodeRcv     : UINT;     (* error received by reader *)

    stReaderCfg     : ST_RFID_Config;
    stReaderInfo    : ST_RFID_ReaderInfo;
    stTranspInfo    : ST_RFID_TranspInfo;
    stRawData       : ST_RFID_RawData;
END_VAR

bBusy

Der Ausgang bBusy wird bei einem gültigen Kommandoaufruf für mindestens einen Takt TRUE. Der Funktionsbaustein darf erst wieder mit bExecute = TRUE für einen erneuten Befehl aufgerufen werden, wenn bBusy zu FALSE gewechselt ist und der Funktionsbaustein somit nicht mehr im aktiven Sendezustand ist. Somit können, wenn bBusy = FALSE erkannt wird, wiederum alle weiteren Ausgangsvariablen bResponseRcv, eResponse, bError, iErrCodeRcv, ... und stRawData ausgewertet werden. Wird zu einem getätigten Kommandoaufruf eine Response erwartet, so bleibt der Funktionsbaustein so lange bBusy = TRUE bis ein Telegram empfangen wird oder das Timeout tTimeOut erreicht wird.
Falls dem Funktionsbaustein Verzögerungszeiten tPreSendDelay und/oder tPostSendDelay mitgegeben wurden, ist bBusy mindestens so lange TRUE wie die Summe dieser Zeiten. Siehe zu dieser Konfigurationseinstellung ST_RFID_Control.

bResponseRcv

Sobald eine Response vom RFID Reader bei der Steuerung eingetroffen ist, wird dieses Flag für mindestens einen Zyklus gesetzt. Mit steigender Flanke zu bResponseRcv = TRUE wird allgemein das Eintreffen eines Telegrams signalisiert. Somit können, wenn dieses Flag erkannt wird, wiederum auch unerwartete Telegramme und die dazugehörigen Ausgangsvariablen eResponse, bError, iErrCodeRcv, ... und stRawData ausgewertet werden.
Wird zu einem getätigten Kommandoaufruf eine Response erwartet, so bleibt der Funktionsbaustein so lange bBusy = TRUE bis ein Telegram empfangen wird. Je nach Kommandoaufruf kann mehr als eine Response eintreffen bevor die Aktion abgeschlossen und bBusy = FALSE ist.
Je nach Konfigurationseinstellung der Verzögerungszeiten in ST_RFID_Control kann bResponseRcv bereits TRUE werden, bevor bBusy wieder auf FALSE wechselt.

eResponse

Sobald bResponseRcv TRUE anzeigt, gibt diese Enumeration die Art der empfangenen Nachricht an. Je nach Art kann beispielsweise die entsprechende Auswertung folgen.
Details zu dieser Enumeration: E_RFID_Response

bError

Der Ausgang bError wird TRUE, sobald ein Fehler auftritt. Dabei kann es sich um fehlerhafte Eingangsparameter, um Übertragungsfehler, um Fehler seitens des RFID Readers oder um ein Timeout handeln.
Welche Art von Fehler aufgetreten ist wird mit der folgenden Ausgangsvariablen iErrorID angezeigt. Details zur Fehlerdarstellung sind im Kapitel Fehlercodes angegeben.

iErrorID

Falls ein Fehler auftritt, wird die Art dieser Fehler am Ausgang iErrorID angezeigt.
Details zu den möglichen FehlerIDs sind im Kapitel Fehlercodes angegeben.

iErrCodeRcv

Der am Ausgang iErrCodeRcv angegebene Fehlercode entspricht dem vom RFID Reader an die Steuerung gesendetem Fehlercode.
Details zur Fehlerdarstellung sind im Kapitel Fehlercodes angegeben.

stReaderCfg

Ein RFID Reader besitzt eine interne Konfiguration. Diese lässt sich bei einigen Geräten auslesen und ändern. Am Ausgang stReaderCfg werden diese ausgelesenen Konfigurationsparameter zur Verfügung gestellt. Details zu dieser Struktur: ST_RFID_Config

stReaderInfo

Jeder RFID Reader besitzt eigene Kenndaten wie Bezeichnung, Hardwareversion etc. Diese Werte, welche unter anderem über den Befehl 'GetReaderVersion' abgefragt werden können, sind in der Ausgangsstruktur stReaderInfo angegeben. Details zu dieser Struktur: ST_RFID_ReaderInfo

stTranspInfo

Die Struktur stTranspInfo enthält Informationen zu dem zuletzt gelesenen Transponder. Hier wird unter anderem die Seriennummer des Transponders ausgegeben. Details zu dieser Struktur: ST_RFID_TranspInfo

stRawData

Die Ausgangsstruktur stRawData gibt die gesendeten sowie die empfangenen Rohdaten aus. Details zu dieser Struktur: ST_RFID_RawData