Vai al contenuto
PLC Forum


Filtro analogico


Project75

Messaggi consigliati


Giuseppe Signorella

Un valore non puoi stabilizzarlo a livello software. Puoi usare delle escamotage per renderlo (accettabile).

Vi sono differenti tecniche x farlo. Te ne dico un paio, scegli tu quella che preferisci. Dipende da cosa vuoi fare.

Non dai grandi informazioni.

1) Usi l'istruzione "in range" dove stabilisci un range in cui il segnale deve essere considerato "accettabile"  rispetto al set-point.

2) Fai una campionatura di letture ogni X tempo, le sommi e poi le dividi per il numero di campionature effettuate. Ovviamente essendo (una Media matematica), se il segnale va a zero più volte durante le letture, ti sfalsa la lettura. (La media). Volendo, potresti fare anche un (arrotondamento). Insomma, le soluzioni possono essere molteplice.

Dipende tutto da quale deve essere il risultato finale e il limite con cui considerare accettabile l'errore.

Link al commento
Condividi su altri siti

Praticamente io ho un valore di ingresso analogico che mi varia in continuazione, vorrei quindi fare una campionatura per un tempo X per poi fare una media ed ottenere un valore pulito propio come mi spiegavi tu nel punto 2. Quindi come dovrei procedere con la campionatura? Mi potresti aiutare suggerendo i blocchi che devo utilizzare? Vorrei capire come ottenere questi valori (campioni) per poi fare la media. Grazie mille

Link al commento
Condividi su altri siti

Giuseppe Signorella

Una Media matematica si fa leggendo (ed ovviamente memorizzandole) n letture in un determinato tempo e dopo sommate tra loro i valori letti,  dividi per il numero di letture campionate.

Ma sarei curioso di capire di quando è questa variazione. Inoltre di che tipologia di segnale stiamo parlando? Temperatura, pressione, ecc.

Link al commento
Condividi su altri siti

Stiamo parlando di flusso. Praticamente un flussi metro comanda una pompaggio con inverter, però mettendo set Point ad esempio a 2000 l/h mi varia in continuazione da 1900 a 2100 circa. Vorrei per questo stabilizzarsi. Ho capito la procedura per stabilizzare il valore ma non so come leggere e scrivere i campioni, Per questo vorrei sapere che blocchi devo usare. Grazie mille

Link al commento
Condividi su altri siti

Scusa cosa varia: il valore di set point o il valore regolato?

 

Se varia il valore di set point devi capire il perchè, non cercare dia ddormentarlo.

Se varia il valore regolato significa che il tuo regolatore è instabile e devi agire sul regolatore, non sulla misura.

Link al commento
Condividi su altri siti

Ok, ma volendo regolarlo ugualmente come devo procedere? Quali blocchi dovrei usare Per catturare dei valori in un determinato tempo per poi fare la media? Grazie mille 

Link al commento
Condividi su altri siti

Se non ti spieghi e non dai tutte le informazioni non è possiible risponderti.

Descrivi come è composto il tuo sistema: dove deriva il set point, chi e cosa effettua la regolazione, che regoaltore impieghi.

Link al commento
Condividi su altri siti

Ho una pompa sotto inverter, che deve mantenere il flusso costante, quindi ho anche un flussimetro che mi regola la pompa, questo flusso lo decido io con il setpoint, siccome il flussimetro mi segna un valore che varia in continuazione,volevo regolarizzare il segnare per evitare queste oscillazioni. Spero di essere stato chiaro. 

Link al commento
Condividi su altri siti

Giuseppe Signorella

Una media molto semplice la puoi realizzare nel seguente modo:

Creati un array. Ad esempio da 1 a 10 elementi.

 

Attiva i bit di sistema della CPU (Clock).

Scegliti il bit di clock con il campionamento più idoneo per le tue esigenze. (Diciamo quello di 1 secondo)

Ti crei una variabile denominata "indice" con valore di default 1.

Questo sarà il tuo indice dell'array e il divisore della media.

Ad ogni fronte di salita del bit di clock leggi il valore analogico e lo memorizzi nell'elemento dell'array indicato dal valore dell'indice.

Fai una somma di tutti gli elementi dell'array che hai scritto fino a quel momento. (Il numero degli elementi scritti te lo da l'indice) dividi il risultato per il valore dell'indice.

Incrementi l'indice di una unità

Ripeti le operazioni al successivo fronte di salita del bit di clock.

Quando l'indice è arrivato a 10, lo azzeri.

 

(Senza array)

Attiva i bit di sistema come detto sopra.

Creati una variabile di accumulo (ad esempio una Dword chiamata accumulo) ed un indice.

Ad ogni fronte del bit di clock leggi il valore proveniente dal canale analogico 

Fai una semplice operazione tipo (accumulo=accumulo+Valore letto/indice)

Come sopra quando l'indice arriva a 10 lo azzeri e riparti dall'inizio.

 

Un piccolo consiglio.

La soluzione dell'array è un pò più performante se ci lavori sopra. Offre maggiori possibilità.

Tipo una volta riempito l'array, puoi sovrascrivere il valore più vecchio di volta in volta e dividere sempre il risultato per dieci campionature.

 

Detto questo,  però vorrei farti riflettere su quanto detto da Livio Orsini.

Cerca di capire prima il perchè hai un valore analogico "ballerino":

 

1) Errori di collegamento, e quindi lettura sfalsata?

oppure 

2) il segnale del trasduttore è rilevato corretto, ma varia la pressione della tubazione perchè  è la pompa (inverter) che accelera e decelera in modo inappropriato e quindi varia la pressione nella tubazione (Rilevata dal trasduttore).

 

Buon Lavoro

 

 

 

 

 

 

 

Link al commento
Condividi su altri siti

Quote

siccome il flussimetro mi segna un valore che varia in continuazione,volevo regolarizzare il segnare per evitare queste oscillazioni.

 

Se il flussimetro da un valore oscillante bisogna capire perchè oscilla; per mia esperianza oscillazioni così ampie sono dovute a vere variazioni di flusso.

In questi casi non è "addormentando" la misura che si risolve il problema.

Se misuri la temperatura corporea e rilevi valori che oscillano tra 39°C e 40°C non cambiando termometro con uno che indichi 37°C che risolvi il problema; l'elevata temperatura corporea è indice di una patologia e la faccenda si risolve curando la patologia, non cambiando termostato.

 

Così nel tuo caso.

Per prima cosa verificherei che la velocità della pompa sia rigorosamen te costante, poi che sia costante anche il drenaggio sulla condotta. A questo punto si può ipotizzare un difetto di misura che si può tentare di minimizzare, però quelle che hai indicato son variazioni troppo grandi.

 

Se stai cercando di mantenere costante il flusso con una reazione ad anello chiuso, il sospetto che le oscillazioni di flusso che leggi siano dovute ad oscillazioni del regolatore, è veramente grande.

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