Regolatore PID, non è così semplice come sembra :)

Per tutti quelli che credono sia facile realizzare un pid ecco tutto quello che c'è dietro, dal punto di vista matematico, per realizzare un pid generico, poi tocca fare i conti anche con la reale tipologia di controllo e cosa dobbiamo controllare.

L'ottima presentazione è dell'amico Raffaello, dott. ing. in Automatica e attualmente ricercatore universitario, che ogni tanto passa pure su questo forum.
http://www.officinerobotiche.it/il-controllo/regolatore-pid/

Vi consiglio dare uno sguardo anche agli altri contenuti del sito.

x iscrizione, letto di corsa, necessita un pò di calma. Un pò azzardata l'affermazione sui clock e tempo machchina necessario all'esecuzione, senza specificare il micro di riferimento non ha valore se non per farsi un'idea.

lesto:
Un pò azzardata l'affermazione sui clock e tempo machchina necessario all'esecuzione, senza specificare il micro di riferimento non ha valore se non per farsi un'idea.

Il micro è un dsPIC33.

Raffaello ha corretto l'articolo specificando l'hardware utilizzato, in effetti la cosa era criptica.
La scheda è questa http://www.officinerobotiche.it/schede-elettroniche/motion-control/.

L'articolo è interessante ma troppo tecnico; nel senso che non è spiegato alla "Piero Angela", o come diceva il mio prof di Fisica II: "per l'uomo della strada".
Ci sono alcuni passaggi sottointesi che risultano difficili a chi non ha basi specifiche.

PaoloP:
L'articolo è interessante ma troppo tecnico; nel senso che non è spiegato alla "Piero Angela",

E' a livello universitario, ovviamente per comprenderlo a fondo occorrono solide basi matematiche avanzate, lo scopo di questa segnalazione è cercare di far capire che realizzare un pid non è una passeggiata come molti affermano, dietro c'è molta matematica che deve essere affrontata ogni volta che si scrive un pid.

Concordo con Paolo, troppo specialistico per l'utente medio. :sweat_smile:

a sto punto vi linko anche il mio corso universitario di controlli e automatica, almeno bestemmiate anche voi :grin: Materiale didattico di Controlli Automatici (INF, ord. 270)

in molti casi converrebbe dare in input NON l'errore,ma l'uscita del pid (o ramo di retroazione)..

Questa dispensa è interessante --> http://www.ladispe.polito.it/corsi/contrautoinf270/material/21_Regolatori%20PID.pdf

Questa guida non è fatta male, affronta l'argomento trattandolo in maniera comprensiva e con l'Arduino come obiettivo, per cui trovate la trasposizione in codice degli argomenti matematici trattati.
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/

Interessante ma costoso. Però è opensource e openhardware, quindi replicabile --> osPID – The Open Source PID Controller

PaoloP:
Interessante ma costoso.

Che cosa, scusa??

@PaoloP: ho messo il link all'intero corso dato che qualcuno forse vorrebbe anche le basi :wink:

leo72:

PaoloP:
Interessante ma costoso.

Che cosa, scusa??

L'osPID.

Trovo l'articolo ben fatto ma in effetti un po' stringato.
Non è trattata la stabilità del sistema retroazionato che impone delle condizioni ad esempio sul valore di Ki (calcolabili ad esempio tramite la tabella di Routh)
Nell'ambito robotico ci sono poi diverse estensioni da trattare per migliorare il controllo che non sono toccate

Ciao

Non dicevo naturalmente di dimostrare tutto, ma magari dare proprio solo la condizione di stabilità e il nome o i concetti base delle estensioni del PID.

Senza tanti compendi e compendi, basterebbe la formula che ti dice il valore che Ki non deve superare, per un principiante (più che altro un intermedio) sarebbe già un'informazione interessante.
Un principiante non ci capirebbe nulla lo stesso secondo me in quell'articolo, è rivolto perlomeno ad ing. triennali o quasi.

lock:
A che pro ? Sulla stabilita' bisognerebbe fre un compendio lunghissimo, inadatto al principiante, e troppo scarno per quello piu' scafato, e ci sono cosi' tante questioni in ballo (1) che la stabilita' si comprende molto meglio in S che in Z, semplicemente perche' in S sei seduto sul continuo e ci sono meno cose da considerare, quindi andrebbe fatto semmai un rimando all'automatica dell'ABC, quella che poggia su equazioni EDO, e solo dopo affrontato il passaggio al discreto, e ancora non ho detto DSP, al codice finale ci si arriva solo a titoli di coda del film.

Tutto questo metterlo in una paginetta per qualcuno che non ha mai visto un PID e' come mettere una intera mucca di qualche quintale su una griglia che porta al massimo qualche bistecca.

(1) tra cui anche su che accipicchia di hardware finale poi implementi, nella fattispecie quanti bit, che rappresentazione numerica, la ALU ha o non ha saturazione.

Sono anche io della stessa idea, e non credo si possa semplificare e rendere appieno quanto condensato in quella pagina, però non è detto che non si possa fare un approfondimento e magari verrà fuori in futuro e scritto dalla stessa mano.

Chi conosce i circuiti di reazione analogica trova similitudine con quanto esposto in quella pagina, tuttavia in un circuito di reazione negativa esiste il guadagno ad anello aperto e da questo si può ricavare il guadagno ad anello chiuso, come pure la banda passante può essere nota, così come la rotazione di fase che può portare il circuito ad instabilità ecc e io da quelle formule io non so ricavare il guadagno open loop, e tutto il resto, in sostanza non sono in grado di fare il salto da analogico a digitale e ovviamente conoscere i simboli matematici mi aiuterebbe tanto. Per questo motivo ritengo che il contenuto di quella pagina è un inizio e pertanto non si può avere la pretesa di capire tutto in mezza giornata.

Cosa accade se il circuito di reazione risponde lentamente in relazione allo stimolo? Può succedere di tutto, cioè la reazione da negativa può diventare positiva e gli effetti dipendono dalla applicazione e sono sentiti tanto più rapido deve essere il tempo di reazione, che idealmente dovrebbe essere nullo. Questo dovrebbe far capire che il PID oltre a richiedere la taratura dei tre parametri principali richiede una ottimizzazione che dipende dalla applicazione finale. Con fenomeni a varazione relativamente lenta qualunque PID funzionerà senza tante storie, questo è ad esempio il caso della gestione di una resistenza elettrica montata all'interno di un forno.

Ciao.

Mi è piaciuto il taglio che Raffaello ha dato all'articolo. Non si trovano spesso su internet articoli che trattano nello specifico solo come si discretizza un PID. Chiaro questo articolo prescinde da tutta la teoria che c'è dietro e da per scontata la conoscenza delle funzioni di trasferimento, altrimenti non sarebbe mai stato su una pagina e a scapito della leggibilità.

Un paio di richieste/annotazioni: secondo me dovrebbe aggiungere qualche considerazione in più sulla realizzabilità del derivatore, sugli effetti dei ritardi dovuti da ADC e DAC o PWM. Inoltre qualche informazione in più sull'implementazione du microcontrollore. Perchè un dsPIC? che prestazioni servono...
Così sembra un po' una lezione di Bolzern (uno degli autori dei testi citati), basterebbe un tocco di praticità in più e diventerebbe "pop".

Carino anche il sito. Complimenti a Raffaello.