ST_RFID_Control
Die Eingangsstruktur stCtrl beinhaltet Variablen, mit denen sich das Verhalten des Funktionsbausteins parametrieren lässt.
Die zwei Variablen tPreSendDelay und tPostSendDelay bieten optional die Möglichkeit Verzögerungszeiten zu parametrieren.
TYPE ST_RFID_Control :
STRUCT
sSelTranspSRN :T_RFID_TranspSRN; (* serial number shown as hex coded string(ascii) *)
tPreSendDelay :TIME; (* condition: tTimeOut > tPreSendDelay + tPostSendDelay *)
tPostSendDelay :TIME; (* condition: tTimeOut > tPreSendDelay + tPostSendDelay *)
iSrcAddrSnd :UDINT; (* RS485 address *)
iDstAddrSnd :UDINT; (* RS485 address *)
bAddrAutoMode :BOOL := TRUE; (* if AutoMode is activated the communication addresses are handled automatically and set addresses are not used. *)
bLogging :BOOL;
iHeadNumber :USINT := 1; (* if multiple read heads are installed at the reader unit, one can be selected *)
iDCType :USINT := 1;
pRawDataCommand :POINTER TO BYTE; (* data input for low level communication *)
iRawDataCommandLen :UINT;
bBufferedCmd :BOOL;
iVHLFileID :USINT := 16#FF; (* selection of VHL file; default 0xFF (ad hoc VHL file of vhlSetup) *)
iCardTypeMask :UINT := 16#FFFF; (* select which card type should be detected via GetInventory; default 0xFFFF (all types) *)
bReselect :BOOL := TRUE; (* with Reselect every GetInventory gets the first item of the reader's detected card list *)
bAcceptConfCard :BOOL := TRUE; (* a read command also accept configuration cards to configure the RFID Reader *)
END_STRUCT
END_TYPE
Mehrere RFID Reader an einem RS485-Netz Eine Unterstützung mehrerer RFID Reader an einem RS485-Netz ist mit der TwinCAT‑RFID‑Bibliothek vorerst nicht gegeben. Es muss je RFID Reader eine separate Verbindung zu einer separaten Klemme erfolgen. In diesem stand-alone Betrieb ist eine individuelle Adressierung mit iSrcAddrSnd und iDstAddrSnd nicht nötig. Die Adressierung kann demnach automatisch von der TwinCAT-RFID-Bibliothek übernommen werden, wozu die Eingangsvariable bAddrAutoMode auf TRUE belassen werden kann. |
Alle Hersteller
Name | Beschreibung |
---|---|
tPreSendDelay | Vor dem Senden eines Kommandos an den RFID Reader wartet der Funktionsbaustein die mit tPreSendDelay angegebene Zeit ab. |
tPostSendDelay | Nach dem Senden eines Kommandos an den RFID Reader wartet der Funktionsbaustein mindestens die mit tPostSendDelay angegebene Zeit ab. Wenn bis dahin die erwartete Response noch nicht eingetroffen ist, wartet der Funktionsbaustein weiter auf die Response bis maximal die angegebene Timeout-Zeit tTimeOut abgelaufen ist. |
iSrcAddrSnd | Quelladresse im Falle der RS485-Kommunikation. Diese Adresse wird verwendet, wenn bAddrAutoMode nicht gesetzt ist. |
iDstAddrSnd | Zieladresse im Falle der RS485-Kommunikation. Diese Adresse wird verwendet, wenn bAddrAutoMode nicht gesetzt ist. |
bAddrAutoMode | Auswahlmöglichkeit im Falle der RS485-Kommunikation. Wenn bAddrAutoMode aktiviert ist [default: TRUE], werden die RS485‑Adressen automatisch zugewiesen. Die oben angegebenen Adressen werden nicht verwendet. Wenn bAddrAutoMode deaktiviert (FALSE) ist, werden oben angegebene Adressen verwendet. |
bLogging | Mit bLogging lässt sich eine zusätzliche Ausgabe aktivieren. Mithilfe von Log View Messages kann so die serielle Kommunikation nachvollzogen werden. Diese Messages werden im Windows Event Viewer sowie im TwinCAT System Manager sichtbar. Dies ist sinnvoll für Test- und Analysezwecke. Das Format der Ausgabe ist nicht festgelegt, um Erweiterungen zu ermöglichen. Beim ersten Aufruf des Funktionsbausteins mit bLogging = TRUE, wird die Ausgabe „Logging initialized“. erzeugt. In diesem ersten Zyklus werden keine Kommunikationsdaten überwacht. |
pRawDataCommand | Der reguläre Funktionsbaustein der TwinCAT-RFID-Bibliothek kann ebenso zur Low-Level-Kommunikation verwendet werden. In dem Fall können Rohdaten direkt an den RFID Reader gesendet werden. Die zu sendenden Rohdaten (z. B. als Bytearray) müssen in dieser Eingangsvariablen angegeben werden. Dabei handelt es sich um einen Pointer auf die zu sendenden Rohdaten. Auf diese Adresse wird von dem Bibliotheksbaustein nur lesend zugegriffen. Weitere Informationen zum Ablauf der Low-Level-Kommunikation sind im Abschnitt Low-Level-Kommunikation zusammengefasst. Am Ausgang können die gesendeten sowie die empfangenen Rohdaten jederzeit mittels der Struktur ST_RFID_RawData eingesehen werden. |
iRawDataCommandLen | Die Eingangsvariable iRawDataCommandLen gibt die Länge in Bytes der mittels dem Pointer pRawDataCommand angegebenen Rohdaten an. |
Balluff
Name | Beschreibung |
---|---|
iHeadNumber | Wenn ein RFID-Lesegerät mit mehreren Leseköpfen angesprochen wird, so wird in der Eingangsvariablen iHeadNumber eine Wahl des Lesekopfes angegeben. |
iDCType | Es kann bei Verwendung von Balluff Readern über iDCType die Blockgröße des Chipspeichers (0→64bytes, 1→32bytes) angegeben werden. |
Baltech
Name | Beschreibung |
---|---|
iVHLFileID | Schreib- und Lesebefehle werden mit der hier ausgewählten VHL-Datei ausgeführt. Diese muss in der Konfiguration des RFID-Gerätes hinterlegt sein. Wenn iVHLFileID den Wert 0xFF [default] hat, so wird der RFID Reader keine normale VHL-Datei aus seiner Konfiguration nehmen, sondern eine einfache Ad-Hoc-Datei, welche gewählt werden kann, um nicht konfigurierte/unverschlüsselte Blankokarten zu verwenden. |
iCardTypeMask | Mithilfe der iCardTypeMask lassen sich bestimmte Transponderkartenfamilien einstellen. Nur die gesetzten Kartentypen werden mit dem Befehl GetInventory erkannt. Alle anderen Kartentypen werden herausgefiltert. Sollen alle Kartentypen erkannt werden, muss dieser Wert nicht verändert werden [default: 0xFFFF]. Für jede akzeptierte Kartenfamilie wird in der iCardTypeMask das jeweilige Bit gesetzt. |
bReselect | Wenn bReselect gesetzt ist [default: TRUE], wird bei jeder Abfrage mit dem Befehl GetInventory ein Transponder am Ausgang angegeben, sofern sich ein Transponder im HF-Feld befindet. Wenn sichergestellt ist, dass sich jeweils nur eine Karte vor dem RFID Reader befindet, sollte diese Einstellung beibehalten werden. Wenn sich mehr als eine Transponderkarte im HF-Feld befindet, existiert im RFID-Gerät eine Liste erkannter Karten. Um alle Transponder mit dem Befehl GetInventory anwählen zu können, sollte bReselect ausgeschaltet [FALSE] werden. Der Befehl GetInventory geht diese Liste dann durch mehrfaches Aufrufen einem nach dem anderen durch. Nachdem die letzte Karte angewählt wurde, folgt die Rückmeldung eRFR_NoTransponder. Erst wenn eine Karte aus den HF-Feld herausgenommen und erneut hineingeführt wird, gibt der Befehl GetInventory den Transponder wieder samt Seriennummer am Ausgang an. |
bAcceptConfCard | Wenn bAcceptConfCard gesetzt ist [default: TRUE], werden mit dem Befehl GetInventory auch Konfigurationskarten erkannt. Es wird automatisch versucht, die darauf vorhandene Konfiguration auf den RFID Reader zu übertragen. Um eine Beeinflussung durch fremde Konfigurationskarten zu verhindern, kann dieser Parameter deaktiviert werden. |
Leuze
Name | Beschreibung |
---|---|
sSelTranspSRN | An der Eingangsvariablen sSelTranspSRN kann die Seriennummer des Transponders, auf den der Befehl (z. B. Read/Write) angewendet werden soll, als String angegeben werden. Der Datentyp ist T_RFID_TranspSRN. |
Pepperl+Fuchs
Name | Beschreibung |
---|---|
iHeadNumber | Wenn ein RFID-Lesegerät mit mehreren Leseköpfen angesprochen wird, so wird in der Eingangsvariablen iHeadNumber eine Wahl des Lesekopfes angegeben. iHeadNumber wird auch als IdentChannel bezeichnet. |
iDCType | Mit dieser Variablen und dem Befehl ChangeDCType kann bei Pepperl+Fuchs Readern der Transpondertyp am Lesekopf eingestellt werden. Mögliche Werte dafür sind im proprietären Protokoll beim Befehl ChangeTag gelistet. (Sie stimmen nicht mit den Werten der Enumeration E_RFID_TranspType überein.) Auszug unterstützter Transpondertypen: |
bBufferedCmd | Die meisten Befehle werden umgehend nach dem Aufruf einmal bearbeitet. Je nach RFID Reader können Befehle dauerhaft anstehen. Dies ermöglicht unter anderem einen Lesevorgang, sobald der RFID Transponder in das Lesefeld kommt, ohne einen extra Befehl dazu abzuschicken. Entweder ist dies in der RFID‑Reader‑Konfiguration konfigurierbar (Balluff, Deister, Leuze) oder mit dieser Eingangsvariablen auswählbar (Pepperl+Fuchs). Ist an einem Lesekopf ein solch gepufferter Befehl aktiv, darf der Trigger Mode nicht für diesen Kanal aktiviert werden bzw. aktiv sein. Ebenso darf kein Rohdatenbefehl abgesetzt werden, welcher diesen Kanal betrifft. |
Verzögerungszeiten
Die zwei Variablen tPreSendDelay und tPostSendDelay bieten optional die Möglichkeit Verzögerungszeiten zu parametrieren. Beide Variablen stellen sicher, dass zwischen zwei Anfragen an den RFID Reader eine Verzögerung abgewartet wird.
Wird die Verzögerungszeit als tPreSendDelay angegeben, so ist eine Verzögerung zwischen dem letzten Antworttelegram und dem nächsten Anfragetelegramm sichergestellt. Soll das Anfragetelegramm möglichst direkt abgeschickt werden, kann tPostSendDelay verwendet werden.
Es gilt die Bedingung tTimeOut > tPreSendDelay + tPostSendDelay. Andernfalls wird ein Fehler am Ausgang ausgegeben.
Im proprietären Protokoll der Balluff RFID Reader ist eine Mindestverzögerungszeit zwischen zwei Befehlen von 300 ms spezifiziert.
Im proprietären Protokoll der Leuze electronic RFID Reader ist eine Mindestverzögerungszeit zwischen Empfang und Befehl von 150 ms spezifiziert.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TC3.1.4013 | PC oder CX (x86, x64) | Tc2_RFID |