Vai al contenuto
PLC Forum


Controllore P.i.d.


visedragon

Messaggi consigliati

Salve a tutti,

mi sono iscritto in questo interessantissimo forum per ricevere qualche consiglio riguardo al progetto su cui sto lavorando, se possibile: utlizzando un plc della B&R ho implementato un controllore pid utilizzando le librerie di sistema relative. La misura da acquisire è una distanza (utilizzando sensori ad ultrasuoni con uscita analogica 4-20 mA) e il controllo è effettuato su un'elettrovalvola pneumatica ad aria compressa (segnale di controllo: 0-10 V) che gonfiando e sgonfiando una bolla di film plastico, modifica il valore attuale di distanza rispetto al setpoint inserito.

Per filtrare il segnale dei sensori ad ultrasuoni (soggetti a forte rumore) quando si è in prossimità del setpoint, ho implementato un filtro sw a due stadi:

- il primo confronta il campione attuale col precedente: se la differenza è superiore alla variazione massima realizzabile tra due istanti di campionamento, allora il campione attuale viene scartato e al suo posto è mantenuto il precedente, altrimenti è questo a passare al secondo stadio di filtraggio

- il secondo calcola media e variazione standard dei primi 500 campioni acquisiti in condizione e implementa una banda passante di media +- 2*sigma: se il campione supera uno dei due limiti di banda (superiore o inferiore), viene sostituito col limite superato stesso.

Il primo stadio ha il compito di riconoscere le variazioni di misura da semplici picchi di segnale dovuto al rumore, il secondo stadio invece di taglaire l'informazione utile al 95,5% che secondo la Statistica è più che sufficente per eseguire e stabilizzare una regolazione.

I parametri del pid infine sono calcolati grazie all'utilizzo di una particolare funzione di autotuning, sempre da libreria di sistema, che si adatta al meglio delle sue possibilità al particolare sistema da regolare.

Volevo sapere se in linea di massima non ho commesso grossi sbagli in quanto la prossima settimana procederemo con l'instalalzione del prototipo. Per eventuali chiarimenti sono a disposizione!

Mattia

Link al commento
Condividi su altri siti


Maha detto così potrebbe essere perfetto oppure potrebbe essere completamente sbagliato.

Sono troppe le incognite.

Accenno solo a qualche punto interrogativo, ma la lista sarebbe molto lunga.

Per prima cosa il PID è integrato nel sistema, si avvale delle librerie di sistema del PLC e non si sa se è adatto o meno alla bisogna.

Poi tu parli di una media su 500 campioni senza accennare ai tempi; questa media potrebbe inserire un ritardo insopportabile dal sistema. Idem per il primo filtraggio.

Inoltre non dici nulla in ordine al sistema controllato.

Posso solo darti un0idea generale. Le cose che funzionano meglio sono le più semplici. Più complichi una funzione più è facile che tu vada incontro a problemi.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

e il controllo è effettuato su un'elettrovalvola pneumatica ad aria compressa (segnale di controllo: 0-10 V)

Se utilizzavi un controllo con valvola proporzionale per un pistone idraulico, avrei capito l'uso di tutti questi filtri ma per

comandare una valvola ad aria compressa, non ne vedo proprio l'esigenza!

L'errore di ResposeTime introdotto dall'attuatore si comporta giò da filtro di per se stesso!! :blink:

Link al commento
Condividi su altri siti

Se utilizzavi un controllo con valvola proporzionale per un pistone idraulico, avrei capito l'uso di tutti questi filtri ma per

comandare una valvola ad aria compressa, non ne vedo proprio l'esigenza!

Concordo con alen :rolleyes:

Ora io non ho idea delle prestazioni che vuoi ottenere, ma non mi imbarcherei in una cosa simile a me no che non intendi far raggiungere al sistema una particolare dinamica.

I parametri del pid infine sono calcolati grazie all'utilizzo di una particolare funzione di autotuning, sempre da libreria di sistema, che si adatta al meglio delle sue possibilità al particolare sistema da regolare.

