Jump to content
PLC Forum


Aiuto Termoregolazione e PID


blacktek
 Share

Recommended Posts

Ciao a tutti,

  avrei bisogno di un vs aiuto per la realizzazione di un sistema di controllo per la valvola miscelatrice del pavimento radiante. Ho l'accumulo a un T=50° circa e devo miscelare il ritorno per produrre una Temperatura di mandata di circa 32° (in realtà entrambe queste temperature non sono del tutto fisse, ma dipendono da input esterni).

Farò tutto tramite raspberry, la T di mandata penso di misurarla con una sonda NTC che collego ad un ADC e la valvola miscelatrice motorizzata pensavo di controllarla con PWM o un segnale 0-10V (il primo è piu facile con raspberry). Magari mi potreste suggerire anche qualche valvola o attuatore? Il termotecnico mi ha detto che la tubazione è da 40 (multistrato); il diametro della valvola deve essere di 1 pollice [portata 2900 L/H]

 

Detto ciò quello di cui avrei bisogno è capire come impostare l'algoritmo PID e in particolare i 3 parametri per l'azione proporzionale, integrativa e derivativa. So che non ci sono valori giusti per tutte le applicazioni, ma magari mi sapete dare qualche dritta con le info fornite (ho letto il manuale di Livio Orsini e anche qualcun altro, ma non ho trovato un modo semplice per poter poi fare dei test con l'impianto).

 

Visti poi i tempi di reazione della miscelazione (la valvola si muove molto lentamente, così come la temperatura non varia in modo repentino) quanti millisecondi di pausa mi consigliate nel ciclo del PID? a intuito direi che un run ogni 500/1000msec va più che bene.

Link to comment
Share on other sites


In genere si usa solo un controllo P.

In altri termini la lunghezza del comando di apertura o chiusura della valvola è proprozionale all'errore tra valore di consegna e valore rilevato.

L'escursione totale della valvola, tutto chiuso-tutto aperto, corrisponde in genere ad un tempo di qualche decina di secondi.

Se l'errore è molto grande darai il comando per più tempo. poi aspetti un tempo fisso che ritengo debba essere di almeno un paio di secondi, però dipende molto dalle caratteristiche della valvola e ridai il comando.

 

Attenzione!

Se vuoi usare schede come raspbberry, devi preoccuparti molto della sua alimentazione e della separazione di tutti i segnali che  interfacciano il campo. Questo se vuoi evitare blocchi improvvisi ed altri inconvenienti di programma.

Raspberry non è adatta, dal punto di vista dell'imunità EMC, per questo tipo di lavori.

Link to comment
Share on other sites

Buonasera Livio,

  grazie del feedback. Ok ad usare solo il controllo proporzionale. Immagino che non serva l'azione integrale (e a maggior ragione l'azione derivativa) per via della lentezza del sistema, giusto?

 

Ok per un'interrogazione ogni 2 secondi, mi torna come concetto anche perchè il sistema è lento e immagino poco reattivo. Lo stesso vale per un sistema in cui devo comandare la velocità di un fancoil (0-10v) per far raggiungere alla camera la T target desiderata?

 

Per l'alimentazione del raspberry questa avverrebbe per tramite di un buon alimentatore stabilizzato (ho pensato a un meanwell SDR 120-24) con cui alimento anche altri componenti a bassa tensione e gli attuatori quando sono a BT (es alcuni attuatori belimo). Con un altro raspberry che fa da sentinella monitoro il primo e lo riavvio se qualcosa si blocca per piu di tot minuti. La valvola poi la controllo o con PWM o tramite modbus con un adattatore modbus->0-10v

 

L'altra opzione era programmare tutto con un siemens logo ma avendo meno familiarità mi costava molto di più come tempi di apprendimento ed è più a blackbox per me.

 

Oltre a qualche altro utile suggerimento sul pid sai darmi qualche altro documento da studiare per studiare i fenomeni di immunità elettromagnetica e cosa fare per evitare problemi?

 

Grazie mille, mi fa piacere avere una risposta da te :)

Link to comment
Share on other sites

Lascia stare quei "giocattoli",adatti per apprendimento ma non per usarli in controlli che devono garantire sicurezza ed affidabilità nel tempo.Se non vuoi usare PLC perchè non hai esperienza nella programmazione di questi,con una centralina dedicata sei sicuro del risultato senza rischiare brutte esperienze(tipo una EV84A della FANTINI COSMI,poi non capisco perchè regolare il ritorno,semmai la mandata...). 

