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.
Articoli correlati
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.
Address (BYTE) Indirizzo modulo.
Delay (TIME) Tempo di pausa tra interrogazioni.
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.
TAGDetect (BOOL) Attiva se TAG RFiD è davanti al 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.

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
Trigger | Descrizione |
---|---|
16#00000001 | Tx: Frame inviato al lettore |
16#00000002 | Rx: Frame ricevuto dal lettore. |
16#10000000 | Lg: Informazione di log |
16#40000000 | Er: 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
TimeBf : UDINT; (* Time buffer (mS) *)
Sp : SysSerialPort; (* Serial port management *)
TAGCode : LWORD; (* TAG code *)
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.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
// On TAG read code is stored, blue LED is switched on and buzzer rings.
IF (Reader.TAGAcq) THEN
TimeBf:=SysTimeGetMs(); //Time buffer (mS)
TAGCode:=Reader.TAGCode; //TAG code
Reader.RSSource[2]:=TRUE; //Blue LED On
Reader.RSSource[3]:=TRUE; //Buzzer On
END_IF;
// After a time switch off blue LED and the buzzer.
IF ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#200ms)) THEN Reader.RSSource[2]:=FALSE; END_IF;
IF ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#500ms)) THEN Reader.RSSource[3]:=FALSE; END_IF;
// [End of File]