Fortuna che esistono i PID con Autotuning se no le cose per te si sarebbero complicate notevolmente.

Link al commento
Condividi su altri siti

La misura da acquisire è una distanza (utilizzando sensori ad ultrasuoni con uscita analogica 4-20 mA) e il controllo è effettuato su un'elettrovalvola pneumatica ad aria compressa (segnale di controllo: 0-10 V) che gonfiando e sgonfiando una bolla di film plastico, modifica il valore attuale di distanza rispetto al setpoint inserito.
Forse meglio dire 'valvola di regolazione direzionale proporzionale' .. ;) .. Avete mica usato quella della Festo type MPYE ..?
che gonfiando e sgonfiando una bolla di film plastico
Come sarebbe fatto questo marchingegno, cosi' a grandi llinee.. non vorrei calpestarvi il copyright :P
Link al commento
Condividi su altri siti

Ciao a tutti,

innanzitutto grazie per le risposte.

Per approfondire un po' la conoscenza del sistema, posso riportare che i campionamenti sono dell'ordine di 20/30 al secondo circa (legato al limite dell'eletrtronica dei sensori ad ultrasuoni oggi disponibili sul mercato), che sempre secondo le leggi della Statistica sarebbe sufficente raccoglierne 100 in quanto un numero più elevato non intoduce ulteriore informazione utile (ne uso 500 solo per "sfizio" diciamo, ma l'idea è quella di portarli a 100-150, quindi il ritardo introdotto dal filtro sarebbe dell'ordine di qualche secondo, più che accettabile secondo quanto è disponibile oggi come concorrenza).

Naturalmente il rischio maggiore è che il PID di libreria di sistema non sia in grado di eseguire la regolazione perchè inadatto... Quale potrebbe essere una via alternativa? Ho iniziato a studiare la Fuzzy Logic dietro consiglio del mio direttore tecnico, ma più la approfondisco più mi sembra ancor meno adatta perchè troppo semplicistica...

Grazie in anticipo

Mattia

Link al commento
Condividi su altri siti

Dimenticavo: la valvola utilizzata è un regolatore elettropneumatico della SMC, serie ITV. Va montato su una valvola molto più grande posta sulle soffianti di gonfiaggio (o sgonfiaggio, dipende la cliente) comandata con un pistoncino pneumatico con ritorno a molla. Quando desidero gonfiare, l'ITV immette aria compressa nel pistoncino della valvola più grande che così si apre e fa passare l'aria. Quyest'ultima poi può essere una comune valvola a farfalla o una leggermente più precisa valvola a iride.

Mattia

Link al commento
Condividi su altri siti

Naturalmente il rischio maggiore è che il PID di libreria di sistema non sia in grado di eseguire la regolazione perchè inadatto.

Scusa che metodo di regolazione matematica utilizza lo sai ??

Link al commento
Condividi su altri siti

Ho iniziato a studiare la Fuzzy Logic dietro consiglio del mio direttore tecnico, ma più la approfondisco più mi sembra ancor meno adatta perchè troppo semplicistica...

Concordo con il tuo direttore tecnico: sembra proprio una regolazione da Fuzzy Logic. Non confondere il semplice con il semplicistico!

Con i tempi di campionamento e, sopra a tutto, con i successivi ritardi introdotti da filtri e medie, qualsiasi PID non dovrebbe avere problemi, semprechè usato in modo corretto.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Salve, a me pare un pò eccessivo utilizare una tecnica di controllo Fuzzy per questa applicazione, non capisco perchè un regolatore PID non sia in grado di svolgere il compito richiesto :huh:

Comunque se vuoi apprendere qualcosa di utile e pratico a riguardo della Logica così detta "sfumata", Matlab offre un tool "Fuzzy Logic Toolbox" molto facile ed intuitiva con un piccolo manuale in pdf e qualche demo da sbrogliare.

PS sia chiaro è tutto in inglese! :P

Modificato: da Bender83
Link al commento
Condividi su altri siti

Salve, a me pare un pò eccessivo utilizare una tecnica di controllo Fuzzy per questa applicazione, non capisco perchè un regolatore PID non sia in grado di svolgere il compito richiesto

Da quanto scritto, un regolatore PID deve gestire bene il problema. Però questo tipo di problemi possono essere affrontati in modo vantaggioso con le tecniche fuzzy. Anche un controllo di temperatura si risolve mediamente bene con un regolatore PID, però in molti casi un approccio fuzzy da risultati migliori.

Link al commento
Condividi su altri siti

Ha perfettamente ragione! Lei saprà meglio di me che è un controllo realizzato in "logica qualitativa" quindi molto spesso è difficile in fase di "fuzzyficazione" tradurre quelli che potrebbero essere i valori assunti dalla variabile di comando in linguaggio naturale, attraverso i costrutti (molto,abbastanza,poco, molto poco,ecc).

Nell'esempio che ha proposto lei, ritengo che si riferisca ad una applicazione civile, la variabile da controllore è solo una ma gli ingressi sono più di uno: unmidità, temperatura esterna, temperatura interna mentre le variabili di comando sono il livello di ventilazione, temperatura della resistenza, de/umidificatore quindi capirà che in questo calderone di variabili è plausibile un approccio simile in quanto non si è in grado di deffinire quale sarebbe la temperatura ottimale (entro un determinato range naturalmente).

Detto questo credo che il problema presentato sia un tantino più semplice per quanto riguarda le variabili in gioco e più complesso per quanto riguarda la precisione :D

Link al commento
Condividi su altri siti

Di regola sul forum ci si da del tu come tra coleghi :) quindi lasciamo perdere il lei.

