Vai al contenuto
PLC Forum


Stabilizzazione di un ingresso analogico Tia portal V16


anarchico

Messaggi consigliati

Avrei bisogno di stabilizzare un ingresso analogico ballerino,che varia anche di 30 40 punti( e non so perchè)

O se esiste una funzione su Tia V16 che mi permetta di campionare un certo numero di valori e realizzare una media per avere un segnale stabile.

HO realizzato alcune righe di codice per 10 campioni,ma mi sarebbe utile qualcosa per mediare su n campioni.

 

Grazie mille.

 

Link al commento
Condividi su altri siti


Io prima indagherei sul perchè c'è questa variazione, potrebbe essere del rumore sovrapposto al segnale e, in questo caso, bisogna eliminarne la causa.

 

Per la media. Fatti un finestra scorrevole su "n" misure, è il metodo più semplice ed anche molto efficace.

Ad esempio se la fai su 10 misure ti crei un array di 10 valori, quando lo ha riempito, fai la somma e dividi per 10; alla misura successiva scarti la pisura più vecchia ed inserisci la nuova, e puoi estrarre un nuovo valore medio. Devi realizzare un FIFO di n elementi quante sono le misure ch vuoi mediare

Link al commento
Condividi su altri siti

Grazie mille.Piu o meno è quello che ho fatto in KOP,abbastanza tortuoso.Soprattutto se volessi raddoppiare i campioni e utilizzare il doppio di UDINT.

Link al commento
Condividi su altri siti

Si...c'è del rumore,ma che non riusciamo a trovare.Abbiamo utilizzato oscilloscopio e condensatori con scarsi risultati.Non credo ci sia sul modulo analogico qualcosa che possa filtrare via software questo rumore,qualche impostazione ecc ecc...

Il modulo è un 6ES7 134-6HB00-0DA1 AI 2xU/I 2-,4-wire HS, Unità di ingressi analogici AI2 x U/I 2, 4 fili HS Fast Oversampling N x 16Bit su tutti i canali; stato del valore; diagnostica per canale; valore sostitutivo interrupt di processo; supporta PROFIenergy; funzionamento in sincronismo di clock.

 

 

Link al commento
Condividi su altri siti

Al di là delle cause che generano le variazioni, che vanno investigate per prime, se ti fai un FC e te lo scrivi in scl sono 7 righe di codice. Shiftare l'array puoi evitarlo ti basta scrivere il nuovo valore nella posizione più vecchia. Poi... Una media a 10 mi sembra già abbastanza importante!

Modificato: da drn5
Link al commento
Condividi su altri siti

7 minuti fa, drn5 ha scritto:

Shiftare l'array puoi evitarlo ti basta scrivere il nuovo valore nella posizione più vecchia.

 

Ci sono vari modi per relaizzare l'algoritmo; l'ottimizzazione dipende dal linguaggio usato e dall'ambiente. Eseguire lo shift, anzi la rotazione, dell'indice dell'array è un metodo.

Link al commento
Condividi su altri siti

Nella configurazione hardware puoi impostare il "livellamento" su 2-4-8-16-32-64 volte, e già questo dovrebbe risolverti il problema.

Certo che non ha molto senso spendere di più per acquistare un modulo con campionamento veloce per poi smorzare la lettura.

 

Per creare un filtro software, oltre alla media già citata, potresti applicare la seguente formula:
Out = Out + (In - Out) / n

 

Per funzionare, le variabili devono essere in formato REAL, la variabile "Out" NON deve essere una variabile "TEMP", e il campionamento dovrebbe essere fatto preferibilmente a tempi costanti (quindi in un OB Cyclic Interrupt).
Più è alto il valore di "n", più il segnale verrà smorzato. Ovviamente, maggiore smorzamento significa anche maggiore ritardo.
 

Modificato: da batta
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...