Befehlssatz
Folgende Matrix listet den zur Verfügung stehenden 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 proprietären Protokolle macht es zwangsläufig erforderlich, dass nicht jeder Befehl oder jede detaillierte Parametriermöglichkeit auch über die TwinCAT PLC 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 sind unter der Befehlsbeschreibung 'SendRawData' und im Kapitel Low Level Kommunikation zu finden.
Informationen zu den Eigenschaften und Eigenarten der proprietären Protokolle sind zu jedem Modell vom Hersteller zu beziehen 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 selber 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 ebenso der Ausgangsstruktur ST_RFID_RawData des Funktionsbausteines FB_RFIDReader entnommen werden.
Command | Balluff BIS M-40x | Baltech IDE SD ANT1F | Deister electronic RDL90 | Deister electronic UDL 500 | Deister electronic PRM5M/2V | Leuze electronic RFM12; RFM32; RFM32ex | Pepperl+Fuchs IDENTControl Compact |
---|---|---|---|---|---|---|---|
| x | x | x | x | x | x | |
|
| x | x |
| x | x | |
| x | x | x |
| x |
| |
x | x | x |
|
| x | x | |
|
| x | x | x |
|
| |
|
| x | x |
| x |
| |
|
| x | x |
| x |
| |
|
| x |
|
| x | x | |
x | x | x | x | x | x | x | |
x | x | x | x |
| x | x | |
x | x | x | x |
| x | x | |
|
| x | x |
| x |
| |
|
| x | x |
| x |
| |
| x | x | x |
| x |
| |
| x | x | x |
| x |
| |
x | x | x | x | x | x | x | |
|
|
|
|
|
| x |
Diese Liste ist analog zur Enumeration E_RFID_Command in der RFID SPS Bibliothek.
Eine erfolgreiche Bearbeitung des angefragten Befehls durch den RFID Reader ist an den Statusausgängen des Funktionsbausteines sowie an der jeweiligen Response zu erkennen. Eine Liste möglicher Responses ist unter E_RFID_Response einzusehen.
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 unter ST_RFID_Config erläutert.
Weitere Informationen sind im Kapitel 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 befinden sich unter ST_RFID_ConfigIn.
Es wird empfohlen nach einem Konfigurationsbefehl erneut die aktuelle Konfiguration des Readers mittels dem Befehl GetConfig abzufragen.
Weitere Informationen sind im Kapitel Konfiguration zusammengefasst.
Entsprechung im proprietären Protokoll:
Baltech: System CfgWriteTLVBlock
Deister: 0x09
Leuze: 'C'
GetInventory [16#04]
Mit diesem Befehl wird der Typ und die Seriennummer eines aktuell im Lesefeld befindlichen Transponders abgefragt. Falls 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]
Informationen aus dem Stack des RFID Readers werden abgefragt. Dabei kann es sich beispielsweise um die Seriennummer des letzten Transponders handeln. Es ist zu beachten, dass unterschiedliche RFID Reader verschieden große Stacks besitzen und teils nur eine Nachricht gespeichert wird.
Präsenzerkennung Falls dies nicht über einen Konfigurationsparameter eingestellt werden kann, ist es nötig den Reader mittels zyklischem Polling Kommando lesebereit zu halten, so dass ein Transponder in Reichweite automatisch detektiert wird. |
Entsprechung im proprietären Protokoll:
Deister: 0x0B
TriggerOn [16#06]
Falls der Trigger Mode aktiv ist, kann mit diesem Befehl ein Software Trigger anstatt eines Hardware Triggers ausgelöst werden.
Das darauffolgende Antworttelegramm wird vom Funktionsbaustein der Tc 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]
Falls ein Befehl seitens des RFID Readers in Bearbeitung ist, wird er mit diesem Kommando 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]
Dieses Kommando 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, falls 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, falls 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 [16#0F]
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 Kommando 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 Funktionsbausteines in der Rohdaten Struktur als adressiertes Datenfeld zur Verfügung. Weitere Informationen zum Ablauf im Kapitel Low Level Kommunikation.
Bei Nutzung des Kommandos SendRawData kann eine Auswertung der empfangenen Antwort nicht garantiert werden.
Beispiel: Wird ein Lesebefehl manuell als Bytefolge mittels des Kommandos 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 mit Hilfe der immer angegebenen Rohdaten Struktur geschehen.
ChangeDCType [16#11]
Mit dem Befehl 'ChangeDCType' 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'