Newsgroup: it.hobby.elettronica.digitale
Titolo: Il PID definitivo

Ciao,
 
per i PID esistono molte implementazioni, con accorgimenti particolari 
come ad es. limitazione setpoint, saturazione integrale, integrazione 
condizionata ecc...
Idem per quanto riguarda il dominio delle variabili di ingresso e 
uscita, pensiamo al controllo di rotta che utilizza un'aritmetica modulo 
360 con tutti i problemi connessi.
 
Finora ho sempre realizzato PID specifici per l'applicazione anche a 
causa delle limitate risorse.
 
Adesso però ho a disposizione un micro più capiente e vorrei realizzare 
il "PID definitivo" ovvero che includa tutte le funzionalità utili, 
attivabili e parametrizzabili di volta in volta.
 
Al solito, prima di reinventare l'acqua calda, scrivendo da zero e con 
le mie capacità una libreria del genere domando se qualcuno conosce un 
codice di riferimento con queste caratteristiche.
 
Grazie!
Marco


In BeRTOS tempo fa era stato contribuito un modulo PID abbastanza 
generico, ma non saprei se definirlo "definitivo" abbastanza. Magari lo 
puoi usare come base di partenza:
 
http://dev.bertos.org/browser/trunk/bertos/algo/pid_control.h
 
http://dev.bertos.org/browser/trunk/bertos/algo/pid_control.c
 
 
Se ti va di estenderlo i contributi sono sempre ben accetti ;-)
 
Ciao!
 
-- 
  _|/ Francesco Sacchi - Develer S.r.l., R&D dept.
   |\ 
http://www.develer.com/
 - 
http://www.bertos.org
 

 Se ti va di estenderlo i contributi sono sempre ben accetti ;-)
 
 
Ciao Francesco,
 
si, avevo già visto il vostro pid e in effetti è abbastanza generico 
seppure adatto alle situazioni più comuni.
Ho diversi accorgimenti che inserisco nei miei pid. Eventualmente provo 
a implementarli partendo dalla base di bertos così da sottoporti poi il 
file modificato.
 
Grazie!
Marco
 

 codice di riferimento con queste caratteristiche.
 
Mi ricordo che un capitolo del libro "C Unleashed" era dedicato alla 
implementazione di un controllo PID.  Nel capitolo erano sviluppati 
diversi algoritmi con tanto di simulatori e ricordo che la pagina 
dell'autore di quel capitolo conteneva i codici scaricabili.
 
http://jk-technology.com/C_Unleashed/code_list.html
 
 
 


Non esistono PID definitivi, ma se tieni conto di tutti
gli accorgimenti possibili, ci vai vicino...
In piu' per implementazioni PID un poco evolute utilizzano
un certo numero di set con parametri diversi.
Ad esempio, per motion-control e' usuale avere set di
parametri PID differenti in funzione della velocita',
in modo da avere a velocita' basse o nulle un set di PID
diverso da quello a velocita' piu' alte etc....
 
AA.
 

 diverso da quello a velocita' piu' alte etc....
 
 
Si, questo già lo applico ma a livello di API. Sfrutto cioè la funzione 
di memorizzazione dei coefficienti per caricare il set di parametri più 
opportuno in quella situazione (e per inizializzare i filtri).
 
Quanto all'aritmetica sessagesimale, a parte spalmare gli 0-360° su 
tutto il range uint (c'era stato un thread in proposito tempo fa) c'è 
qualche altra possibilità che mi permetta di gestire il dato 
direttamente in gradi?
 
Marco
 

 direttamente in gradi?
????
 
A

 ????
 
 
Prova a dare in pasto a un PID direttamente il valore di una prua.... ;)
 
Marco
 

 in condizione dinamica (a run-time) a fronte di una condizione-limite!
 
 
Ehm, scusate se mi introduco...
Non sono un programmatore, ma, e l'autotuning?
Come si implementa?
 
Ciao
OlMirko 
 
 

Il 06/11/2011 10:48, Marco Trapanese ha scritto:

mi spieghi per cosa li usi normalmente?
 
 
 

 mi spieghi per cosa li usi normalmente?
 
 
Controllo di stabilità, rotta e profondità di veicoli subacquei; in 
situazioni più semplici controllo di temperatura o pressione.
 
Marco
 


Sinceramente non ho mai ottenuto granche' da algoritmi
da autotunig... dipende pero' dall' applicazione e
da processo da controllare. Per segure temperature
e grandezze simili, dove anche dei parametri PID
spannometrici funzionano piu' o meno bene, vanno
benissimo. Se no occorre avere una buona conoscenza
del processo da controllare.
 