Link to comment
Share on other sites

In realtà una normale centralina non va bene per me, perchè il progetto è un po piu complesso, qui ho semplificato indicando solo le aree di dubbio. La centralina dovrà lavorare anche come slave modbus per esportarmi i dati di temperatura di mandata, ritorno, apertura valvola e leggere in ingresso i valori dei setpoint a cui miscelare. Dovrà poi funzionare sia in modalità di miscelazione normale che, opzionalmente, in modalità delta T costante, ovvero miscela cercando di mantenere un certo delta di temperatura tra mandata e ritorno. la logica è che al calare del delta T posso abbassare anche la mandata perchè ho meno richiesta di energia termica. Un altro plc poi leggendo questi dati si preoccuperà di comunicare alla pompa di calore anche di abbassare la temperatura di mandata per migliorare il COP ovvero la resa della macchina.

 

fare tutto questo con un normale plc lavorando è molto oneroso per la programmazione, per questo volevo programmarlo nei linguaggi che conosco. le centraline normali non fanno giustamente niente di tutto ciò.

 

mi aiutate per favore a capire come migliorare l'affidabilità del giocattolino raspberry? Come dicevo a parte le sonde di temperatura che vi collego direttamente tutte le altre comunicazioni avvengono tramite modbus, facendo quindi anche una sorta di isolamento dall'ambiente esterno per gli emc. Il controllo della valvola miscelatrice pensavo di farla in pwm o sempre tramite un modbus. Se effettivamente basta un set ogni 2 secondi va bene modbus, se serviva ogni pochi millisecondi saturavo il bus.

 

al raspberry non collego relé e non ho quindi problemi con le correnti di ritorno. L'alimentazione avviene tramite un ottimo alimentatore stabilizzato e la fault tolerance è gestita con monitoraggio esterno. Aprrezzo molto va suggerimenti per capire dove e come migliorare l'affidabilità.

Link to comment
Share on other sites

Quote

Immagino che non serva l'azione integrale (e a maggior ragione l'azione derivativa) per via della lentezza del sistema, giusto?

 

No. L'integrale non serve perchè è gia insito nel sistema.

Ti faccio un esempio.

Immagina di voler sicronizzare in velocità 2 motori conttrollandone le rispettive posizioni. Il motore "master" sarà il riferimento di posizione, l'altto motore cercherà di mantenere la stessa posizione angolare; non è necessario che l'errore angolare sia zero; è sufficiente che l'errore sia pressochè costante per avere sincronismo di velocità.

 

Nel tuo caso controlli la posizione della valvola tramite un valore di temperatura. Integrare l'errore di temperatura pe controllare la posizione della valvola non solo è inutile ma  è soprattutto dannosi.

E' tutto dimostrabile in modo analitico. Dovresti scrivere i blocchi di regolazione del sistema e scrivere le equazioni corrispondenti, così sarebbe evidente.

 

Tornando al problema. Due sono i paramentri che devi considerare  il tempo necessario per l'apertura (chiusura) totale della valvola e la differenza tra la temperatura dell'acqua.

 

In ordine a raspberry.

Concordo, e l'ho scritto da sempre, che non  è l'ggetto più adatto a questi impieghi, è anche meno adatto di arduino.

Questo non toglie che non sia possiible, con le opportune misure, ottenere risultati soddisfacienti.

Io ho fatto un controllo sul mio impianto di riscaldamento, usando arduino. La prima versione, nonostante le cure, è stato un fallimneto causato dalla assoluta mancanza di robustezza nei confronti dei disturbi.

Ne ho fatta una seconda versione usando un arduino nano come fosse un microprocessore inserito su di una scheda dedicata, il cui layout è stato progettato per resistere meglio ai disturbi. Sino ad ora il sistema funziona senza problemi.

 

Non basta usare un buon alimentatore commerciale. Forse è addirittura meglio progettarselo ad hoc, con filtri sulla rete e filtri sulla continaua.

 

Poi bisogna curare molto le separazioni galvaniche, gli accoppiamenti, gli scavalchi, etc.

 

Per queste cose o si ha esperienza o ......ce la si deve fare, l'espereinza.:smile::(

