Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Equazione Pid


Messaggi consigliati

Inserito:

Per fare un PID e magari per fare un esempio, visto che l'ho fatto proprio adesso nel mio laboratorio, una termoregolazione con un plc con i suoi blcchi standard occorrono 10 minuti. Poi il plc che stò usando (Unitronics V230) ha anche l'autotune, quindi 10 minuti di configurazione e 10 di autotune visto che la termoregolazione è lenta in tutto 20 minuti. Precisione 0,1 °C. Bene benissimo. Ma cosa c'è dietro i blocchi standard del plc. Oltre al tutorial di Livio Orsini ho letto anche questo bel documento http://www.procoel.com/PID.PDF ed ho voluto provare il suo funzionamento. L'equazione da seguire è:

Yn = Yn-1 + [(K*(Xn-Xn-1)) + (K * T / Ti * Xn + K * Td / T) * (Xn - 2Xn-1 + Xn-2)]

dove:

Yn = l'uscita del pid attuale

Yn-1 = l'uscita del pid del ciclo precedente

K = banda proporzionale

T = sample time

Ti = tempo integrale

Td = tempo derivativo

Xn = errore = SetPoint - PV (per PV interndo la Process Variable per esempio la temperatura letta dalla termoresistenza)

Xn-1 = errore del ciclo precedente

Xn-2 = errore di 2 cicli precedenti

Per far fare questi calcoli al plc sono stati sufficienti 10 minuti di lavoro. Ma Quali parametri inserire K, Ti, TD, T?. Semplice ho pensato!!! Per iniziare mettiamo quelli calcolati dal plc con l'autotune. K = 48 (unità di 0,1%), Ti = 9 s, Td = 1019 s, T = 1000 mS. (perchè dopo vrorei costruire la mia routine di autotune)

Inseriti i parametri, richiamata la routine ogni 1000 mS, assicuratomi che i calcoli li facesse per bene è inutile che vi dica tutto fila liscio come l'olio.

Devo dire che si muove, cammina, arranca + che altro, ma non c'è paragone con il PID standard.

Allego il codice in ladder ben commentato (credo), con la speranza di qualche suggerimento. Una volta che mi assicuri che il tutto gira bene vorrei fare una routine di Autotune.

Codice Ladder

P.S. Per correttezza Vi dico che questo post è presente anche sul forum di Electro portal, ma probabilmente essendo tale forum piu' specializzato in altri settori non ha riscosso particolare successo, anche probabilmente perchè fà caldo e giustamente la gente và al mare.

saluti

Fabio


Inserita:

Suibaf, ho dato un aletta veloce. Mi sembra che l'equazione che hai impostato faccia dei giri di pista inutili e forse anche dannosi. Forse è per questo che più che camminare arranca. Se hai letto il mio tutorial avrai notato che che l'eqauzione è molto più semplice. Ti garantisco che così i miei regolatori non camminano, ma corrono come ...Bolt :)

Inserita:

Livio, rileggendo ho visto di aver sbagliato a mettere le parantesi.

Yn = Yn-1 + [(K*(Xn-Xn-1)) + (K * T / Ti * Xn) + ((K * Td / T) * (Xn - 2Xn-1 + Xn-2))]

così dovrebbe andar bene. Non mi sembra difficilissima questa...(certo se funzionasse meglio!!!). In linea di massima ci sono le tre componenti P, I, D che vanno sommate/sottratte al valore precedente di comando Y(n-1).

La tua sarebbe questa:

Yn = (error * Kp) + (I + i_inst) + (Kd * (error – old_error))

dove error = SP- PV (setpoint - process value) ; i_inst = error * chi ; old_error = error del ciclo precedente

ecco il grado di difficoltà mi sembra simile. Quello che mi mette in difficolta sono i sei parametri Upper_P_limit, Upper_I_limit, Upper_D_limit, Upper_Total_limit

Lower_P_limit, Lower _I_limit, Lower _D_limit.

Per carità capisco anche la loro utilità, ma non sò come gestirli, da dove partire, che valori gli dò.

ciao

Inserita:

Se raffronti le due equazioni vedi che c'è una bella differenza.

Poi i limiti assumono un valore che dipende dal processo da controllare e da come si realizza il controllo. Qui il discorso diventa lunghissimo, ci vorrebbero decine di pagine per darne almeno un'idea completa. Tieni presente che l'unico limite veramente importante, anzi fondamentale, è che la correzione totale in codice, non superi il valore massimo ammesso dal D/A. Cerco di chiarire con un esempio. Se con 7FFh ottieni 10V, limite massimo positivo per il D/A, solitamente scrivendo 800h ottieni 0v o -10v, in funzione del tipo di codifica usato dal D/A.

Poi può essere importante porre un limite massimo alla correzione integrale, per evitarne la saturazione. Però se la regolazione funziona bene il vlaore di integrale si mantiene prossimo allo zero. Ma questo implica anche l'adozione di feed forward, come spiego nel tutorial.

Se hai letto bene il mio tutorial hai anche capito che cos'è il tempo integrale, quindi dovresti sabere che non deve entrare nell'eqauzione, ma è una diretta conseguenza del tempo di campionamento e dei coefficienti di moltiplicazione proporzionale e integrale

Inserita:

Livio, effettivamente i miei sono esperimenti che mi servono essenzialmente a capire bene come funziona una regolazione pid senza usare i blocchi standard che ci sono nei plc(e non capire nulla).

