Il protocollo Wiegand non ha uno standard rigido, ma la maggior parte dei dispositivi sul mercato segue delle specifiche de facto abbastanza consolidate.
- Larghezza impulso (Pulse Width): Da 20 µs a 100 µs tipico più comune 50 µs. (Significa che quando viene trasmesso un bit, la linea D0 o D1 viene portata bassa per quel tempo).
- Intervallo tra impulsi (Pulse Interval): Da 200 µs a 20 ms, tipico 1~2 ms tra un bit e il successivo.
- Sequenza di bit: I bit sono inviati in sequenza su D0 e D1, con timing definito sopra.
- Frame completo (es. Wiegand-26): 1 bit di parità iniziale, 24 bit di dati (generalmente 8 bit Facility Code+16 bit ID), 1 bit di parità finale, totale 26 bit inviati in 26~30 ms.
Come visto esiste una grande differenza tra i vari dispositivi, ad esempio il lettore RFID R3 ha una larghezza di impulso di 500us ed intervallo di 2ms in tal caso è possibile acquisire su di un modulo CPU direttamente gli ingressi in polling in task Fast (Può essere eseguito al minimo ogni 100uS vedi SysSetTaskLpTime). Non è possibile acquisire gli ingressi in polling così velocemente dai moduli di estensione perchè l’acquisizione necessita di circa 400uS.
Per poter acquisire ingressi Wiegand più veloci vedi la soluzione proposta nell’esempio ST_WiegandDcd di questo articolo. Dove i 2 ingressi sono connessi a 2 contatori, quindi occorre acquisire il conteggio ogni tempo di intervallo che anche nel caso minimo di 1 mS è ampiamente gestibile dalla task Fast. Ma anche in questo caso non è possibile acquisire i counters in polling così velocemente dai moduli di estensione.
Venendo alla tua necessità l’unica soluzione applicabile è utilizzare un modulo CPU compact, con l’opzione 4 counter e connettere al modulo 2 dispositivi. Per acquisire 8 lettori ti serviranno 4 moduli che potrai connettere tra di loro in ethernet ad esempio con il FB DataTransfer. Potrai utilizzare gli I/O liberi dei moduli come I/O digitali per la tua applicazione.