ST_RFID_CfgStruct_BaltechMifVHLFile
Die Struktur ist für das Schreiben mit dem Befehl eRFC_SetConfig geeignet (siehe RFID-Befehlssatz).
Dabei handelt es sich nicht um die Parametrierung der TwinCAT-RFID-Bibliothek, sondern um die proprietäre Konfiguration des RFID Readers.
TYPE ST_RFID_CfgStruct_BaltechMifVHLFile :
STRUCT
iVHLFile : USINT := 1; (* nr. of VHL file to configure *)
iNrOfKeys : USINT(1..8) := 1;
iNrOfSectors : USINT(1..56) := 16; (* default: 16 sectors -> 1024 bytes mifare card with 752 bytes user data *)
iRC500EEPOffset : USINT := 16#FF;
arrKeyList : ARRAY [0..7] OF T_RFID_MifareKey; (* up to 8 keys, 6 byte each *)
arrSectorList : ARRAY [0..55] OF BYTE (* up to 56 sectors accessible *)
:= 0,1,2,3,4,5,6,7,8,9,10, (* default: 16 sectors -> 1024 bytes mifare card with 752 bytes user data *)
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55;
arrRdKeyAssign : ARRAY [0..55] OF BYTE; (* Key index for each sector *)
arrWrKeyAssign : ARRAY [0..55] OF BYTE; (* Key index for each sector *)
bMAD_Mode : BOOL := FALSE; (* use MAD AID [default = FALSE] *)
iMAD_AID : USINT;
iReserved : INT;
END_STRUCT
END_TYPE
Struktur einer Mifare-Karte (bis 2 KB Speicher):
Eine Mifare-Karte mit 1 KB Speicher besitzt 16 Sektoren a 64 Byte. Jeder Sektor beinhaltet 4 Blöcke. Sektor 0 besteht aus Block 0-3, Sektor 1 aus Block 4-7 und folgende Sektoren bilden sich analog dazu. In der Darstellung entspricht eine Spalte jeweils einem Sektor, während ein Kästchen einen Block a 16 Byte repräsentiert.
Nur die weiß dargestellten Blöcke beinhalten für den Nutzer verwendbaren Speicherbereich. Die maximale Größe der Nutzdaten ist demnach 752 Bytes (47 x 16 Byte) bei einer 1024 Byte großen Mifare-Karte.
Name | Beschreibung |
---|---|
iVHLFile | Mit iVHLFile wird die Nummer der zu konfigurierenden VHL-Datei angegeben. In der Konfiguration des RFID-Gerätes können mehrere VHL‑Dateien nebeneinander existieren. |
iNrOfKeys | Mit iNrOfKeys wird die erforderliche Anzahl an Schlüsseln vorgegeben. Es können 1 bis 8 Schlüssel definiert werden. |
iNrOfSectors | Mit iNrOfSectors wird die Anzahl an Sektoren angegeben, die für Nutzdaten verwendet werden sollen. Eine 1-KB-Mifare-Karte besitzt 16 Sektoren [default: 16]. Beispiel: Sollen nur die Sektoren 4-6 verwendet werden, so wird iNrOfSectors = 3 angegeben. |
iRC500EEPOffset | Dieser Parameter betrifft die interne Übertragung der Schlüssel innerhalb der Hardware des RFID-Gerätes. Die Standardeinstellung [default: 16#FF] garantiert erhöhte Sicherheit. Eine Änderung wird nicht empfohlen. |
arrKeyList | In dem Array arrKeyList werden alle Schlüssel hinterlegt. Ein Schlüssel ist vom Typ T_RFID_MifareKey und besteht aus 6 Byte. Beispiel: Sollen zwei Schlüssel verwendet werden, so werden bei arrKeyList[0] und arrLeyList[1] die jeweiligen Schlüssel hinterlegt. TYPE T_RFID_MifareKey : |
arrSectorList | In dem Array arrSectorList werden alle Sektoren hinterlegt, die für Nutzdaten verwendet werden sollen. Beispiel: Sollen nur die Sektoren 4-6 verwendet werden, so wird arrSectorList[0]=4, arrSectorList[1]=5, arrSectorList[2]=6 angegeben. Das Array ist bereits mit durchlaufender Nummerierung initialisiert. In den meisten Fällen muss deshalb keine Änderung vorgenommen werden. |
arrRdKeyAssign | In dem Array arrRdKeyAssign wird der Schlüsselindex für jeden verwendeten Sektor hinterlegt. Beispiel: Bei einer 1-KB-Mifare-Karte sollen alle Sektoren verwendet werden (iNrOfSectors = 16). Zwei Schlüssel werden verwendet (iNrOfKeys = 2) Die erste Hälfte der Sektoren auf dieser Karte ist mit dem ersten Schlüssel (arrKeyList[0]) zu lesen und die zweite Hälfte mit dem zweiten Schlüssel (arrKeyList[1]). In dem Array arrRdKeyAssign müssen demnach die Indizes stCfg : ST_RFID_CfgStruct_BaltechMifVHLFile := (arrRdKeyAssign:=0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1); hinterlegt werden. Soll für alle Sektoren ein Schlüssel verwendet werden, handelt es sich für alle Sektoren um den Schlüsselindex 0. Das Array ist bereits mit 0 initialisiert. Deshalb muss in diesem Fall keine Änderung vorgenommen werden. |
arrWrKeyAssign | In dem Array arrWrKeyAssign wird der Schlüsselindex für jeden verwendeten Sektor hinterlegt. Beispiel: Bei einer 1-KB-Mifare-Karte sollen alle Sektoren verwendet werden (iNrOfSectors = 16). Zwei Schlüssel werden verwendet (iNrOfKeys = 2) Die erste Hälfte der Sektoren auf dieser Karte ist mit dem ersten Schlüssel (arrKeyList[0]) zu beschreiben und die zweite Hälfte mit dem zweiten Schlüssel (arrKeyList[1]). In dem Array arrWrKeyAssign müssen demnach die Indizes stCfg:ST_RFID_CfgStruct_BaltechMifVHLFile:=(arrWrKeyAssign:=0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1); hinterlegt werden. Soll für alle Sektoren ein Schlüssel verwendet werden, handelt es sich für alle Sektoren um den Schlüsselindex 0. Das Array ist bereits mit 0 initialisiert. Deshalb muss in diesem Fall keine Änderung vorgenommen werden. |
bMAD_Mode | Wenn MAD (Mifare Application Directory) mit AIDs (Application Identifiers) anstatt der Sektorzuweisung verwendet werden soll, so muss bMAD_Mode gesetzt (TRUE) werden. Als Standard wird jedoch die Sektorzuweisung verwendet [default: FALSE]. |
iMAD_AID | Der Eingang wird nur benötigt, wenn MAD (Mifare Application Directory) verwendet wird (bMAD_Mode = TRUE). Am Konfigurationseingang iMAD_AID wird die MAD AID (Application Identifier) für die VHL-Datei angegeben. |
Weitere Informationen zum Ablauf der RFID-Reader-Konfiguration sind im Abschnitt Konfiguration zusammengefasst.
Detaillierte Informationen zu den Themen VHL-Datei und Konfiguration von Baltech RFID-Geräten finden Sie zudem in den herstellereigenen Dokumentationen Mifare.pdf und ConfigurationValues.pdf im Baltech SDK.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TC3.1.4013 | PC oder CX (x86, x64) | Tc2_RFID |