FB_RFIDReader

Die TwinCAT-RFID-Bibliothek besteht lediglich aus einem Funktionsbaustein.

In diesem Abschnitt werden für einen schnellen Einstieg in die Handhabung der Bibliothek die Schnittstellenvariablen des Funktionsbausteins erläutert. Beachten Sie auch das Tutorial und die Beispiele.

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 TwinCAT-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:

Syntax

FUNCTION_BLOCK FB_RFIDREADER
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
VAR_IN_OUT
    RxBuffer      : ComBuffer;
    TxBuffer      : ComBuffer;
END_VAR
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

FB_RFIDReader 2: Eingänge

Name

Typ

Beschreibung

bExecute

BOOL

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

E_RFID_Command

Der Eingang eCommand bietet eine Auswahl an Befehlen, wie beispielsweise das Lesen oder Schreiben eines Transponders, in Form einer Enumeration an.

Ein Befehl wird ausgeführt, indem der Eingang bExecute gesetzt wird.

stAccessData

ST_RFID_AccessData

Wenn ein Schreib- oder Lesebefehl ausgeführt werden soll, müssen mit dieser Eingangsstruktur Parameter übergeben werden.

stCtrl

ST_RFID_Control

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

stCfg

ST_RFID_ConfigIn

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 auch: Konfiguration

eManufacturer

E_RFID_ReaderManufacturer

An diesem Eingang wird der Hersteller des verwendeten RFID‑Reader-Modells angegeben.

tTimeOut

TIME

Gibt eine maximale Zeitdauer für die Ausführung des Funktionsbausteins an. Der Default-Wert ist 5 Sekunden.

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

FB_RFIDReader 3:/FB_RFIDReader 4: Ein-/Ausgänge

Name

Typ

Beschreibung

RxBuffer

ComBuffer

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 im Abschnitt RFID-Reader-Anbindung

TxBuffer

ComBuffer

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 im Abschnitt RFID-Reader-Anbindung

FB_RFIDReader 5: Ausgänge

Name

Typ

Beschreibung

bBusy

BOOL

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.

Wenn zu einem getätigten Kommandoaufruf eine Response erwartet wird, so bleibt der Funktionsbaustein so lange bBusy = TRUE, bis ein Telegramm empfangen wird oder das Timeout tTimeOut erreicht wird.

Wenn dem Funktionsbaustein Verzögerungszeiten tPreSendDelay und/oder tPostSendDelay mitgegeben wurden, ist bBusy mindestens so lange TRUE wie die Summe dieser Zeiten.

Siehe auch: ST_RFID_Control.

bResponseRcv

BOOL

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.

Wenn zu einem getätigten Kommandoaufruf eine Response erwartet wird, so bleibt der Funktionsbaustein so lange bBusy = TRUE, bis ein Telegramm 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

E_RFID_Response

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

bError

BOOL

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 Ausgangsvariablen iErrorID angezeigt. Details zur Fehlerdarstellung sind im Abschnitt Fehlercodes angegeben.

iErrorID

UNIT

Wenn ein Fehler auftritt, wird am Ausgang iErrorID die Art des Fehlers angezeigt. Details zu den möglichen Fehler-IDs sind im Abschnitt Fehlercodes angegeben.

iErrCodeRcv

UINT

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

stReaderCfg

ST_RFID_Config

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.

stReaderInfo

ST_RFID_ReaderInfo

Jeder RFID Reader besitzt eigene Kenndaten wie Bezeichnung, Hardwareversion etc. Diese Werte, die unter anderem über den Befehl GetReaderVersion abgefragt werden können, sind in der Ausgangsstruktur stReaderInfo angegeben.

stTranspInfo

ST_RFID_TranspInfo

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

stRawData

ST_RFID_RawData

Die Ausgangsstruktur stRawData gibt die gesendeten sowie die empfangenen Rohdaten aus.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TC3.1.4013

PC oder CX (x86, x64)

Tc2_RFID