Link to comment
Share on other sites

Giusto,lascia stare arduini e raspberry,vai su un PLC per HVAC tipo M168 SCHNEDER ELECTRIC o simili,i costi iniziali di sviluppo li ammortizzerai nel tempo aumentando l'affidabilità generale del sistema(e poi consideri gli alimentatori MEAN WELL di qualità?,sono prodotti entry level,la qualità è altrove...).

Link to comment
Share on other sites

si sicuramente io non ho esperienza per mettere in piedi queste cose dal punto di vista della robustezza elettrica. Ritengo/Ritenevo che isolare bene a monte il mio raspberry e non controllare direttamente le uscite soggetti ai ritorni fosse abb.za per renderlo stabile. La versione per il controllo dell'impianto di riscaldamento fatta con Arduino prevedeva anche il comando diretto dei Relè e degli input? Io nel mio caso passo quasi tutto da modbus che separa le reti.

 

Vi torna che le cose che ho indicato di voler fare è molto difficile realizzarle con un sistema per HVAC? 

 

Mi potete dare dei suggerimenti sui filtri da usare? cosa ne pensate della separazione degli IO tramite il modbus per limitare le interferenze? queste possono arrivare solo dai collegamenti elettrici, mica anche dalle radiazioni elettromagnetiche in ambiente?

Link to comment
Share on other sites

Oltre al quesito di prima sempre aperto cercavo di ragionare sull'esempio di Livio sulla necessità di usare solo l'azione proporzionale e non quella integrale e derivativa e l'esempio dei due motori. L'esempio mi torna perchè i due motori hanno le stesse velocità angolari e reagiscono agli input allo stesso modo (lineare).

 

Nella parzializzazione di una valvola miscelatrice invece non c'è lineare proporzionalità tra percentuale di apertura della valvola e incremento di temperatura. Sicuramente piu apre la valvola e piu la variable controllata aumenta, ma non in modo lineare. Questo aspetto mi fa intuire ( ma solo intuire ) che se uso solo P senza I e D avrò un sistema forse piu lento o instabile perchè all'aumentare della T target e quindi diminuzione dell'errore inizio subito a parzializzare (rallentando il sistema) quando magari la velocità di aumento è bassa e potrei stare a valvola completamente aperta per piu tempo. Sbaglio vero? Dove?

 

Mi è chiaro che il sistema deve lavorare a valvola completamente aperta se T target è sotto un certo X e iniziare a parzializzare solo quando ci avviciniamo al target. Ho compreso il concetto di banda proporzionale.

Link to comment
Share on other sites

Quote

fatta con Arduino prevedeva anche il comando diretto dei Relè e degli input?

 

No tutti i segnali da e verso il campo sono completamente separati. Fatta eccezione solo per le 2 termocoppie, perchè sarebbe troppo onoreso prevedere amplificatori di isolamento. Comunque il circuito di interfaccia è piuttosto robusto in ordine ai disturbi.

 

Quote

Sbaglio vero? Dove?

 

Te l'ho scritto prima. Dovresti analizzare tutto il sistema scrivendo le equazioni di trasferimento relative ai vari blocchi ed avresti la dimostrazione che non puoi usare il controllo integrale.

Se non puoi/vuoi fare questa analisi devi fare atto di fede.:smile:

Se tu controllassi la temperaturatura facendo ruotare più o meno velocemente un dispositivo come una pompa o un ventilatore, l'uso della correzione integrale sarebbe indispensabile.

