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.
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.
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