Come ti dicevo ho tutto quello che mi serve, piastra riscaldata a resistenza, pt100 per la rilevazione della temperatura, plc unitronics v230, ssr....tutto quello che serve.

Adesso scrivo la tua equazione nel plc. Come parametri di partenza, posso usare quelli ricavati dall'autotune del blocco standard? o non sono validi in quanto magari usano un'altro procedimento matematico?

Dammi una mano, quali step devo seguire una volta che il codice è scritto nel plc?

ciao

Inserita:

Se hai letto il mio tutorial dovresti aver letto come si procede per la taratura di un PID.

Che sia un vecchio analogico o un moderno discretizzato le cose non cambiano.

Riassumo la procedura perchè è sempre valida.

Si esclude l'integrale; condensatore infinito (aperto) nell'analogico e jump nel software. Si esclude anche il derivativo.

Si cresce gradualmente il coefficiente di guadagno proporzionale sino a quando il sistema inizia a diventare instabile. Come si verifica l'inizio di instabilità? Semplicemente variando il valore di consegna (set point) di un gradino pari a circa il 10%. Quando si cominciano a notare oscillazioni smorzate in uscita si è ragiunto il limite di stabilità. Si diminuisce un poco il valore del Kp.

Poi si inserisce l'integrale partendo alti valori di capacità (tempi d'integrazione lungo); nel caso di PI software si usano valori di Ki piccoli, per poi crescere il valore di Ki in modo da velocizzare l'integrale. Al raggiungimento del limite di stabilità, si diminuisce un poco il Ki.

Se necessario si inserisce il derivativo partendo da valori di Kd piccoli, crescendo fino ad avere un buon compromesso tra velocità di risposta e stabilità.

Tieni presente che se invece di usare la variazione di errore (de/dt) usi la variazione di reazione, cioè effettui la derivata della reazione, hai un comportamento migliore sulle variazioni di set point.

Ultimo, ma importantissimo, il tempo di campionamento. Il tempo di campionamento, ovvero il periodo di ripetizione della funzione PID, deve essere tale da risultare trascurabile nei confronti dei tempi di reazione del processo, ma non deve essere nemmeno troppo veloce perchè sprecherebbe inutilmente risorse di CPU.

Nel tuo caso devi valutare quale può essere la velocità di variazione della temperatura dando piena potenza e quale è la minima risoluzione del trasduttore.

Facciamo l'ipotesi che tu possa apprezzare 0.05o C e che, alla massima potenza, la temperatura possa variare di 2o C /1" ovvero di 0,002o C/ms. Con questi valori un periodo di campionamento pari a 10 ms sarebbe corretto; 5ms sarebbe il limite iltre il quale è inutile andare.

Inserita: (modificato)

Livio ti ringrazio. Provvedo subito a fare tutti i test del caso. A livello di informazione secondo te i parametri che si è calcolati il plc con la funzione di autotune come ti sembrano? secondo tè si fa degli scalaggi interni? (come ti dicevo si tratta di una termoregolazione.)

E' mia intenzione una volta portato a regime la funzione pid con il metodo che mi hai appena esposto di scrivere una funzione mia di autotune seguendo il metodo di Ziegler-Nichols. E adesso che ci penso vorrei approfondire e introdurre nel sistema di regolazione il concetto della banda morta.

A presto

Fabio

Modificato: da suibaf
Inserita:
A livello di informazione secondo te i parametri che si è calcolati il plc con la funzione di autotune come ti sembrano?

Vanno bene per quel regolatore, e non per altri.

La banda morta deve essere sempre utilizzata. Specie sui regolatori quantizzati. In pratica è un test che si fa all'inizio della funzione. Se errore < banda morta esco dalla funzione lasciando l'uscita invariata.

Inserita:

Ciao Livio. Il regolatore funziona e devo dire che mi sembra il più semplice da analizzare in fase di regolazione. Ora devo capire per bene come settare gli otto limiti tenendo presente che come uscita del regolatore mi serve una variabile 0-1000.

>Tieni presente che se invece di usare la variazione di errore (de/dt) usi la variazione di reazione, cioè effettui la derivata della reazione, hai un comportamento >migliore sulle variazioni di set point.

Quindi sarebbe meglio usare la variazione di reazione là dove il SP si cambia spesso perchè dipende magari da un'altra variabile di processo?

ciao

Fabio

Inserita:

Ciao Livio.

Vorrei fare una routine per la ricerca dei parametri in automatico con le regole di ziegler nichols. Pensi sia fattibile? i parametri che tirerei fuori sarebbero proprio i ns kp chi e kd o dovrebbero essere ulteriormente elaborati?

ciao

Fabio

Inserita:
Quindi sarebbe meglio usare la variazione....

Io uso sempre l'anticipo di reazione; ci sono solo vantaggi rispetto alla derivata classica sull'errore.

Poi ci sono casi in cui uso la derivata, ma non nel modo canonico; qui però il discorso si fa molto lungo e complesso.....

Vorrei fare una routine per la ricerca dei parametri in automatico con le regole di ziegler nichols. Pensi sia fattibile?

Per essere fattibile lo è senz'altro; io però non ho mai affrontato il problema perchè alla fin fine lo trovo inutile.

L'autotaratura è ottima per problemi standard come, ad esempio, termoregolatori e azionamenti. Quando invece ti dedichi a regolazioni un po' particolari, dove è più utile l'applicazione di un regolatore personalizzazto, l'autotaratura ha poco senso. L'ottimizzazione dovrà comunque essere "rifinita a mano"

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