Bausteinverwendung

Eine effektivere Auswertung der empfangenen Daten können Sie mit folgenden Anweisungen erreichen:

Deklarationen:

fbRFIDReader        : FB_RFIDReader := (eManufacturer := eRFRM_Balluff);
sTranspSerialNumber : STRING;

bBusy       : BOOL;
bError      : BOOL;
iErrorID    : UINT;
iErrCodeRcv : UINT;

stTranspInfo : ST_RFID_TranspInfo;

eErrorID    : E_RFID_ErrID;
eErrCodeRcv : E_RFID_ErrCodeRcv_Balluff;

fbTriggerResponse : R_TRIG;
arrRspRcv         : ARRAY[0..99] OF BYTE;

Programmablauf:

fbRFIDReader(
    bExecute    := FALSE,

    RxBuffer    := RxBuffer,
    TxBuffer    := TxBuffer,

    bBusy       => bBusy,
    bError      => bError,
    iErrorID    => iErrorID,
    iErrCodeRcv => iErrCodeRcv
);
(* convert Error Codes *)
eErrorID := UINT_TO_INT(iErrorID);
eErrCodeRcv := UINT_TO_INT(iErrCodeRcv);

fbTriggerResponse(CLK := fbRFIDReader.bResponseRcv);
IF (fbTriggerResponse.Q) THEN
    stTranspInfo := fbRFIDReader.stTranspInfo;
    sTranspSerialNumber := stTranspInfo.sSerialNumber;     (* detected RFID Tag Serial Number *)

    MEMSET(ADR(arrRspRcv), 0 , SIZEOF(arrRspRcv) );
    MEMCPY(ADR(arrRspRcv), fbRFIDReader.stRawData.pReceivedRsp, MIN(fbRFIDReader.stRawData.iReceivedRspLen, SIZEOF(arrRspRcv)) );
END_IF

Empfangene Fehlercodes können online als Enumeratonswert dargestellt werden, indem die Integer Variablen iErrorID und iErrCodeRcv direkt zugewiesen werden.

Mithilfe eines Triggers werden weitere Daten nur ausgewertet, wenn eine neue Nachricht empfangenen wird.

Die String-Variable sTranspSerialNumber gibt nun immer die Seriennummer des zuletzt detektierten Transponders wieder. Diese ist in diesem Fall ebenso am Funktionsbausteinausgang fbRFIDReader.stTranspInfo.sSerialNumber zu sehen.

Weitere Informationen können je nach Anwendung von den Ausgängen des Funktionsbausteins übernommen werden.

Um eine empfangene Nachricht als komplette Bytefolge anzuzeigen, nutzen Sie beispielsweise die MEMCPY-Funktion und kopieren die Rohdaten in ihr deklariertes Bytearray.

Jede Meldung Ihres RFID Readers wird nun empfangen und in obiger Weise ausgewertet.

Siehe: Test