Prossima revisione | Revisione precedente Prossima revisioneEntrambe le parti successive la revisione |
software:devices:freq [2014/10/23 14:57] – modifica esterna 127.0.0.1 | software:devices:freq [2014/11/03 10:53] – documentazione |
---|
====== DEVICE FREQ ====== | ~~NOCACHE~~ |
| |
| ====== DEVICE FREQ ====== |
| |
===== - Introduzione ===== | ====== - Introduzione ====== |
| |
FREQ è un device interno che permette di misurare la frequenza di un segnale digitale. Integra, inoltre, un contatore di impulsi monodirezionale, un filtro digitale passa basso del 1° ordine sulla misura, una funzione di scaling e un rilevatore di duty cycle. | FREQ è un device interno che permette di misurare la frequenza di un segnale digitale. Integra, inoltre, un contatore di impulsi monodirezionale, un filtro digitale passa basso del 1° ordine sulla misura, una funzione di scaling e un rilevatore di duty cycle. |
* disponibilità del valore della frequenza, della misura e della misura filtrata. | * disponibilità del valore della frequenza, della misura e della misura filtrata. |
| |
| <html><pagebreak /></html> |
| |
===== - Dichiarazione del device ===== | ====== - Dichiarazione del device ====== |
| |
Per poter usufruire del device è necessario eseguirne la dichiarazione nell'apposita sezione INTDEVICE della unit di configurazione. | Per poter usufruire del device è necessario eseguirne la dichiarazione nell'apposita sezione INTDEVICE della unit di configurazione. |
</WRAP> | </WRAP> |
| |
| <html><pagebreak /></html> |
| |
===== - Funzionamento ===== | ====== - Funzionamento ====== |
| |
{{:software:devices:freq:freq_01.png?nolink900|}} | {{:software:devices:freq:freq_01.png?nolink900|}} |
| |
==== - Filtro antiglitch ==== | ===== - Filtro antiglitch ===== |
| |
Il blocco "filtro antiglitch" esegue un filtraggio digitale sul segnale d'ingresso per l'eliminazione dei disturbi. Esso campiona il segnale di ingresso ad intervalli di tempo regolari e determina lo stato di uscita verificando lo stato della maggioranza dei campioni. L'entità del filtro dipende da un parametro del sistema QMOVE (variabile di sistema "QMOVE:sys004"). | Il blocco "filtro antiglitch" esegue un filtraggio digitale sul segnale d'ingresso per l'eliminazione dei disturbi. Esso campiona il segnale di ingresso ad intervalli di tempo regolari e determina lo stato di uscita verificando lo stato della maggioranza dei campioni. L'entità del filtro dipende da un parametro del sistema QMOVE (variabile di sistema "QMOVE:sys004"). |
</WRAP> | </WRAP> |
| |
==== - Edge detect ==== | ===== - Edge detect ===== |
| |
Il blocco "edge detect" cattura il fronte del segnale in uscita dal filtro antiglitch e misura il tempo tra due fronti consecutivi per ottenere la misura di frequenza. Il fronte di salita o di discesa è selezionato tramite il parametro capture. Il parametro //frqmin// determina il tempo massimo oltre il quale il valore di uscita dal blocco diventa zero. | Il blocco "edge detect" cattura il fronte del segnale in uscita dal filtro antiglitch e misura il tempo tra due fronti consecutivi per ottenere la misura di frequenza. Il fronte di salita o di discesa è selezionato tramite il parametro capture. Il parametro //frqmin// determina il tempo massimo oltre il quale il valore di uscita dal blocco diventa zero. |
| |
==== - Edge counter ==== | ===== - Edge counter ===== |
| |
Il blocco "Edge counter" realizza un contatore dei fronti catturati dal blocco "edge detect". | Il blocco "Edge counter" realizza un contatore dei fronti catturati dal blocco "edge detect". |
| |
==== - Upper limiter ==== | ===== - Upper limiter ===== |
| |
Il blocco "Upper limiter", come dice la parola stessa, limita i valori di uscita del blocco "edge detect" fino a //frqmax//. | Il blocco "Upper limiter", come dice la parola stessa, limita i valori di uscita del blocco "edge detect" fino a //frqmax//. |
| |
==== - Scaling ==== | ===== - Scaling ===== |
| |
Il blocco "scaling" esegue operazioni matematiche di moltiplicazione, divisione e somma, del valore di uscita dal blocco "upper limiter" con i parametri //scaleA//, //scaleB// e //scaleC// per ottenere il valore misurato (//outUm//) nell'entità voluta.\\ | Il blocco "scaling" esegue operazioni matematiche di moltiplicazione, divisione e somma, del valore di uscita dal blocco "upper limiter" con i parametri //scaleA//, //scaleB// e //scaleC// per ottenere il valore misurato (//outUm//) nell'entità voluta.\\ |
//outUm// = (//outbit// * //scaleA// / //scaleB//) + //scaleC// | //outUm// = (//outbit// * //scaleA// / //scaleB//) + //scaleC// |
| |
==== - Low pass filter ==== | ===== - Low pass filter ===== |
| |
Il blocco "Low pass filter" esegue un filtro digitale del 1° ordine (tipo il classico filtro RC) sul valore misurato. La costante di tempo del filtro è impostabile tramite il parametro //tfilter//. | Il blocco "Low pass filter" esegue un filtro digitale del 1° ordine (tipo il classico filtro RC) sul valore misurato. La costante di tempo del filtro è impostabile tramite il parametro //tfilter//. |
| |
=== - Note sul funzionamento del device === | ==== - Note sul funzionamento del device ==== |
* Il filtro antiglitch ha la caratteristica di eliminare eventuali disturbi sul segnale di ingresso ma ha ha lo svantaggio di introdurre un "rumore" sul segnale di uscita. Tale rumore è più evidente quando la frequenza di ingresso è superiore a 10KHz. In questi casi è possibile ridurre il rumore in maniera notevole, fino ad annullarlo, semplicemente aumentando il tempo di campionamento del device. Se l'applicazione lo permette, si consiglia di utilizzare tempi di campionamento uguali o superiori a 20ms. | * Il filtro antiglitch ha la caratteristica di eliminare eventuali disturbi sul segnale di ingresso ma ha ha lo svantaggio di introdurre un "rumore" sul segnale di uscita. Tale rumore è più evidente quando la frequenza di ingresso è superiore a 10KHz. In questi casi è possibile ridurre il rumore in maniera notevole, fino ad annullarlo, semplicemente aumentando il tempo di campionamento del device. Se l'applicazione lo permette, si consiglia di utilizzare tempi di campionamento uguali o superiori a 20ms. |
* Il device non può funzionare contemporaneamente come misuratore di frequenza e rilevatore di duty cycle perciò, quando il parametro //capture// è impostato a 5, il valore di uscita del blocco "edge detect" rappresenta il duty cycle espresso in parti per 10000 (5000 significa quindi duty del 50.00%). Il valore di uscita del blocco "edge detect" va direttamente sul parametro //outfrq// bypassando il blocco "upper limiter"; il blocco "scaling" producono delle uscite che potrebbero perdere di significato. Per utilizzare il filtro del primo ordine con il duty cycle in maniera corretta è necessario che i parametri //scaleA// e //scaleB// siano uguali a 1 ed il parametro //scaleC// sia uguale a zero. L'utilizzo del rilevatore del duty cycle funziona correttamente per segnali di frequenza bassa (inferiori a circa 150 Hz). | * Il device non può funzionare contemporaneamente come misuratore di frequenza e rilevatore di duty cycle perciò, quando il parametro //capture// è impostato a 5, il valore di uscita del blocco "edge detect" rappresenta il duty cycle espresso in parti per 10000 (5000 significa quindi duty del 50.00%). Il valore di uscita del blocco "edge detect" va direttamente sul parametro //outfrq// bypassando il blocco "upper limiter"; il blocco "scaling" producono delle uscite che potrebbero perdere di significato. Per utilizzare il filtro del primo ordine con il duty cycle in maniera corretta è necessario che i parametri //scaleA// e //scaleB// siano uguali a 1 ed il parametro //scaleC// sia uguale a zero. L'utilizzo del rilevatore del duty cycle funziona correttamente per segnali di frequenza bassa (inferiori a circa 150 Hz). |
| |
| <html><pagebreak /></html> |
| |
===== - Tabella parametri ===== | ====== - Tabella parametri ====== |
| |
^Nome^Dimensione^Valore di default^Tipo di accesso^Unità di misura^Range valido^Condizioni di scrittura^Descrizione^ | ^Nome^Dimensione^Valore di default^Tipo di accesso^Unità di misura^Range valido^Condizioni di scrittura^Descrizione^ |
|wrnvalue|Byte|0|R|-|-128÷127|-|**Codice di identificazione della causa del warning**\\ Indica la causa del warning intervenuto nel device. Il codice è valido solo se //st_warning// = 1. Per ulteriori informazioni consultare il capitolo dedicato| | |wrnvalue|Byte|0|R|-|-128÷127|-|**Codice di identificazione della causa del warning**\\ Indica la causa del warning intervenuto nel device. Il codice è valido solo se //st_warning// = 1. Per ulteriori informazioni consultare il capitolo dedicato| |
| |
| <html><pagebreak /></html> |
| |
===== - Tabella stati ===== | ====== - Tabella stati ====== |
| |
^Nome^Valore di default^Descrizione^ | ^Nome^Valore di default^Descrizione^ |
|st_warning|0|**Presenza di un warning**\\ Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili //wrncode// e //wrnalue//:\\ **0**: warning non presente,\\ **1**: warning presente| | |st_warning|0|**Presenza di un warning**\\ Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili //wrncode// e //wrnalue//:\\ **0**: warning non presente,\\ **1**: warning presente| |
| |
| <html><pagebreak /></html> |
| |
===== - Tabella comandi ===== | ====== - Tabella comandi ====== |
| |
^Nome^Condizione^Descrizione^ | ^Nome^Condizione^Descrizione^ |
|RSWRN|-|**Reset dello stato di warning**\\ Azzera lo stato //st_warning//.| | |RSWRN|-|**Reset dello stato di warning**\\ Azzera lo stato //st_warning//.| |
| |
| <html><pagebreak /></html> |
| |
===== - Errori e allarmi ===== | ====== - Errori e allarmi ====== |
| |
==== - Errori ==== | ===== - Errori ===== |
| |
Quando il device non riesce ad eseguire le operazioni derivanti da una non corretta programmazione da parte dell'utente segnala questa condizione tramite l'attivazione dello stato //st_error//. Il device, inoltre, rende disponibili, tramite i valori sui parametri //errcode// ed //errvalue//, alcune informazioni per meglio comprendere il tipo di errore e quale condizione l'ha generato. Tali informazioni e lo stato di errore //st_error//, permangono finché non viene eseguito l'apposito comando //RSERR// che li cancella.\\ | Quando il device non riesce ad eseguire le operazioni derivanti da una non corretta programmazione da parte dell'utente segnala questa condizione tramite l'attivazione dello stato //st_error//. Il device, inoltre, rende disponibili, tramite i valori sui parametri //errcode// ed //errvalue//, alcune informazioni per meglio comprendere il tipo di errore e quale condizione l'ha generato. Tali informazioni e lo stato di errore //st_error//, permangono finché non viene eseguito l'apposito comando //RSERR// che li cancella.\\ |
|0|nessuna informazione riguardo l'errore| | |0|nessuna informazione riguardo l'errore| |
| |
==== - Allarmi ==== | ===== - Allarmi ===== |
| |
Quando i parametri del device vengono programmati con valori fuori range essi non vengono accettati e mantengono il loro valore precedente. Il device segnala questa condizione tramite l'attivazione dello stato //st_warning//. Il device, inoltre, rende disponibili, tramite i valori sui parametri //wrncode// ed //wrnvalue//, alcune informazioni per meglio comprendere il tipo di warning e quale condizione l'ha generato. Tali informazioni e lo stato di warning //st_warning//, permangono finché non viene eseguito l'apposito comando //RSWRN// che li cancella.\\ | Quando i parametri del device vengono programmati con valori fuori range essi non vengono accettati e mantengono il loro valore precedente. Il device segnala questa condizione tramite l'attivazione dello stato //st_warning//. Il device, inoltre, rende disponibili, tramite i valori sui parametri //wrncode// ed //wrnvalue//, alcune informazioni per meglio comprendere il tipo di warning e quale condizione l'ha generato. Tali informazioni e lo stato di warning //st_warning//, permangono finché non viene eseguito l'apposito comando //RSWRN// che li cancella.\\ |
^wrnvalue^Descrizione^ | ^wrnvalue^Descrizione^ |
|0|nessuna informazione riguardo il warning| | |0|nessuna informazione riguardo il warning| |
| |
| |