Detto questo credo che il problema presentato sia un tantino più semplice per quanto riguarda le variabili in gioco e più complesso per quanto riguarda la precisione

Noi di questo problema conosciamo solo quanto scritto da "visedragon" e, forse, dalle esperienze personali pregresse. Io credo di intuire, proprio per esperienza dal campo, che il problema sia un pochino meno semplice di quanto possa apparire. Dipende da tante cose, però ho l'impressione che sia uno di qui casi in cui la regolazione migliore sia quella che rispecchia la strategia di un operatore umano, con tempi di risposta da macchina :D . Per l'appunto un controllore fuzzy è quello che più si avvicina alla metodologia dell'umano.

Anni fa mi ero innamorato di questo tipo di regolazione, ne vedevo un gran futuro specialmente applicando controllori studiati appositamente allo scopo. Ho ancora in casa dei micro fuzzy della Neural logic ed il relativo sistema di sviluppo. Ho avuto anche l'immenso piacere di parlare direttamente con Ziadech in occasione di un incotro organizzato a Milano (1992). Poi l'interesse dei grossi calibri della componentistica si smorzò. Si preferì "fuzzificare" usando controllori tradizionali dotandoli di strumenti software adatti alla bisogna. In pratica oggi il settore in cui si usa maggiormente la logica fuzzy è il riconoscimento d'immagine e la messa a fuoco automatica. Però è un peccato. Ci sarebbero molte applicazioni vantaggiose in altri campi come, ad esempio, i posizionamenti.

Ma questo è tutto un altro discorso ed è OT

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Non vorrei continuare ulteriormente su questo argomento per evitare di passare per quello che fa polemica, cosa che non desidero affato, però vorrei esprimere solo qualche altro mio punto di vista :D

Innanzitutto esprimo la mia invidia nei suoi confronti dato che ha avuto il privileggio di incontrare il grande Zadeh, ma non sono d'accordo con quanto afferma riguardo il futuro della Logica Fuzzy! (mi scusi ma è più forte di me non dare del "lei" ad una persona più grande di me) :lol:

