Jump to content
PLC Forum


Media Valore Con Lgf_FloatingAverage


Spiddy1
 Share

Recommended Posts

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 to comment
Share on other sites


Simone.Salarsi

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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

Simone.Salarsi
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 to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...