Acest bloc funcțional de la rulați în sarcina Înapoi utilizabil cu model de cascadă, vă permite să gestionați playerul RFID Netronix MW-D7x conectat în serial RS23 sau RS485. Prin activare Enable cititorul cu adresa indicată în Address, sunt trimise comenzile indicate în matrice RSSource, În PButton se returnează starea cheii. Dacă un TAG RFiD este achiziționat de cititor, acesta este activat pentru o buclă TAGAcq și în TAGCode codul citit este returnat.
Dacă TAG rămâne în zona de citire a cititorului, ieșirea este activată ciclic TAGAcq. În caz de eroare de execuție, ieșirea este activată pentru o buclă de program Fault și a crescut valoarea în Errors.
Articole pe aceeași temă
Blocarea funcției
CODESYS: Indisponibil
LogicLab: eLLabIDAuthLib
Descriere
Enable (BOOL) Activarea blocării funcției. Pentru a reexecuta comanda, dezactivați și apoi reactivați această intrare.
SpyOn (BOOL) Dacă este activ, vă permite să spionați funcționarea FB (Vezi articolul).
RSSource (BOOL[4]) Matrice de comenzi care pot fi implementate pe cititor.
RSSource[0]: Comandă ieșirea logică hardware.
RSSource[1]: Comandă aprinderea LED-ului verde.
RSSource[2]: Comandă aprinderea LED-ului albastru.
RSSource[3]: Controlați soneria.
Fp (eFILEP) Flux de conexiune flux de date către cititor.
Done (BOOL) Este activat la sfârșitul executării comenzii și rămâne activ până la dezactivarea Enable.
Fault (BOOL) Activ pentru o buclă dacă eroare de execuție a comenzii.
PButton (BOOL) Starea butonului de pe cititor.
TAGAcq (BOOL) Activ pentru o buclă dacă TAG RFiD a fost achiziționat.
TAGCode (LWORD) Cod citit de pe eticheta RFID.
OKCounter (UDINT) Contor de execuții reușite.
Errors (UDINT) Contor erori de execuție.
Declanșatorul spionului
Se SpyOn activ, puteți utiliza pentru a utiliza consola de spionaj pentru a verifica funcționarea FB. Există diferite niveluri de declanșatoare.
Niveluri de declanșare
trăgaci | Descriere |
---|---|
16 # 00000001 | Tx: Cadrul trimis cititorului |
16 # 00000002 | Rx: Cadrul primit de cititor. |
16 # 10000000 | Lg: Informații de jurnal |
16 # 40000000 | Er: Eroare de execuție. |
Exemple
Cum se utilizează exemplele.
Este gestionat un cititor de TAG conectat la portul serial definit.
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]