Vai al contenuto
PLC Forum


Media Valore Con Lgf_FloatingAverage


Spiddy1

Messaggi consigliati

Buon giorno,

Devo fare una media di un valora reale.A me servirebbe che a rispetto di un segnale che va a true e poi a false in uscita abbia la media dei valori dati in ingresso

Guardando in rete ho trovato la libreria LGF_FloatingAverage che potrebbe fare a caso ho fatto delle prove e vorrei chiedervi delle cose:

windowsSize = ho capito che sono quanti valori voglio salvare nell'array ma ogni quanto tempo li salva?

se metto il cycliExecution  True e il Trigger a True in uscita vedo solamente il valore che metto in ingresso e non  la media dove Sbaglio?

Grazie

Link al commento
Condividi su altri siti


scarica il manuale della libreria e leggi come funziona questo FB.

 

Se guardi vedrai che tra i parametri di ingresso c'è la voce MODE, che viene così descritta :

 

For reading the values, two modes are available that can be defined using the parameter "mode".

 mode = 1: Reading with every pulse at the input "trigger"

 mode = 2: Cyclic read

 

Essendo di default ad 1 (anche questo indicato sul manuale) la funzione si aspetta un fronte di salita sull'ingresso "trigger" per attivare una singola lettura del dato in ingresso.

Link al commento
Condividi su altri siti

Mi pare che il manuale sia abbastanza chiaro.
Sul parametro "cyclicExecution" dice:
TRUE: cyclic operation, trigger not in use

 

"windowSize" è il numero di campioni dei quali desideri fare la media (da 1 a 100, se vuoi aumentare il limite, devi modificare la funzione).
Con "cyclicExecution" = TRUE, ad ogni richiamo della funzione viene eliminato il dato più vecchio ed ineserito l'ultimo valore e calcolata la nuova media.

Invece con "cyclicExecution" = FALSE, la stessa operazione di eliminazione dato più vecchio, inserimento nuovo valore e ricalcolo, viene fatta ad ogni impulso di "trigger".

 

1 ora fa, Spiddy1 ha scritto:

se metto il cycliExecution  True e il Trigger a True in uscita vedo solamente il valore che metto in ingresso e non  la media dove Sbaglio?

Se metti "cyclicExecution" = TRUE ("trigger", in questo caso, è ininfluente), dopo che la funzione è stata richiamata per un numero di volte pari a "windowSize", tutti i valori all'interno del registro FIFO della funzione conterranno lo stesso valore e, quindi, il valore medio non potrà che essere uguale al valore inserito.
Se la cpu sta ciclando con tempi brevi, praticamente ti sembrerà di vedere in uscita il valore che hai passato in ingresso.

Link al commento
Condividi su altri siti

7 minuti fa, Simone.Salarsi ha scritto:

mode = 1: Reading with every pulse at the input "trigger"

"mode" c'è nelle versioni più vecchie, ma il senso rimane uguale.

E, come giustamente suggerisci, il primo passo dovrebbe sempre essere la lettura del manuale.

Link al commento
Condividi su altri siti

14 minuti fa, batta ha scritto:

"mode" c'è nelle versioni più vecchie, ma il senso rimane uguale.

E, come giustamente suggerisci, il primo passo dovrebbe sempre essere la lettura del manuale.

hai ragione, ho guardato al volo il primo manuale trovato e faceva riferimento ad una libreria vecchia ( V14). 

 

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...