Beispiel iDTRONIC RFID Leser in TwinCAT

Dieses Beispielprogramm ermöglichst die Nutzung eines iDTRONIC RFID Lesers in der TwinCAT SPS.

Die Anbindung geschieht mittels USB und der entsprechende Treiber sorgt für einen virtuellen COM Port. Im Windows Gerätemanager wird dieser Port angezeigt und die zugewiesene Portnummer kann ermittelt sowie ggf. geändert werden.

Beispiel iDTRONIC RFID Leser in TwinCAT 1:

Weitere Vorrausetzungen zur Verwendung des TwinCAT Beispielprogrammes:

TwinCAT 3 Projekt Download: TC3_IdTronicRfid_Sample

Die komplette Applikation befindet sich im Programmbaustein IdTronic_Communication(). Die Hintergrundkommunikation leistet eine Instanz vom Funktionsbaustein SerialLineControlADS aus der Bibliothek Tc2_SerialCom. Nach Parametrierung der Struktur stSendMessage:ST_IdTronic_CommandMessage können verschiedenste Kommando-Nachrichten zum Lesegerät hin abgeschickt werden. Nachrichten werden empfangen und in der Struktur stRcvMessage:ST_IdTronic_ReplyMessage zur weiteren Verarbeitung zur Verfügung gestellt.

Das Lesegerät sendet nur auf Anfrage. Es handelt sich um eine bidirektionale Kommunikation. Es werden keine Transponderkarten automatisch erkannt und dies übermittelt. Hierfür stehen verschiedene Kommandos zur Verfügung.

Um die Hintergrundkommunikation zum RFID Lesegerät zu gewährleisten, muss der korrekte COM Port parametriert werden. Details zur seriellen Hintergrundkommunikation sind mit TF6340 Serielle Kommunikation dokumentiert.

stSerialCfg : ComSerialConfig := ( ComPort:= 7, 
                                   Baudrate:= 9600, 
                                   Parity:= ComParity_t.PARITY_NONE, 
                                   DataBits:= 8, 
                                   StopBits:= ComStopBits_t.STOPBITS_ONE );

Ein korrekt geöffneter Port, wird über die Variable bPortOpened signalisiert. Ist diese TRUE kann die Kommunikation mit dem RFID Lesegerät starten. Hierzu werden die Funtionsbausteine FB_IdTronic_Rfid_RcvMessage und FB_IdTronic_Rfid_SendMessage verwendet, welche über die Pufferinstanzen RxBuffer und TxBuffer mit der Hintergrundkommunikation in Verbindung stehen. Diese zwei Funktionsbausteine bieten Lese- sowie Schreibmöglichkeiten und werden selbst nicht angepasst. Sie sind bereits allgemein implementiert, so dass allein mittels Parametrierung innerhalb vom Programmbaustein IdTronic_Communication eine individuelle Applikation erstellt werden kann.

Es stehen über 40 Kommandos mit der Enumeration E_IdTronic_Command zur Auswahl. Beispielsweise E_IdTronic_Command.MF_GetSRN zur Abfrage der Seriennummer eines Mifare® Transponders. Die Parametrierung der Kommando-Nachricht erfolgt entsprechend dem proprietären Protokoll (siehe Protokolldokumentation im SDK: https://download.idtronic.de/Embedded/Embedded%20HF%20SDK.zip) in der Struktur stSendMessage.

TYPE ST_IdTronic_CommandMessage :
STRUCT
    nStationId : BYTE;
    nDataLength : USINT := 1; // includes the cmd byte and the data bytes
    eCmd : E_IdTronic_Command;
    aData : ARRAY[0..253] OF BYTE;
END_STRUCT
END_TYPE

Nach Anpassung dieser Parameterstruktur kann die Kommando-Nachricht zum RFID Lesegerät hin verschickt werden.

(* send message *)
IF bSendMessage AND NOT fbSendMsg.bBusy THEN
    bSendMessage := FALSE;
    fbSendMsg.bExecuteCmd := TRUE;
    // todo: adapt stSendMessage for the selected command
    fbSendMsg.stSendMessage := stSendMessage;
END_IF
fbSendMsg(TxBuffer:=TxBuffer);

Empfangene Nachrichten werden in der Struktur stRcvMessage dargestellt und müssen nur noch im Detail weiter verarbeitet werden.

(* receive message *)
fbRcvMsg(RxBuffer:=RxBuffer);
IF NOT fbRcvMsg.bBusy AND NOT fbRcvMsg.bError AND fbRcvMsg.bMsgReceived THEN
    stRcvMessage := fbRcvMsg.stRcvMessage;
    // todo: process the received message
END_IF

Der Aufbau von stRcvMessage ist dabei wie folgt:

TYPE ST_IdTronic_ReplyMessage :
STRUCT
    nStationId : BYTE;
    nDataLength : USINT; // includes the status byte and the data bytes
    eStatus : E_IdTronic_StatusCodes;
    aData : ARRAY[0..253] OF BYTE;
END_STRUCT
END_TYPE

Mit diesem Beispielprogramm können in Analogie zu obigem Ablauf komplexe Zustandsmaschinen programmiert werden, in deren Verlauf eine umfangreiche Kommunikation zwischen der TwinCAT SPS und dem iDTRONIC RFID Lesegerät entsteht.