RFiDMWD7xTAGRd, Netronix MW-D7x RFiD TAG read

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

Questo blocco funzione da eseguire in task Back utilizzabile con modello a cascata, permette di gestire il lettore RFiD Netronix MW-D7x connesso in seriale RS23 o RS485. Attivando Enable è gestito il lettore con indirizzo indicato in Address, sono inviati i comandi indicati nell’array RSSource, in PButton viene ritornato lo stato del tasto. Se un TAG RFiD viene acquisito dl lettore si attiva per un loop TAGAcq ed in TAGCode viene ritornato il codice letto.

Se il TAG rimane nella zona di lettura del lettore viene ciclicamente attivata l’uscita TAGAcq. In caso di errore esecuzione viene attivata per un loop di programma l’uscita Fault ed incrementato il valore in Errors.

Information Circle

Blocco funzione

CODESYS: Non disponibile

LogicLab: eLLabIDAuthLib

Descrizione

Enable (BOOL) Abilitazione blocco funzione. Per rieseguire il comando disabilitare e poi riabilitare questo ingresso.
SpyOn (BOOL) Se attivo permette di spiare il funzionamento del FB (Vedi articolo).
RSSource (BOOL[4]) Array di comandi attuabili sul lettore.
RSSource[0]: Comanda l’uscita logica hardware.
RSSource[1]: Comanda l’accensione del LED verde.
RSSource[2]: Comanda l’Accensione del LED blù.
RSSource[3]: Comanda il buzzer.
Fp (eFILEP) Flusso dati stream di connessione al lettore.
Done (BOOL) Si attiva al termine della esecuzione comando e rimane attiva fino alla disabilitazione di Enable.
Fault (BOOL) Attivo per un loop se errore esecuzione comando.
PButton (BOOL) Stato del tasto sul lettore.
TAGAcq (BOOL) Attivo per un loop se TAG RFiD acquisito.
TAGCode (LWORD) Codice letto dal TAG RFiD.
OKCounter (UDINT) Contatore esecuzioni eseguite correttamente.
Errors (UDINT) Contatore errori esecuzione.

Immagine FB RFiDMWD7xTAGRd

Trigger di spy

Se SpyOn attivo è possibile utilizzare di utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.

Livelli di trigger
TriggerDescrizione
16#00000001Tx: Frame inviato al lettore
16#00000002Rx: Frame ricevuto dal lettore.
16#10000000Lg: Informazione di log
16#40000000Er: Errore esecuzione.

Esempi

Come utilizzare gli esempi.
Viene gestito un lettore di TAG connesso alla porta seriale definita.

LogicLab (Ptp202, ST_RFiDMWD7xTAGRd)
PROGRAM ST_RFiDMWD7xTAGRd
VAR
    TagReaded : BOOL; (* TAG has been readed *)
    TimeBf : ARRAY[0..1] OF UDINT; (* Time buffer (mS) *)
    Sp : SysSerialPort; (* Serial port management *)
    Reader : RFiDMWD7xTAGRd; (* RFiD reader *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_RFiDMWD7xTAGRd"
// *****************************************************************************
// This program manages a TAG reader connected to serial port.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------

    IF (SysFirstLoop) THEN

        // Serial port settings.

        Sp.COM:=ADR('COM0'); //COM port definition
        Sp.Baudrate:=9600; //Baudrate
        Sp.Baudrate:=115200; //Baudrate
        Sp.Parity:='N'; //Parity
        Sp.DataBits:=8; //Data bits
        Sp.StopBits:=1; //Stop bits
        Sp.DTRManagement:=DTR_AUTO_WO_TIMES; //DTR management
        Sp.DTRComplement:=FALSE; //DTR complement
        Sp.EchoFlush:=FALSE; //Received echo flush
        Sp.DTROnTime:=0; //DTR On time delay (mS)
        Sp.DTROffTime:=0; //DTR Off time delay (mS)
        Sp.FlushTm:=0; //Flush time (mS)
        Sp.RxSize:=0; //Rx buffer size
        Sp.TxSize:=0; //Tx buffer size

        // Reader settings.

        Reader.SpyOn:=TRUE; //Spy On
        Reader.Address:=1; //Module address
        Reader.Delay:=T#100ms; //Delay time
    END_IF;

    // -------------------------------------------------------------------------
    // TAG READER MANAGEMENT
    // -------------------------------------------------------------------------
    // Is managed the TAG reader.

    Sp(Open:=TRUE); //Serial port management
    Reader.Enable:=Sp.Opened AND NOT(Reader.Done); //FB enable
    Reader(Fp:=Sp.File); //File pointer

    // When TAG is readed the code is stored and buzzer ring.
    // Please note when buzzer rings the reader still return the code read even
    // if the TAG is not present.  To overtake this behaviour two timers have
    // been used.

    IF (Reader.TAGAcq) THEN
        TimeBf[0]:=SysTimeGetMs(); //Time buffer (mS)
        TimeBf[1]:=SysTimeGetMs(); //Time buffer (mS)

        IF NOT(TagReaded) THEN TagReaded:=TRUE; Reader.RSSource[3]:=TRUE; END_IF;
    END_IF;

    // After a time stop the buzzer and reset readed flag.

    IF ((SysTimeGetMs()-TimeBf[0]) > TO_UDINT(T#100ms)) THEN Reader.RSSource[3]:=FALSE; END_IF;
    IF ((SysTimeGetMs()-TimeBf[1]) > TO_UDINT(T#500ms)) THEN TagReaded:=FALSE; END_IF;

// [End of File]
Was this article helpful?