Nel tuo caso invece tu apri più o meno un rubinetto, non hai necessità di memorizzare una correzione (è questo che fa l'integrale) perchè è l'attuatore stesso che fa da memoria. Se usassi anche l'integrale sul regolatore avresti una doppia integrazione.

 

Link to comment
Share on other sites

Ok, penso che forse anche l'intuito si sta allineando. Ora ho un'altra domanda sempre basica: come si trova la relazione tra l'output dell'algoritmo pid e la posizione in cui devo far posizionare la valvola? In input do solo la temperatura attuale e quella target, l'output cos'è? Non mi torna come collegare questo valore alla posizione attuale e nuova della valvola (nel mio caso devo indicare un valore tra 0 e 10v oppure un valore pwm)

 

Idealmente sarebbe bello che l'output fosse esattamente il valore da inviare all'attuatore.

 

Altra domanda meno banale (forse): non mi è chiaro come si comporta il sistema in rapporto alla velocità di rotazione della valvola miscelatrice. Questa ci mette circa 40 secondi per fare una rotazione completa, diciamo che io faccio un run dell'algoritmo ogni secondo. L'output dell'algoritmo è un'indicazione del valore assoluto su dove posizionarmi o uno scostamento relativo rispetto alla posizione attuale? Nel secondo caso sarebbe piu problematico vista la latenza di rotazione. C'è infatti da considerare anche il "tempo morto" ovvero il tempo che intercorre tra la variazione e il rilevamento dell'effetto della variazione che dipende dalla lunghezza del tubo tra miscelatrice e sonda, velocità dell'acqua, temoo che il tubo imoiega per portarsi alla nuova temperatura del fluido interno e tempo necessario alla sonda NTC a contatto a rilevare la nuova temperatura sul tubo. Penso che la somma di tutti questi tempi sia notevolmente maggiore della frequenza di campionamento.

 

in generale quando fermo il circolatore e poi riparto, alla ripartenza si deve partire con la valvola nella precedente posizione, valvola tutta aperta o tutta chiusa? Immagino che convenga lasciarla nell'ultima posizione anche se l'algoritmo partendo rilevando T molto bassa (causa anche tubo raffreddato) prova ad aprire tutto per poi posizionarsi bene o male dopo un po di tempo sempre nell'ultima posizione dove prima era stato trovato l'equilibrio. Giusto? 

Link to comment
Share on other sites

Quote

Idealmente sarebbe bello che l'output fosse esattamente il valore da inviare all'attuatore.

 

Questo non lo puoi avere con un P(ID), mai. Questo regolatore ha bisogno di un errore che elaborato genera un valore di riferimento.

Semplificando molto, se vuoi una corrispondenza come quella ipotizzata dovresti avere un modello ed un osservatore.

 

La tua corrispondenza, usando un regolatore P è data dal tempo di comando un funzione dell'errore.

Anzi solitamente i regolatori a loop aperto per questo tipo di valvole danno una serie di impulsi di comando, gli impulsi sono ravvicinati tra loro ad errore grande poi, mano a mano che l'errore diminuisce, si distanziano sempre più nel tempo.

 

Differente il ragionamento sarebbe se tu avessi una retroazione di posizione della valvola, allora si che hai un regoatore PI di posizione, dove il valore di posizione di riferimento è ottenuto da un calcolo che considera la temperatura dell'acqua di mandata, quella dell'acqua di ritorno e la temperatura dell'acqua che si vuole ottenere.

 

Il circolatore si avvia quando l'acqa che esce dalla vlavola ha una temperatura superiore ad un certa soglia, indipendentemente dall'apertura della valvola.

Solitamente per i riscaldamenti a pavimento, a soffitto, a parete, il circolatore è sempre in moto e la modulazione della valvola serve a mantenere la temperatura dell'acqua entro il valore prefissato, valore che dipende dalla temperatura esterna e dalla temperatura ambiente.

 

Quote

non mi è chiaro come si comporta il sistema in rapporto alla velocità di rotazione .....

 

Te l'ho scritto sopra come generalmente si risolve il problema.

Link to comment
Share on other sites

Buongiorno Livio,

  grazie ancora dei tuoi contributi. Purtroppo però non sono riuscito a capire nella pratica cosa fare. A me sembra però che la mia applicazione ricada proprio nell'esempio di retroazione di posizione della valvola (ho cercato un po su google questi termini).

Penso che gli input e output del sistema siano chiari, ma li ripeto.

In input ho: temperatura di mandata attuale (sonda NTC), temperatura di ritorno attuale (sonda NTC) e la temperatura di Mandata Target (in base all'attuatore, es Belimo, potrei avere anche la % di apertura attuale della valvola)

In output (dal P/PI/PID o dal sistema che lo sfrutta) devo avere un valore 0-100% (che trasformo in un output 0-10v o eventualmente in un PWM a impulsi)

 

Mi puoi dare qualche indicazione più pratica su come fare? anche link di cose da studiare. Sicuramente non sto reinventando la ruota.

 

 

Se posso permettermi, e se ho inteso bene il tuo ultimo paragrafo, forse c'è un errore nell'affermazione sul circolatore. Senza avviare il circolatore non posso miscelare mandata e ritorno, quindi non è tecnicamente possibile far partire il circolatore quando la temperatura è superiore a una certa soglia. Concordo poi che negli impianti radianti il circolatore è (quasi) sempre in moto. Si tende di solito ad abbassare le temperatura di mandata quando tutte le zone stanno raggiungendo la temperatura (o se T esterna aumenta=>climatica) e non di fermarlo. Però comunque il caso va contemplato.

 

Grazie ancora per i consigli che potrai darmi.

Link to comment
Share on other sites

Se devi fare una regolazione 0/10V su una valvola in base a operazioni matematiche di dati sonde e leggere/inviare dati in modbus,perché non provi ha farlo con un piccolo PLC con software gratuito e con modbus integrato(c'è l'imbarazzo della scelta),così eviti i costi di acquisto dei programmi di sviluppo e le certificazioni obbligatorie dell'apparato elettronico per la messa in servizio.

Link to comment
Share on other sites

per il segnale 0-10v non è un grosso problema perchè compro degli adattatori modbus con 4 uscite 0-10V. Per il software di sviluppo usando raspberry uso i tool che già ho in azienda; per i plc devo imparare tutto da zero. Ho visto quelli di eliwell e Siemens Logo e non lavorandoci ci si deve un pochino ammattire per imparare le basi.

 

Per ora restiamo un attiamo sul problema software del mio post precedente, poi vedo hw :)

Link to comment
Share on other sites

Non posso farti un corso completo di tecnica di regolazione automatica con qualche messaggio.:smile:

 

Per prima cosa cerca di mettere dei punti fermi alla strategia che vuoi adottare.

La valvola ha o non ha una reatro azione di posizione?

Tu vuoi controllare la temperatura di mandata o vuoi controllare la posizione della valvola che controllerà la temperatura?

Sono domande fondamentali perchè stabiliscono la filosofia di regolazione un anello, 2 anelli.

 

Quote

Per ora restiamo un attiamo sul problema software del mio post precedente, poi vedo hw

 

Assolutamente no! prima si stabilisce la filosofoa di regolazione, in base a questa si determina il tipo di apparati da usare. Il Sw di regolazione poi è una logica conseguenza.
 

Quote

 

Per il software di sviluppo usando raspberry uso i tool che già ho in azienda;

 

 

Ma stai sviluppando un prodotto per casa tua od un prodotto inbdustriale - commerciale, perchè nel secondo scaso dimentica raspberry e altri gicattoli simili.

Link to comment
Share on other sites

Sto sviluppando un prodotto per casa mia. La valvola devo ancora sceglierla; so solo che il tubo è da 40, la valvola deve essere da un pollice e la portata 2900 L/h

 

Sicuramente non è facile rispondere a quesiti con retroscena complessi con 2 righe. Se mi dai qualche input e cose da studiare mi cimento :)

 

