software:devices:freq

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
software:devices:freq [2014/11/03 09:24] documentazionesoftware:devices:freq [2019/08/29 17:01] (versione attuale) – modifica esterna 127.0.0.1
Linea 1: Linea 1:
 ====== DEVICE FREQ ====== ====== 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.
Linea 14: Linea 13:
   * 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>+<WRAP pagebreak></WRAP>
  
-===== - 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.
Linea 35: Linea 34:
 |IntL|linea di interrupt associata all'ingresso digitale sul quale è applicato il segnale da monitorare| |IntL|linea di interrupt associata all'ingresso digitale sul quale è applicato il segnale da monitorare|
  
-<WRAP center round important 60%> +^:todo:^Attenzione: Tutti i campi della dichiarazione sono obbligatori e devono essere presenti sulla stessa linea.\\ Impostare "X.X" oppure "X" nel caso una risorsa non sia disponibile o non venga utilizzata.\\ Disabilitare una risorsa significa disabilitare tutte le funzionalità del device che la utilizzano.^
-Attenzione:\\ Tutti i campi della dichiarazione sono obbligatori e devono essere presenti sulla stessa linea. Impostare "X.X" oppure "X" nel caso una risorsa non sia disponibile o non venga utilizzata. Disabilitare una risorsa significa disabilitare tutte le funzionalità del device che la utilizzano. +
-</WRAP>+
  
-<html><pagebreak /></html>+<WRAP pagebreak></WRAP>
  
-===== - 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 center round info 60%> +^:info:^L'esistenza del blocco "antiglitch filter" e le sue caratteristiche dipendono dal prodotto che si sta utilizzando.\\ Consultare la documentazione relativa al prodotto stesso per uteriori informazioni.^
-L'esistenza del blocco "antiglitch filter" e le sue caratteristiche dipendono dal prodotto che si sta utilizzando. Consultare la documentazione relativa al prodotto stesso per uteriori informazioni. +
-</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.\\
Linea 71: Linea 66:
 //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>+<WRAP pagebreak></WRAP>
  
-===== - 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^
 |frqmax|Long|Ritentivo|RW|Hz/100 oppure Hz/1000|0÷2147483647|-|**Frequenza massima**\\ È il massimo valore che può assumere //outfrq//. Per segnali di frequenza superiore a //frqmax//, //outfrq// viene posto pari a //frqmax//.| |frqmax|Long|Ritentivo|RW|Hz/100 oppure Hz/1000|0÷2147483647|-|**Frequenza massima**\\ È il massimo valore che può assumere //outfrq//. Per segnali di frequenza superiore a //frqmax//, //outfrq// viene posto pari a //frqmax//.|
