DEVICE FREQ

1. 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.

Le principali caratteristiche del device sono:

  • risoluzione della frequenza selezionabile tra centesimo e millesimo di hertz.
  • fronte di acquisizione del segnale da misurare selezionabile tra salita e discesa.
  • filtro digitale passa basso del 1°ordine sulla misura con costante di tempo impostabile.
  • scaling della misura per mezzo di tre coefficienti programmabili.
  • acquisizione del duty cycle del segnale da misurare (per segnali con frequenze inferiori a 150 Hz).
  • disponibilità del valore della frequenza, della misura e della misura filtrata.

2. Dichiarazione del device

Per poter usufruire del device è necessario eseguirne la dichiarazione nell'apposita sezione INTDEVICE della unit di configurazione.

;--------------------------------- 
; Dichiarazione device interni 
;--------------------------------- 
INTDEVICE 
...
<nome_device>  FREQ  TCamp  IntL

Dove:

<nome_device>nome assegnato al device
FREQparola chiave che identifica il device FREQ
TCamptempo di campionamento device espresso in millisecondi (1÷250)
IntLlinea di interrupt associata all'ingresso digitale sul quale è applicato il segnale da monitorare
: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.

3. Funzionamento

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”).

: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.

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 counter” realizza un contatore dei fronti catturati dal blocco “edge detect”.

Il blocco “Upper limiter”, come dice la parola stessa, limita i valori di uscita del blocco “edge detect” fino a frqmax.

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.
La formula per ottenere il valore misurato è:
outUm = (outbit * scaleA / scaleB) + scaleC

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.

3.6.1 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 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).

4. Tabella parametri

NomeDimensioneValore di defaultTipo di accessoUnità di misuraRange validoCondizioni di scritturaDescrizione
frqmaxLongRitentivoRWHz/100 oppure Hz/10000÷2147483647-Frequenza massima
È il massimo valore che può assumere outfrq. Per segnali di frequenza superiore a frqmax, outfrq viene posto pari a frqmax.
frqminLongRitentivoRWHz/100 oppure Hz/10000÷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
captureByteRitentivoRW-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 %).
scaleALongRitentivoRW--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.
scaleBLongRitentivoRW--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.
scaleCLongRitentivoRW--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.
tfilterWordRitentivoRWms0÷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.
par01LongRitentivoRW--2147483648÷2147483647-Parametro generico
Parametro disponibile per future implementazioni.
par02LongRitentivoRW--2147483648÷2147483647-Parametro generico
Parametro disponibile per future implementazioni.
outfrqLong-RHz/100 oppure Hz/10000÷frqmax-Frequenza rilevata
È il valore di uscita del blocco “edge detect”.
outUmLong-R---Valore misurato
È il valore della misura cioè il valore di frequenza rilevata passato per la funzione di scaling.
outUmFLong-R---Valore misurato filtrato
È il valore della misura dopo l'applicazione del filtro digitale passa basso.
outcntLong-RW---Contatore impulsi
È il valore di uscita del blocco “edge counter” e cioè il numero di fronti di salita o discesa (a seconda del parametro capture) rilevati dal blocco “edge detect”.
outvarLong-RW---Variabile generica
Parametro attualmente non implementato.
errcodeByte0R--128÷127-Codice di identificazione errore
Indica il tipo di errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato
errvalueByte0R--128÷127-Codice di identificazione della causa dell'errore
Indica la causa dell'errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato
wrncodeByte0R--128÷127-Codice di identificazione warning
Indica il tipo di warning intervenuto nel device. Il codice è valido solo se st_warning = 1. Per ulteriori informazioni consultare il capitolo dedicato
wrnvalueByte0R--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

5. Tabella stati

NomeValore di defaultDescrizione
st_010Stato input
Stato dell'ingresso sorgente (linea d'interrupt o numero frequenzimetro).
st_020Stato generico
Parametro disponibile per future implementazioni.
st_error0Presenza di un errore
Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili errcode ed errvalue:
0: errore non presente,
1: errore presente
st_warning0Presenza 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

6. Tabella comandi

NomeCondizioneDescrizione
CMD01-Comando generico
Comando disponibile per future implementazioni.
CMD02-Comando generico
Comando disponibile per future implementazioni.
RSERR-Reset dello stato di errore
Azzera lo stato st_error.
RSWRN-Reset dello stato di warning
Azzera lo stato st_warning.

7. Errori e allarmi

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.
La seguente tabella specifica i valori assunti da errcode:

errcodeDescrizione
0nessun errore
1linea di interrupt associata all'ingresso digitale non supportata dall'hardware

Per mezzo del parametro errvalue è possibile ottenere informazioni più dettagliate riguardo l'errore.
La seguente tabella specifica i valori assunti da errvalue:

errvalueDescrizione
0nessuna informazione riguardo l'errore

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.
La seguente tabella specifica i valori assunti da wrncode:

wrncodeDescrizione
0nessun warning

Per mezzo del parametro wrnvalue è possibile ottenere informazioni più dettagliate riguardo il warning.
La seguente tabella specifica i valori assunti da wrnvalue:

wrnvalueDescrizione
0nessuna informazione riguardo il warning
  • Ultima modifica: 2019/08/29 17:01