Io voglio controllare la temperatura di mandata, per il tramite della posizione della valvola. Quindi il mio software in base agli input che indicavo prima deve impostare la posizione della valvola in un range 0-100%.

 

Per quanto riguarda la mia affermazione di vedere prima il software e poi l'hardware intendevo proprio quello che hai risposto. Prima dobbiamo capire come regolare e poi dopo si scelgono apparati etc

 

grazie ancora

Link to comment
Share on other sites

Ti posso solo dare la mia esperienza personale sul vecchio impianto di casa mia che aveva tutte regolazioni analogiche.

I sensori erano sulla temperatura interna ed esterna.

Il termostato sul tubo di mandata comandava il funzionamento del circolatore sopra una determinata soglia, mentre quello sulla temperatura di ritorno bloccava l'even tuale ulteriore apertura della valvola.

Ma questo era un impianto a radiatori.

 

Tu dovrai aumentare la temperatura della portata in funzione della temperatura esterna e della temepratura interna.

Per prima coso dovrai trovare il modo più adatto per calcolare questo valore che sarà il valore di riferimento.

Poi fai un'apertura ad impulsi della tua valvalo sentendo sia lo scostamento, proporzionale, sia la tendenza ad aumentare o diminuire della temperatura.

Praticamente un regolatore PD.

 

Tutto quello che ti posso dire io è questo.

