RFID-Befehlssatz

Die nachfolgende Matrix listet den zur Verfügung stehenden RFID-Befehlssatz auf.

Wegen der grundsätzlichen Unterschiede der verschiedenen RFID-Reader-Modelle können nicht alle Befehle bei jedem Modell zur Verfügung gestellt werden.

Die Komplexität mancher propietärer Protokolle macht es erforderlich, dass nicht jeder Befehl oder jede detaillierte Parametriermöglichkeit auch über die TwinCAT-SPS-Bibliothek gegeben sein kann. In Einzelfällen kann deshalb auf die weniger komfortable Kommunikationsmöglichkeit mittels dem angebotenen LowLevel Interface zurückgegriffen werden. Informationen dazu finden Sie in der Beschreibung des Befehls SendRawData und im Abschnitt Low‑Level‑Kommunikation.

Informationen zu den Eigenschaften und Eigenarten der proprietären Protokolle können zu jedem Modell vom Hersteller bezogen werden und werden meist mit dem Gerät mitgeliefert. Diese Protokoll‑Spezifikationen sollten zumindest beim Anwender vorhanden sein, um Detailfragen recherchieren zu können und Eigenarten des RFID Readers nachzulesen. Auf die Eigenarten der einzelnen RFID Reader wird bereits, soweit möglich, an den speziellen Stellen innerhalb dieser Dokumentation hingewiesen. Allerdings bleibt der Hersteller der RFID-Geräte weiterhin selbst in der Verantwortung seine Geräte zu beschreiben und deren Verhalten und Eigenschaften zu gewährleisten. Eine detaillierte Beschreibung jedes Befehls und des speziellen Verhaltens des RFID Readers ist in den proprietären Protokoll-Spezifikationen gegeben. Welcher herstellerproprietäre Befehl dem hier gelisteten Befehl entspricht, wird im Folgenden jeweils kursiv angegeben. Details können Sie ebenso der Ausgangsstruktur ST_RFID_RawData des Funktionsbausteins FB_RFIDReader entnehmen.

Command

Balluff
BIS M-40x
BIS L-60x0

Baltech IDE SD ANT1F

Deister electronic RDL90

Deister electronic UDL 500

Deister electronic PRM5M/2V

Leuze electronic RFM12; RFM32; RFM32ex

Pepperl+Fuchs IDENTControl Compact

GetReaderVersion

 

x

x

x

x

x

x

GetConfig

 

 

x

x

 

x

x

SetConfig

 

x

x

x

 

x

 

GetInventory

x

x

x

 

 

x

x

Polling

 

 

x

x

x

 

 

TriggerOn

 

 

x

x

 

x

 

TriggerOff

 

 

x

x

 

x

 

AbortCommand

 

 

x

 

 

x

x

ResetReader

x

x

x

x

x

x

x

ReadBlock

x

x

x

x

 

x

x

WriteBlock

x

x

x

x

 

x

x

OutputOn

 

 

x

x

 

x

 

OutputOff

 

 

x

x

 

x

 

FieldOn

 

x

x

x

 

x

 

FieldOff

 

x

x

x

 

x

 

SendRawData

x

x

x

x

x

x

x

ChangeDCType

 

 

 

 

 

 

x

Diese Liste ist analog zur Enumeration E_RFID_Command in der TwinCAT-RFID-Bibliothek.
Eine erfolgreiche Bearbeitung des angefragten Befehls durch den RFID Reader erkennen Sie an den Statusausgängen des Funktionsbausteins sowie an der jeweiligen Response. Eine Liste möglicher Responses finden Sie in der Beschreibung der Enumeration E_RFID_Response.

Im Folgenden werden die Befehle im Einzelnen erläutert:

