Block usage

You can achieve a more effective evaluation of the received data with the following instructions:

Declarations:

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;

Program sequence:

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


Received error codes can be represented online as enumeration values by directly assigning the integer variables iErrorID and iErrCodeRcv.
With the aid of a trigger, further data are only evaluated if a new message is received.
Your string variable sTranspSerialNumber now always shows the serial number of the last detected transponder. In this case this can also be seen at the function block output fbRFIDReader.stTranspInfo.sSerialNumber.
Depending on the application further information are available at the outputs of the function block.

In order to display a received message as a complete byte sequence, use the MEMCPY function, for example, and copy the raw data into your declared byte array.

Each message from your RFID reader is now received and evaluated in the above manner.

nächste Tutorial-Seite