Non so consigliarti dove e cosa leggere se non testi generali per le tecniche di regolazione e qualche specialistico di termotecnica.

Molto lo puoi inparare dalla pratica, per tentativi succesivi.

La scelta della valvola.

Se scegli una valvola senza reazione di posizione la regolazione sarà più lenta ma più facile.

Se scegli quella con retroazione di posizione i vantaggi li avrrai se, e solo se, sarai in grado di associare una corrispondenza biunivoca tra temperatura di mandata ed angolo di apertura della valvola, cosa che non è semplice ne facile specie se non si ha una storia alle spalle da cui attingere.

Link to comment
Share on other sites

Buongiorno Livio,

  si il problema di cambiare la temperatura di Mandata in funzione della temperatura esterna e interna è un'aspetto extra a quello del regolatore PID, che dovrà cercare di raggiungere una T target diversa in base a questi calcoli.

 

Ora mi premeva più che altro capire come passare dal valore di output dell'algoritmo PID a quello che devo dare in input alla valvola. Sappiamo per certo che non c'è una relazione lineare tra % di apertura ed effetto della miscelazione.

 

Quote

 

Poi fai un'apertura ad impulsi della tua valvalo sentendo sia lo scostamento, proporzionale, sia la tendenza ad aumentare o diminuire della temperatura.

Praticamente un regolatore PD.

 

 

Mi sta quindi dicendo che al di la del valore numerico in output dell'algoritmo devo andare poi a tentoni per di quanto far aprire o chiudere la valvola? (o a impulsi o con 0-10V non cambia molto penso)

Link to comment
Share on other sites

Quote

Mi sta quindi dicendo che al di la del valore numerico in output dell'algoritmo devo andare poi a tentoni per di quanto far aprire o chiudere la valvola? (o a impulsi o con 0-10V non cambia molto penso)

 

Se comandi la valvola con 0-10V significa far muovere più velocemente la valvola in proporzione della tensione di comando. Però questo tipo di comando è presente sulle valvole motorizzate con retroazione di posizione.

In questo caso si fa un vero e proprio posizionamento con PID per regolare la posizione, però a monte ci deve essere un algoritmo che stima la posizione da raggiungere in funzione della temperatura da mantenere.

Personalmente te lo sconsiglio per questo tipo di applicazione.

Se comandi la valvola ad impulsi la velocità di apertura-chiusura è data dai rapporti comando attivo - comado fermo.

Cerco di chiarirlo con un esempio.

Ammettiamo di avere 30" di tempo totale di apertura ed anche che l'apertura sia proporzionale al tempo di comando, ovvero comando per 10", ad esempio, valvola aperta ad 1/3, comando per 15" apertura al 50% e così via.

 

Ora se dai 1" di comando intervallato da 1" di fermo la valvola impieghera 60" per aprirsi totalmente; mentre se dai 1" di comando intervallato da 2" di fermo la valvola impieghera 90" per aprirsi totalmente.

Se tu parti con 50% di duty cycle, 1" on e 1" off ad esempio, sommando i tempi di apertura hai, come prima indicazione la posizione stimata della valvola.

Se dopo 8 cicli, ad esempio, noti un deciso aumento della rapidità con cui la temperaturra dell'acqua aumenta, riduci il rapporto dal 50% al 30" (per esempio).

Questo più che un derivativo è un anticipo di reazione, ovvero è l'influenza della derivata della reazione sul comando.

Il tempo on - off lo stabilisci in base all'errore della variabile controllata.

Link to comment
Share on other sites

mi sembra molto più complesso fare senza 0-10, leggendo il suggerimento che mi davi

 

Quote

 

Se comandi la valvola con 0-10V significa far muovere più velocemente la valvola in proporzione della tensione di comando. Però questo tipo di comando è presente sulle valvole motorizzate con retroazione di posizione.

In questo caso si fa un vero e proprio posizionamento con PID per regolare la posizione, però a monte ci deve essere un algoritmo che stima la posizione da raggiungere in funzione della temperatura da mantenere.

 

 

Comandare la valvola con 0-10V non sembra che significhi far muovere la valvola più o meno velocemente; significa solo che se dai 0v la valvola si chiude (ci mette il tempo che ci mette - es 40 secondi se sta al lato opposto), se do 10V si apre totalmente, e cosi via con tutte le gradazioni intermedie. In pratica a 0-10V corrisponde apertura 0-100%

 