-|frqmin|Long|Ritentivo|RW|Hz/100 oppure Hz/1000|0÷2147483647|-|**Frequenza minima**\\ È il valore minimo di frequenza rilevabile dal device. Per frequenze inferiori, l'uscita del blocco "edge detect" vale zero. <WRAP center round important 60%> //frqmin// influenza anche il tempo massimo oltre il quale viene rilevata l'assenza di segnale in ingresso; infatti, ad esempio, impostando //frqmin// pari a 1Hz, il device rileva l'assenza di segnale e quindi pone a zero //outfrq// dopo 1 sec. Impostando, invece, //frqmin// pari a 0.01 Hz l'assenza di segnale verrà rilevata dopo 100 sec. Impostando //frqmin// uguale a 0 è come impostare 0.01Hz se //outfrq// è espresso in centesimi di hertz oppure 0.001Hz se //outfrq// è espresso in millesimi di hertz </WRAP>|+|frqmin|Long|Ritentivo|RW|Hz/100 oppure Hz/1000|0÷2147483647|-|**Frequenza minima**\\ È il valore minimo di frequenza rilevabile dal device. Per frequenze inferiori, l'uscita del blocco "edge detect" vale zero.\\ :todo:\\ **//frqmin// influenza anche il tempo massimo oltre il quale viene rilevata l'assenza di segnale in ingresso; infatti, ad esempio, impostando //frqmin// pari a 1Hz, il device rileva l'assenza di segnale e quindi pone a zero //outfrq// dopo 1 sec. Impostando, invece, //frqmin// pari a 0.01 Hz l'assenza di segnale verrà rilevata dopo 100 sec. Impostando //frqmin// uguale a 0 è come impostare 0.01Hz se //outfrq// è espresso in centesimi di hertz oppure 0.001Hz se //outfrq// è espresso in millesimi di hertz**|
 |capture|Byte|Ritentivo|RW|-|0÷5|-|**Modalità cattura segnale e risoluzione misura frequenza**\\ Definisce le modalità di cattura del segnale (fronte e frequenza/duty) e la risoluzione della misura di frequenza (centesimi o millesimi di hertz).\\ **0** i blocchi "edge detect" e "edge counter" sono disabilitati quindi il device fornisce il valore di outfrq sempre uguale a zero mentre outcnt non si incrementa più.\\ **1** il blocco "edge detect" cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.\\ **2** il blocco "edge detect" cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.\\ **3** il blocco "edge detect" cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.\\ **4** il blocco "edge detect" cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.\\ **5** il blocco "edge detect" cattura entrambi i fronti del segnale di ingresso e fornisce sul parametro outfrq il valore del duty cycle in parti per 10000 (es: 5000 indica il 50.00 %).| |capture|Byte|Ritentivo|RW|-|0÷5|-|**Modalità cattura segnale e risoluzione misura frequenza**\\ Definisce le modalità di cattura del segnale (fronte e frequenza/duty) e la risoluzione della misura di frequenza (centesimi o millesimi di hertz).\\ **0** i blocchi "edge detect" e "edge counter" sono disabilitati quindi il device fornisce il valore di outfrq sempre uguale a zero mentre outcnt non si incrementa più.\\ **1** il blocco "edge detect" cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.\\ **2** il blocco "edge detect" cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.\\ **3** il blocco "edge detect" cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso.\\ **4** il blocco "edge detect" cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco "edge counter", altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso.\\ **5** il blocco "edge detect" cattura entrambi i fronti del segnale di ingresso e fornisce sul parametro outfrq il valore del duty cycle in parti per 10000 (es: 5000 indica il 50.00 %).|
 |scaleA|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente A nella funzione di scaling**\\ È il parametro per il quale viene moltiplicato il valore della frequenza rilevato dal blocco "edge detect" nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.| |scaleA|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente A nella funzione di scaling**\\ È il parametro per il quale viene moltiplicato il valore della frequenza rilevato dal blocco "edge detect" nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.|
 |scaleB|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente B nella funzione di scaling**\\ È il parametro per il quale viene diviso il valore della frequenza rilevato dal blocco "edge detect" nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.| |scaleB|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente B nella funzione di scaling**\\ È il parametro per il quale viene diviso il valore della frequenza rilevato dal blocco "edge detect" nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0.|
 |scaleC|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente C nella funzione di scaling**\\ È il parametro che viene sommato al risultato ottenuto moltiplicando il valore valore della frequenza rilevata dal blocco "edge detect" moltiplicato per il rapporto tra i parametri //scaleA// e //scaleB// della funzione di scaling.| |scaleC|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Coefficiente C nella funzione di scaling**\\ È il parametro che viene sommato al risultato ottenuto moltiplicando il valore valore della frequenza rilevata dal blocco "edge detect" moltiplicato per il rapporto tra i parametri //scaleA// e //scaleB// della funzione di scaling.|
-|tfilter|Word|Ritentivo|RW|ms|0÷32767|-|**Costante di tempo del filtro**\\ Costante di tempo.\\ <WRAP center round info 60%> nel caso in cui //tfilter// sia minore o uguale del tempo di campionamento del device viene disattivato il filtro ed il parametro //outUmF// viene aggiornato con lo stesso valore di //outUm//.</WRAP>|+|tfilter|Word|Ritentivo|RW|ms|0÷32767|-|**Costante di tempo del filtro**\\ Costante di tempo.\\ :info:\\ **nel caso in cui //tfilter// sia minore o uguale del tempo di campionamento del device viene disattivato il filtro ed il parametro //outUmF// viene aggiornato con lo stesso valore di //outUm//.**|
 |par01|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Parametro generico**\\ Parametro disponibile per future implementazioni.| |par01|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Parametro generico**\\ Parametro disponibile per future implementazioni.|
 |par02|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Parametro generico**\\ Parametro disponibile per future implementazioni.| |par02|Long|Ritentivo|RW|-|-2147483648÷2147483647|-|**Parametro generico**\\ Parametro disponibile per future implementazioni.|
Linea 103: Linea 98:
 |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>+<WRAP pagebreak></WRAP>
  
-===== - Tabella stati =====+====== - Tabella stati ======
  
 ^Nome^Valore di default^Descrizione^ ^Nome^Valore di default^Descrizione^
Linea 113: Linea 108:
 |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>+<WRAP pagebreak></WRAP>
  
-===== - Tabella comandi =====+====== - Tabella comandi ======
  
 ^Nome^Condizione^Descrizione^ ^Nome^Condizione^Descrizione^
Linea 123: Linea 118:
 |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>+<WRAP pagebreak></WRAP>
  
-===== - 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.\\ 
Linea 142: Linea 137:
 |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.\\
  • Ultima modifica: 2019/08/29 17:01