Leggi questo:
http://w3.gel.ulaval.ca/~desbiens/publications/DevelopmentOfAnAutoTuningPID.pdf
 
 
Anche questo e' interessante:
http://www.ifac-control.org/publications/list-of-professional-briefs/pb_final_levacoxruano.pdf/view
 
 
POI per come si implementa una particolare versione di
un algoritmo di autotuning dipende dal problema a cui
lo devi applicare e dalle tue particolari conoscenze :-)
 
AA.

 Prova a dare in pasto a un PID direttamente il valore di una prua.... ;)
Cioe' hai ingresso e uscita del regolatore che
lavora in gradi 0..360....
Non dovrebbe cambiare molto, non e' molto diverso
che lavorare con assi rotativi, che lavorano
appunto tra 0 e 360 gradi :-)
A.
 
 
 

 ha scritto nel messaggio 
news:j994tk$7ps$1...@tdi.cu.mi.it...

Hai provato con filtraggi tipo il Kalman?
Qualche anno abbiamo ottenuto buoni risultati per la realizzazione di un 
sistema per puntatura
In sostanza un grosso trasformatore al quale viene parzializzata la corrente 
al primario
Sul secondario, si arriva a far scorrere una corrente dalle centinaia alle 
migliaia di ampere, che fonde il punto di saldatura
10-20 periodi di rete e la saldatura e' pronta
Il problema sono le variabilita' durante la saldatura, il controllo deve 
mantenere la corrente costante, ma durante i primi periodi di saldatura il 
metallo fonde e la resistenza si abbassa repentinamente facendo aumentare 
bruscamente la corrente, bisogna quindi parzializzare maggiormente al 
primario
Siamo partiti col classico pid ma le variabili da impostare mal si 
addicevano al fatto che il controllo elettronico, se installato su una 
saldatrice piu' potente (quindi stessa parzializzazione di rete=maggiore 
corrente in uscita) aveva bisogno di regolazioni ulteriori
Con un filtraggio di Kalman abbiamo ottenuto un sistema allo stesso tempo 
dinamico, rapido nell'arrivare ai valori necessari, ma molto stabile
Sistema che va bene, di serie, su macchine con potenza diversa
Magari per la stabilizzazione di un rov subacqueo e' la stessa cosa
Certo che mi piacerebbe molto lavorare su un progetto simile
Ciao
RobertoA
 
 
 

 appunto tra 0 e 360 gradi :-)
 
 
 
Si, ma senza opportuni accorgimenti un normale PID (o anche filtro 
digitale) non lavora.
 
Marco

 Magari per la stabilizzazione di un rov subacqueo e' la stessa cosa
 
 
I filtri di Kalman vengono usati per condizionare le uscite dei sensori 
(IMU). Se questi dati sono sufficientemente puliti, un normale PID fa il 
suo sporco lavoro.
Altrimenti potrebbe benissimo essere che si possa guadagnare qualcosa in 
termini di prestazioni, e in effetti sulla "lista dei desideri" ci sono 
alcune giornate da dedicare proprio a questa cosa. Sempre che queste 
giornate mi vengano concesse :)
 
Ciao!
Marco
 

 lo devi applicare e dalle tue particolari conoscenze :-)
 
Grazie.
Finora ho avuto a che fare, progettualmente, con sistemi di termoregolazione 
e con scanner, sempre con approccio analogico.
Ho però impiegato sistemi digitali di gestione assi di posizionamento e 
scanner, dove ho potuto apprezzare autotuning efficaci.
Sostanzialmente vengono inviati comandi periodici (tipicamente onde quadre o 
trapezoidali). Mi piacerebbe avere una pur vaga conoscenza delle tecniche di 
correzione automatica dei PID a partire, presumo, da posizione ed errore.
 
Ciao
OlMirko 
 
 


ma i filtri di kalman non si usano per minimizzare degli indici?
 

 ma i filtri di kalman non si usano per minimizzare degli indici?
 
 
Non conosco tutte le loro applicazioni, se cerchi in rete ne trovi 
parecchie. Quelle di cui ho qualche esperienza sono appunto filtri 
digitali, applicati ad es. a sensori tipo mems.
 
Marco
 
 

 
"berkeley" <aq...@qca.cedm> ha scritto nel messaggio 
news:j9ddal$pct$1...@speranza.aioe.org...

Si, ma anche per massimizzare i pollici
(scusa ma non ho resistito) 
 
 


rotfl


ma tu che lavoro fai... sembra molto interessante..

 ma tu che lavoro fai... sembra molto interessante..
 
 
Mah... mi guadagno da vivere progettando qualche scheda e scrivendo del 
firmware / software. Niente a che vedere con certi 'guru' che girano da 
queste parti, però non nego che è senz'altro interessante!
 
Marco


pensavo ti occupassi esclusivamente di controlli automatici