GetReaderVersion [16#01]

Mit diesem Befehl können Informationen zum RFID Reader abgefragt werden. Je nach Verfügbarkeit wird die Modellbezeichnung, die Hard- und Softwareversion des Readers etc. am Bausteinausgang in der Struktur ST_RFID_ReaderInfo ausgegeben.

Entsprechung im proprietären Protokoll:
Deister: 0x02
Leuze: 'V'
Pepperl+Fuchs: 'VE'
Baltech: System GetInfo

GetConfig [16#02]

Mit diesem Befehl wird die aktuelle Konfiguration des RFID Readers abgefragt. Alle relevanten empfangenen Parameter werden in der Beschreibung der Struktur ST_RFID_Config erläutert. Weitere Informationen sind im Abschnitt Konfiguration zusammengefasst.

Entsprechung im proprietären Protokoll:
Deister: 0x09
Leuze: 'G'
Pepperl+Fuchs: 'GS'

SetConfig [16#03]

Parametrierte Konfigurationseinstellungen können auf den RFID Reader übertragen werden. Nähere Informationen zur möglichen Konfiguration des RFID Readers finden Sie in der Beschreibung der Struktur ST_RFID_ConfigIn.

Es wird empfohlen, nach einem Konfigurationsbefehl erneut die aktuelle Konfiguration des Readers mittels des Befehls GetConfig abzufragen. Weitere Informationen sind im Abschnitt Konfiguration zusammengefasst.

Entsprechung im proprietären Protokoll:
Baltech: System CfgWriteTLVBlock
Deister: 0x09
Leuze: 'C'

GetInventory [16#04]

Mit diesem Befehl werden der Typ und die Seriennummer eines aktuell im Lesefeld befindlichen Transponders abgefragt. Wenn kein Transponder gefunden wird, folgt eine entsprechende Response.

Pepperl+Fuchs: Mit dem Parameter iHeadNumber in der Struktur ST_RFID_Control wird festgelegt, für welchen Lesekopf der Befehl auszuführen ist.

Entsprechung im proprietären Protokoll:
Balluff: 'U'
Deister: 0x82
Leuze: 'I'
Pepperl+Fuchs: 'SF' & 'EF'
Baltech: VHLSelect + VHLGetSnr

Polling [16#05]

Mit diesem Befehl werden Informationen aus dem Stack des RFID Readers abgefragt. Dabei kann es sich beispielsweise um die Seriennummer des letzten Transponders handeln. Beachten Sie, dass unterschiedliche RFID Reader verschieden große Stacks besitzen und teils nur eine Nachricht gespeichert wird.

Präsenzerkennung: Wenn dies nicht über einen Konfigurationsparameter eingestellt werden kann, ist es nötig, den Reader mittels zyklischem Polling-Befehl lesebereit zu halten, sodass ein Transponder in Reichweite automatisch detektiert wird.

Entsprechung im proprietären Protokoll:
Deister: 0x0B

TriggerOn [16#06]

Wenn der Trigger Mode aktiv ist, kann mit diesem Befehl ein Software Trigger anstatt eines Hardware Triggers ausgelöst werden. Das darauffolgende Antworttelegramm wird von dem Funktionsbaustein der TwinCAT‑RFID‑Bibliothek empfangen. Eine Zuweisung von gelesenen Transponderdaten ist in dem Fall nicht gegeben. Die empfangenen Rohdaten können zur weiteren Verarbeitung dem Bausteininterface entnommen werden.

Entsprechung im proprietären Protokoll:
Deister: 0x85
Leuze: '+'

TriggerOff [16#07]

Siehe TriggerOn.

Entsprechung im proprietären Protokoll:
Deister: 0x85
Leuze: '-'

AbortCommand [16#08]

Wenn ein Befehl seitens des RFID Readers in Bearbeitung ist, wird er mit diesem Befehl abgebrochen.

Pepperl+Fuchs: Mit dem Parameter iHeadNumber in der Struktur ST_RFID_Control wird festgelegt für welchen Lesekopf der Befehl auszuführen ist.

Entsprechung im proprietären Protokoll:
Leuze: 'H'
Pepperl+Fuchs: 'QU'

ResetReader [16#09]

Dieser Befehl veranlasst den RFID Reader, ein Reset durchzuführen.

Entsprechung im proprietären Protokoll:
Balluff: 'Q'
Deister: 0x01
Leuze: 'R'
Pepperl+Fuchs: 'RS'
Baltech: System Reset

ReadBlock [16#0A]

Mit diesem Befehl wird eine bestimmte Anzahl von Datenbytes in Form von Blöcken definierter Größe aus dem Speicher des Transponders gelesen.

Für diesen Befehl ist die Übergabe der Eingangsstruktur ST_RFID_AccessData nötig.

Bevor Daten vom Transponder gelesen werden, ist es üblich den Transponder zu erkennen und auszuwählen (siehe Befehl GetInventory).

Pepperl+Fuchs: Mit dem Parameter iHeadNumber in der Struktur ST_RFID_Control wird festgelegt, für welchen Lesekopf der Befehl auszuführen ist.

Entsprechung im proprietären Protokoll:
Balluff: 'L'
Deister: 0x83
Leuze: 'N'
Pepperl+Fuchs: 'SR' & 'ER'
Baltech: VHLRead

WriteBlock [16#0B]

Mit diesem Befehl wird eine bestimmte Anzahl von Datenbytes in Form von Blöcken definierter Größe in den Speicher des Transponders geschrieben.

Für diesen Befehl ist die Übergabe der Eingangsstruktur ST_RFID_AccessData nötig.

Bevor Daten auf einen Transponder geschrieben werden, ist es üblich den Transponder zu erkennen und auszuwählen (siehe Befehl GetInventory).

Pepperl+Fuchs: Mit dem Parameter iHeadNumber in der Struktur ST_RFID_Control wird festgelegt, für welchen Lesekopf der Befehl auszuführen ist.

Entsprechung im proprietären Protokoll:
Balluff: 'P'
Deister: 0x84
Leuze: 'W'
Pepperl+Fuchs: 'SW' & 'EW'
Baltech: VHLWrite

OutputOn [16#0C]

Der Befehl setzt den Schaltausgang des RFID Readers permanent auf TRUE. Dies ist nur möglich, wenn der Schaltausgang nicht per Konfiguration automatisch angesprochen wird.

Entsprechung im proprietären Protokoll:
Deister: 0x0F
Leuze: 'A0FF'

OutputOff [16#0D]

Der Befehl setzt den Schaltausgang des RFID Readers permanent auf FALSE. Dies ist nur möglich, wenn der Schaltausgang nicht per Konfiguration automatisch angesprochen wird.

Entsprechung im proprietären Protokoll:
Deister: 0x0F
Leuze: 'A000'

FieldOn [16#0E]

Mit diesem Befehl kann das RFID‑Feld angeschaltet werden.

Entsprechung im proprietären Protokoll:
Deister: 0x81
Leuze: 'F1'
Baltech: System HFReset

FieldOff

Mit diesem Befehl kann das RFID-Feld ausgeschaltet werden. Je nach RFID-Reader-Modell wird das Feld bei Trigger o.a. automatisch wieder aktiv.

Entsprechung im proprietären Protokoll:
Deister: 0x81
Leuze: 'F2'
Baltech: System HFReset

SendRawData [16#10]

Mit diesem Befehl kann der RFID-Funktionsbaustein als Low-Level-Schnittstelle genutzt werden. Die zu übermittelnden Daten werden in der Control-Struktur als Pointer übergeben. Bibliotheksintern wird ein Telegramm zusammengesetzt und versendet. Es können auf diese Art und Weise beliebige Daten an den RFID Reader gesendet werden. Die daraufhin empfangenen Daten stehen am Ausgang des Funktionsbausteins in der Rohdatenstruktur als adressiertes Datenfeld zur Verfügung. Weitere Informationen zum Ablauf finden Sie im Abschnitt Low-Level-Kommunikation.

Bei Nutzung des Befehls SendRawData kann eine Auswertung der empfangenen Antwort nicht garantiert werden.

Beispiel: Wird ein Lesebefehl manuell als Bytefolge mittels des Befehls SendRawData versandt, so werden empfangene Transponderdaten nicht auf eine in ST_RFID_AccessData angegebene Adresse geschrieben. Eine Auswertung/Speicherung der Daten sollte demnach auch manuell mithilfe der immer angegebenen Rohdatenstruktur geschehen.

ChangeDCType [16#11]

Mit diesem Befehl kann der Transpondertyp am Lesekopf eingestellt werden. Dazu wird mittels iDCType in ST_RFID_Control der Typ angegeben.

Pepperl+Fuchs: Mit dem Parameter iHeadNumber in der Struktur ST_RFID_Control wird festgelegt, für welchen Lesekopf der Befehl auszuführen ist.

Entsprechung im proprietären Protokoll:
Pepperl+Fuchs: 'CT'