Come ottimizzare un controller PID su un processo non lineare?
Non Si linearizza il processo, quindi si fa funzionare il controller PID sui valori lineari.
Con "linearizzare il processo", non intendo realmente rendere lineare il processo stesso. Questo di solito non può essere fatto a causa della fisica. Tuttavia, è possibile inserire qualcosa di non lineare tra l'output del controller PID e l'input del processo in modo che l'output PID controlli linearmente il processo dal punto di vista del controller PID.
Tale linearizzatore non deve essere molto preciso poiché si trova all'interno del circuito di feedback. Lo scopo è quello di dare l'apparenza di un guadagno approssimativamente costante attraverso la gamma dinamica di controllo. Un modo semplice e generale è una funzione lineare basata su tabella basata sul pezzo. 16 o 32 segmenti sono in genere sufficienti per qualsiasi cosa tranne processi molto non lineari.
L'esempio peggiore in cui mi sono imbattuto è stato il controllo della corrente attraverso un tubo elettronico cambiando la forza con cui è stato guidato il filamento del catodo. La funzione della temperatura del catodo nella corrente del fascio di elettroni è altamente non lineare e anche il sistema che controlla la corrente del filamento del catodo era in qualche modo non lineare. In questo caso era troppo difficile prevedere tutto questo casino, quindi durante la produzione ho usato una procedura di calibrazione che ha superato i valori di controllo dell'inverter, ho misurato la corrente del fascio per ciascuno, quindi ho calcolato una tabella di ricerca a 32 segmenti. Ha funzionato molto bene e siamo riusciti a mettere a punto il controller PID della corrente del fascio per una buona risposta su tutta la gamma.
Senza una funzione di linearizzazione di fronte al processo, è necessario ottimizzare il controller PID per la stabilità nel punto di guadagno incrementale più alto del processo. Ciò si traduce quindi in un comportamento molto smorzato in altri punti.
aggiunto
Nulla nella tua domanda aggiornata dice nulla sul perché il metodo sopra non sia ancora una buona idea e applicabile. Dici che stai usando un controller analogico. La mia prima reazione è "Gli anni '80 sono ormai lontani, non farlo". Tuttavia, il controller PID e il linearizzatore dell'impianto possono essere indipendenti.
Apparentemente l'ingresso dell'impianto è energia e l'uscita è temperatura. Misurare la temperatura tipica allo stato stazionario a una gamma di livelli di potenza. Da ciò è possibile calcolare la funzione che converte la "potenza" linearizzata nell'effettivo input di potenza dell'impianto. Il controller PID analogico sta presumibilmente emettendo una tensione proporzionale alla potenza. Tutto quello che devi fare è inserire una scatola nera in linea con quella tensione che fa la misura lineare per la conversione del livello di potenza effettiva.
Normalmente lo faresti con un microcontrollore che ha un A / D incorporato. Fare questa ricerca nella tabella e l'interpolazione lineare tra i punti è banale. Quindi emette il risultato in un modo che alla fine viene convertito in una tensione. Poiché l'impianto è lento rispetto a un microcontrollore, questo potrebbe essere facile come filtrare e bufferizzare un'uscita PWM. Oppure potresti guidare direttamente un D / A, anche se in questo caso non sembra necessario.
In linea con il tema degli anni '80 del controller, potresti farlo con A / D, memoria e D / A per un tocco retrò.
In ogni caso, il controller PID ora sta controllando efficacemente un impianto lineare per quanto ne sa, e dovrebbe essere possibile regolarlo su buone prestazioni.
Effettuare una trasformazione lineare a tratti sull'ingresso dell'impianto in un punto è più semplice che modificare 3 valori all'interno del controller PID nell'intervallo di uscita. Il secondo è un problema, mentre il primo affronta direttamente il problema. È anche molto più semplice misurare i dati per la funzione di linearizzazione piuttosto che determinare i guadagni P, I e D in vari punti. Anche se lo hai fatto, hai ancora problemi temporanei, poiché i guadagni giusti non vengono immediatamente applicati alla situazione. Anche in questo caso "guadagno di programmazione" è un kludge.