Este bloco de função de executar na tarefa Voltar utilizável com modelo em cascata, permite que você gerencie o jogador RFID Netronix MW-D7x conectado em serial RS23 ou RS485. Ao ativar Enable o leitor com o endereço indicado em Address, os comandos indicados no array são enviados RSSourceem PButton o status da chave é retornado. Se um RFiD TAG é adquirido pelo leitor, ele é ativado para um loop TAGAcq ed em TAGCode o código de leitura é retornado.
Se o TAG permanecer na área de leitura do leitor, a saída é acionada ciclicamente TAGAcq. No caso de um erro de execução, a saída é ativada para um loop de programa Fault e aumentou o valor em Errors.
Artigos Relacionados
Bloqueio de função
CoDeSys: Indisponível
Laboratório de lógica: eLLabIDAuthLib
descrição
Enable (BOOL) Ativação do bloqueio de função. Para reexecutar o comando, desative e reative esta entrada.
SpyOn (BOOL) Se ativo, permite que você espione o funcionamento do FB (Veja o artigo).
RSSource (BOOL[4]) Matriz de comandos que podem ser implementados no leitor.
RSSource[0]: Comanda a saída lógica do hardware.
RSSource[1]: Comanda o acendimento do LED verde.
RSSource[2]: Comanda o acendimento do LED azul.
RSSource[3]: Controle a campainha.
Fp (eFILEP) Fluxo de conexão do fluxo de dados para o leitor.
Done (BOOL) É ativado ao final da execução do comando e permanece ativo até a desativação do Enable.
Fault (BOOL) Ativo para um loop se houver erro na execução do comando.
PButton (BOOL) Estado da chave no leitor.
TAGAcq (BOOL) Ativo para um loop se RFiD TAG for adquirido.
TAGCode (LWORD) Código lido do RFID TAG.
OKCounter (UDINT) Contador de execuções bem-sucedidas.
Errors (UDINT) Contador de erros de execução.
Gatilho espião
Se SpyOn ativo você pode usar para usar o console de espionagem para verificar o funcionamento do FB. Existem vários níveis de gatilhos.
Níveis de gatilho
Gatilho | descrição |
---|---|
16 00000001 # | Tx: Quadro enviado ao leitor |
16 00000002 # | Rx: Quadro recebido pelo leitor. |
16 10000000 # | Lg: Informações de registro |
16 40000000 # | Er: Erro de execução. |
Exemplos
Como usar os exemplos.
Um leitor de TAG conectado à porta serial definida é gerenciado.
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]