Io provvengo dal settore universitario dove mi è stato propinato questo argomento come valido metodo di controllo, assieme a tutto il lato teorico mi è stato "inculcato" come e dove una metodologia simile può essere applicata con sucesso, per tanto ritengo che sia compito dei progettisti e tecnici dare un nuovo impulso in tale settore.

Con ciò chiudo. :)

Link al commento
Condividi su altri siti

Sempre e solo per informazione e non per polemica.

Io provvengo dal settore universitario dove mi è stato propinato....

Ecco forse è proprio questo il punto, la dicotomia tutta italiana tra università e mondo reale :angry: . Purtroppo non si è continuato sulla strada di processori specifici per fuzzy, mancando i grandi volumi di produzione. In ordine al futuro di questa tecnica non dico niente, visto il passato. La teoria Ziadech la sviluppo dei primi anni 50, venne tratato alla stregua di un pazzoide, rimase dormiente per decenni fino a che, fine anni 80, ebbe un notevole rilancio, poi il picco si ridusse di molto. Oggi vivacchia confinata in applicazioni di nicchia. Può essere che fra un anno, cinque anni o più avrà un'altro picco, magari legato a nuovi componenti legati alle nano tecnologie, oppure potrebbe anche tornare completamente nell'oblio. Una sola cosa è certa: anche il futuro per la tecnica fuzzy è....fuzzy :)

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

La teoria Ziadech la sviluppo dei primi anni 50, venne tratato alla stregua di un pazzoide,

Questa è la sorte di tutti i geni!!

In Italia poi siamo specializzati per far scappare le menti..... o per segregare l'innovazione per vari motivi, vedi Da Vinci e Galileo!! :rolleyes:

Link al commento
Condividi su altri siti

In Italia poi siamo specializzati per far scappare le menti.....

Strano ma questa volta la "furbata" l'han fatta gli altri :lol:

Ziadech, se ricordo bene, è ungherese e le sue teorie le presentò in USA, dove ha insegnato in alcune università. Quindi è lì che lo hanno trattato con condiscendenza. Anche gli Yankees qualche cavolata l'han fatta. Per esempio i MOSFET, in ambiente universitario, erano stati sperimentati negli anni '40, furono abbandonati perchè non si riusciva a sviluppare una teoria che spiegasse il fenomeno :angry:

Link al commento
Condividi su altri siti

erano stati sperimentati negli anni '40, furono abbandonati perchè non si riusciva a sviluppare una teoria che spiegasse il fenomeno

Sarà la fine della Fusione Fredda ??.... :blink:

Link al commento
Condividi su altri siti

Buongiorno a tutti,

innanzittutto grazie ancora per gli spunti... Volevo poi descrivere un po' i primi risultati dal campo: il controllore pid funziona abbastanza bene per quanto riguarda il raggiungimento del setpoint partendo dal valore attuale. I problemi nascono quando il setpoint viene raggiunto: ad ogni ciclo si viene a trovare sopra o sotto il setpoint, generando quindi un'azione correttiva contraria rispetto alla precedente. Questo modo di agire non va bene perchè nel caso della valvola usata (ITV è la serie: i numeri che seguono questa sigla dipendono dal tipo di alimentazione, pressione supportata, scala utilizzata per la visualizzazione, ecc.), si passa da uno stato di condotta dell'aria completamente aperta o completamente chiuso. Ciò alla lunga può generare usura meccanica dell'attuatore stesso che lavora da un fondoscala all'altro, senza regolazioni intermedie.

La prima soluzione che ho implementato è stato rallentare il pid una volta arrivati al setpoint (ma già dal sistema simulato vedo che si perde troppo in precisione di regolazione data la lentezza, che però assicura un'azione più dolce dell'attutaore), la seconda invece sarà tale da usare la "fuzzy logic": una volta a setpoint, il pid viene scollegato e il valore della valvola sarà tale da mantenere i flussi d'aria bilanciati (in modo da non perdere il setpoint, teoricamente...), poi a seconda di quanto ci si sarà scostati dal setpoint e dalla direzione di tale spostamento (misura maggiore o minore?) , si andrà a variare direttamente il segnale di controllo della valvola.

