Low Level Kommunikation
Die PLC RFID Bibliothek bietet neben dem High Level Befehlssatz auch die Möglichkeit der Low Level Kommunikation. Dies ist implizit gelöst. Es wird derselbe Funktionsbaustein verwendet.
Es können beliebige Telegramme bis zu einer maximalen Größe von 1024 Bytes empfangen und bis zu einer Größe von 300 Bytes versendet werden.
Ein gesamtes Telegramm setzt sich dabei wie folgt zusammen:
| Prefix | Adressierung | Rohdaten | CRC | Suffix |
Je nach proprietärer Protokollspezifikation können einzelne Bestandteile fehlen. Generell ist die Zusammensetzung aber gleich.
Senden
Dazu wird als Befehl eRFC_SendRawData aus dem Befehlssatz verwendet und die zu sendenden Rohdaten in der Eingangsstruktur ST_RFID_Control angegeben.
Um ein Low Level Telegramm abzusenden werden nur die Rohdaten angegeben. Die anderen Bestandteile des Telegramms werden automatisch von der PLC RFID Library ergänzt. Ebenso werden Prüfdaten wie CRC intern erzeugt und eingefügt.
Falls das Protokoll eine Umkodierung von bestimmten Bytes innerhalb der Rohdaten verlangt, wird dies ebenfalls automatisch von der PLC RFID Library vorgenommen und muss nicht mitbedacht werden. |
Falls es sich um eine RS485 Schnittstelle handelt, so muss die Adressierung gesondert angegeben werden. Sie darf nicht mit in den angegebenen Rohdaten enthalten sein. Per Default wird die Adressierung automatisch von der Bibliothek übernommen. Sie kann allerdings über Eingangsvariablen in ST_RFID_Control parametriert werden. |
Die zuletzt gesendeten Rohdaten können jederzeit am Ausgang des Funktionsbausteines mit Hilfe der Struktur ST_RFID_RawData eingesehen werden. Dies ist unabhängig vom verwendeten Befehl.
Empfangen
Die zuletzt empfangenen Rohdaten können jederzeit am Ausgang des Funktionsbausteines mit Hilfe der Struktur ST_RFID_RawData eingesehen werden.
Die zugehörige Adressierung ist in der Struktur ST_RFID_ReaderInfo ausgegeben.
Bei Nutzung des Kommandos SendRawData kann eine direkte 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 ST_RFID_RawData geschehen. Bei den angegebenen Rohdaten handelt es sich um das empfangene Telegramm, allerdings ohne Prefix, Suffix, Checksum, CRC oder Shift-Sequence-Kodierung.
Falls das empfangene Telegramm nicht regulär von dem Funktionsbaustein ausgewertet wurde, wird dies zudem über einen Fehler signalisiert.
Um die empfangenen Daten nutzen zu können, müssen diese beispielsweise auf ein Bytearray kopiert werden.
Beispiel einer Zuweisung von empfangenen Daten mit Hilfe der Funktion MEMCPY():
fbRFIDReader : FB_RFIDReader;
arrReceivedData : ARRAY [0..511] OF BYTE;
MEMSET( ADR(arrReceivedData), 0, SIZEOF(arrReceivedData) );
MEMCPY( ADR(arrReceivedData), fbRFIDReader.stRawData.pReceivedRsp, MIN(fbRFIDReader.stRawData.iReceivedRspLen, SIZEOF(arrReceivedData)) );
Balluff RFID Reader: Die Endekennung (LF CR) wird als Suffix zur Erkennung von Telegrammen genutzt. Sobald diese 2 Bytes im Datenstrom erkannt werden, werden vorherige Daten zu einem Telegramm zusammengefasst. |