Buenas tardes Cristian,
Ya esta actualizado el software para el soporte del protocolo Wiegand 26 para leer tarjetas RF de identificación.
Lo primero que hay que hacer es actualizar:
Una vez actualizado firmware y software, hay que configurar la placa para usar el protocolo Wiegand 26 en el puerto de expansión.
Esto se hace una vez por cada placa desde StxLadder, en "
PLC > Configurar PLC". Conectar al PLC y luego en pestaña "
Expansión" hacer click en "
Wiegand: Hardware compatible". Ver imagen que paso adjunta.
Luego, el harware Wiegand debe conectarse al puerto de expansión
HP2/HP3 de la siguiente forma:
- DATA0 conectar a /EXP_INT (pin 6). Tensión no debe sobre pasar +5Vcc.
- DATA1 conectar a /BOOTL (pin 7). Tensión no debe sobre pasar +5Vcc.
- GND a GND, es importante que esten conectados para así compartir masas entre equipos (puede ser al puerto de expansión o bornera del PLC).
- Alimentación a 12VCC (puede ser del puerto de expansión o bornera del PLC).
Importante-1: La conexión debe hacerse con el PLC apagado y luego de configurar el hardware desde StxLadder.
Importante-2: Consultar
hoja de datos del dispositivo para limites eléctricos e identificación de pines en puerto de expansión.
Así mismo te tengo armado un cable especial para conectar al lector de tarjeta y al puerto RS232.
Llámame para coordinar.
FUNCIONES PAWN DISPONIBLES PARA PROTOCOLO WIEGAND 26El ejemplo
Wiegand.zip que se adjunta en este mensaje contiene el modo de uso.
WiegandInit(): Inicializa la librería Wiegand. Debe llamarse antes de cualquier función.
RETORNO:- 0 : Operación exitosa.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
WiegandCheckValidity(): Comprueba si el ultimo dato recibido con el protocolo Wiegand 26 es valido.
RETORNO:- 0 : Datos no validos.
- 1 : Datos validos.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
Nota: El software del PLC comprueba validez del protocolo utilizando los Bit de paridad Par/Impar provistos por la trama recibida. Si la paridad coincide con los datos recibidos, se acepta como valida. Esto permite identificar tramas erroneas generadas por ruido o por hardware no compatible.
WiegandGetCardNumber(): Obtiene el ultimo "Card Number" recibido con el protocolo Wiegand 26.
RETORNO:- >=0 : Card Number, valor de 16-bits.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
WiegandGetFacilityCode(): Obtiene el ultimo "Facility Code" recibido con el protocolo Wiegand 26.
RETORNO:- >=0 : Facility Code, valor de 8-bits.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
WiegandGetFrame(): Obtiene el ultimo "Frame" recibido con el protocolo Wiegand 26. Es decir la secuencia completa de 26 bits sin procesar.
RETORNO:- >=0 : Frame, valor de 26-bits.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
WiegandSetEvent(): Activa el evento @OnWiegand() que es llamado cuando datos son recibidos del hardware Wiegand conectado al puerto de expansión.
RETORNO:- 0: Evento activado.
- -1: Error, no pudo activarse evento.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
WiegandClrEvent(): Desactiva el evento @OnWiegand().
RETORNO:- 0: Evento desactivado.
- -1: Error, no pudo desactivarse el evento.
- -500: Error, Wiegand hardware no esta declarado desde StxLadder / Config.
EJEMPLOVer archivo
Wiegand.zip adjunto.
// ********************************************************************************
// Funcion : PlcMain()
// Descripcion : Punto de entrada principal del PLC.
// ********************************************************************************
PlcMain()
{
//
// Incializar puerto de expansion para
// utilizar protocolo Wiegand.
//
WiegandInit()
WiegandSetEvent()
//
// Mensaje de bienvenida.
//
LcdClear()
LcdPrintf(0,0, "PASS CARD")
LcdPrintf(0,1, "PLEASE")
//
// Loop principal
//
for(;;)
{
DelayMS(500)
LedToggle()
}
// Retorno.
return 0
}
// ********************************************************************************
// Funcion : @OnWiegand()
// Descripcion : Evento generado cuando se recibe una trama del protocolo
// Wiegand 26 a traves del hardware conectado al puerto de expansion.
// ********************************************************************************
@OnWiegand()
{
if(WiegandCheckValidity())
{
// Datos validos.
LcdClear()
LcdPrintf(0, 0, "Facility: %d", WiegandGetFacilityCode())
LcdPrintf(0, 1, "Card #: %d", WiegandGetCardNumber())
}
else
{
// Datos recibidos con error.
// Comprobar hardware.
LcdClear()
LcdPrintf(0, 0, "Invalid")
LcdPrintf(0, 1, "Code")
}
}