In realtà l'algoritmo dovrebbe stimare la posizione non in funzione della temperatura da mantenere (sto andando per intuito/logica), ma in funzione del risultato del PID. La temperatura che cerca di mantenere dipende infatti non solo da T target ma anche dalla T di mandata che sto ottenendo grazie alla miscelazione col ritorno.

 

Quello stavo cercando di capire, come fare a collegare il risultato dato dal PID / PI con l'output 0-10V (o 0-100%)  e tenere in considerazione comunque che tra un ciclo e l'altro in realtà non sto misurando l'effetto dell'impostazione data un secondo prima perchè c'è la latenza della valvola :(:(

Comunque al di la della latenza sto cercando di capire la relazione tra output pid e 0-100% - potrebbe essere anche un algoritmo a inseguimento per cui non calcola la posizione esatta (cosa che non penso possa fare), ma cerca di inseguire la posizione in cui converge / oscilla meno avanti e indietro

 

 

ps non so perchè ma non mi arrivano le notifiche per email del forum :(

 

 

Link to comment
Share on other sites

Quote

Comandare la valvola con 0-10V non sembra che significhi far muovere la valvola più o meno velocemente; significa solo che se dai 0v la valvola si chiude (ci mette il tempo che ci mette - es 40 secondi se sta al lato opposto), se do 10V si apre totalmente, e cosi via con tutte le gradazioni intermedie. In pratica a 0-10V corrisponde apertura 0-100%

 

Questo se trovi una valvola con l'anello di posizione integrato.

In questo caso puoi usare tutte e 3 le componenti PID per regolare la temperatura dell'acqua.

 

Quote

In realtà l'algoritmo dovrebbe stimare la posizione non in funzione della temperatura da mantenere (sto andando per intuito/logica), ma in funzione del risultato del PID.

 

Non confondere il calcolo del valore di consegna del regolatore con il regolatore.

Un regolatore PID confronta il valore della variabile con il valore di consegna e corregge in modo proporzionale all'errore (correzione immediata), integra l'errore (azzeramento dell'errore), e proprozionale alla derivata dell'errore.

Ha un'ingresso ed un'uscita.

 

Tu stai facendo molta confusione.

O usi un regolatore tipo PID oppure usi un regolatore con modello ed osservatore. Nel secondo caso puoi avere più ingressi.

 

Fare un buon caffè sembr facile, ma alla prova dei fatti è più difficile di quello che sembra: si devono considerare miscela del caffè, tipo di acqua, attrezzo per produrre la bevanda ed anche qualche altra variabile.

Similmente quello che vuoi fare tu. O fai un semplikce regolatore PID o fai un regolatore più complesso.

Comunque qualsiasi soluzione tu scelga sembra facile ma è tuttlatro che facile fare un buon regolatore per il tipo di problema che intendi affrontare.

Non per niente ci sono aziende specializzate che fanno solo quello.

Link to comment
Share on other sites

non penso che sto confondendo il calcolo del valore di consegna col regolatore, magari ho spiegato male ma intendo quello che dici te. 

 

Guardando un pò di algoritmi in giro e letto un po di documenti di aziende specializzate e università comunque penso di essermi fatta qualche idea per fare delle prove. Ho visto anche delle soluzioni anti wind-up causate dai problemi di integrazione. La parte che mi risulta più ostile e un pò più spannometrica è collegare il risultato del calcolo del PID (che comunque come unità di misura ha i gradi nel mio caso, avendo come target una temperatura) con il range 0-10v. Ho visto che Alcuni propongono di usare una banda proporzionale per cui all'estremo inferiore (nel caso di riscaldamento) c'è il 10V e in quello superiore lo 0v; nel mezzo va interpolato il range di output del pid.

 

ho sviluppato molti algoritmi e euristiche in vita mia da progettista informatico ma volevo evitare di seguire un'euristica (approssimazione) quando magari c'è un metodo più preciso e algoritmico.

Link to comment
Share on other sites

Ho trovato questo blog e una libreria PID per arduino che adatterò per raspberry:

 

http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/

 

sto imparando tanto qui, lo segnalo a tutti :)

 

dovrò farmi un modello excel per fare delle simulazioni e capire anche come applicare il concetto delle bande proporzionali

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