I problemi quindi saranno legati al dimensionamento delle varie soglie (questo è un piccolo spostamento positivo, questo è un grosso spostamento negativo, ecc.) e quindi ai relativi cambi di valore sul segnale di controllo.

Ci sono altre cose da considerare nella logica fuzzy (oltre a fuzzi..., controllo e defuzzi...?)?.

Grazie in anticipo

VD

Link al commento
Condividi su altri siti

I problemi nascono quando il setpoint viene raggiunto:

Se ai questo tipo di problema molto probabilmente sei in regime perturbato, ovvero il punto

di equilibrio della regolazione non viene raggiunto, dovresti fare una valutazione sul Traking Performances

per capire se al raggiungimento del SP l'errore statico tra PV e SP è di dimensioni rilevanti, se cosi fosse

i parametri di regolazione non sono corretti, dovresti impostarli per effettuare uno smorzamento ovvero:

Smorzamento = X/Y

Dove X = errore statico

Y = scarto successivo di una PV Oscillante

In ogni caso per una corretta impostazione di un PID in regime critico sono necessari dei trend di supporto.... e tanta pazienza :rolleyes:

Link al commento
Condividi su altri siti

La prima cosa a cui penso, da quanto scrivi, è che la risoluzione del tuo attuatore non sia sufficiente. In altri termini la minima variazione della valvola genera variazioni troppo grandi (detto in modo molto banale). Puoi agire su due direzioni: introdurre una banda borta di regolazione, cosa sempre utile, e/o aumentare, se possibile, la risoluzione dell'attuatore.

Poi i consigli di Alen, specie quello sulla pazienza :) , sono sempre validi.

Link al commento
Condividi su altri siti

No, l'attuatore va bene, il prblema è il controllo che per mantenere il setpoint invece di aumentare o diminuire leggermente un valore di equilibrio diciamo, agisce aprendo del tutto o chiudendo completamente la valvola, lavorando praticamente sempre da un fondoscala all'altro. Per questo volevo staccare il pid al raggiungimento del setpoint (prima si comporta bene comunque) e passare quindi a un fuzzy per effettuare il mantenimento in quanto mi assicura una regoalzione più dolce (misura act < misura sp => valore di equilibrio + 5; misura act << misura sp => valore di equilibrio + 10; e via così).

Quello che mi chiedevo è se basti semplicemente implementare un controllo così per realizzare la logica fuzzy o se invece devo considerare altre cose...

Grazie

VD

Link al commento
Condividi su altri siti

No, l'attuatore va bene, il prblema è il controllo che per mantenere il setpoint invece di aumentare o diminuire leggermente un valore di equilibrio diciamo, agisce aprendo del tutto o chiudendo completamente la valvola, lavorando praticamente sempre da un fondoscala all'altro.
Apparte di allargare la banda morta, sembrerebbe che i parametri impostati per il P e I non sono quelli giusti...
Link al commento
Condividi su altri siti

No, l'attuatore va bene, il prblema è il controllo che per mantenere il setpoint invece di aumentare o diminuire leggermente un valore di equilibrio diciamo, agisce aprendo del tutto o chiudendo completamente la valvola, lavorando praticamente sempre da un fondoscala all'altro.

No che non va bene. O hai una valvola tutto o niente (non adatta alla bisogna), oppure è il pilotaggio della valvola che è inadeguato.

Con un sistema siffatto non serve cambiare strategia di regolazione. Se la tua valvola è proporzionale, ovverossia l'apertura ha una corrispondenza biunivoca con iol segnale di pilotaggio, è il controllo che è sbagliato, non la strategia.

Tieni presente che, solitamente, l'apertura della valvola controlla la velocità del pistone, non la sua posizione; il tuo pallone lo puoi assimilare, entro certi limiti, al movimento di un pistone

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