Vai al contenuto
PLC Forum


Controllo Pid Programmazione


Stefano Santin

Messaggi consigliati

Stefano Santin

Buon sera a tutti,

questo è il mio promo post in questi forum. :)

Mi sto addentrando nell'implementazione di un regolatore PID in uno strumento prodotto dalla mia azienda.

Premetto che ho letto il tutorial del sig. Orsini e naturalmente trarò spunto dal suo esempio software pwe l'implementazione del sorgente C.

La mia applicazione è un semplice riscaldatore a set piont fisso (630°C) con un ciclo di regolazione di 15sec e tempo di campionamento di 0.1sec.

Il miodubbio riguarda due punti abbastanza fondamentali:

1) I'uscita del regolatore: :(

tenedo conto che l'errore del sistema è una temperatura e il mio comando è un tempo come faccio a correlare le due grandezze. Nel non è spiegato nel dettaglio.

2) Come facci ad fare una banda morta sulla regolazione? :(

Grazie per le eventuali spiegazioni.

Link al commento
Condividi su altri siti


Gianmario Pedrani

Non si capisce molto quello che chiedi, per la banda morta avrai un qualcosa che ti fa tornare in dietro la temperatura reale???? spero altrimenti è un regolatore ad anello aperto!!!!! :blink:

per fare una banda morta prendi il tuo set e sottrai e sommagli un k es: se il tuo set è 630 + k pos = banda morta positiva. poi fai 630 - k neg = banda morta negativa a questo punto confronti il tuo valore reale di temperatura e quando entra nella tua banda morta smetti di regolare

ciaooooooooooooo

Link al commento
Condividi su altri siti

A parte come realizzare la manda morta (la proposta di Pedrani è canonica) io vedo dei problemi nei tempi proposti: 0.1" di camapionamento e 15" secondi di tempo di ciclo (presumo corrisponda al 100% di PWM) mi sembrano troppo veloci per questa applicazione. Dovesti descrivere meglio il sistema in modo da avere un'idea dell'onerzie termiche del riscaldatore.

Per realizzare il regolatore devi creae una corrispozdenza tra % di tempo on e uscita del regolatore.

Se hai letto il mio tutorial, spece il 6.o capitoli, dovrebbe essere chiaro come fare.

Link al commento
Condividi su altri siti

Stefano Santin

Buon Giorno,

vi ringrazio per le vostre risposte. :D

Parto con una breve descrizione del mio sistema.

Il sistema è una sonda elettrochimica che deve essere riscaldata a 630°C per poter funzionare correattamente.

Il sistema è molto picco di dimensioni dicamo che la resistenza ad anello ha un diametro di 6cm e la termocoppia di misura è posta al cetro di esse protetta da un involucro in ceramica.

Lo scopo è quello di ottenere una temperatura al disopra dei 630°C ma che sia il più stabile possibile +/-3°

Questo motivo potrebbe essere necessario l'utilizzo della banda morta.

Per quanto riguarda i tempi di elaborazione il periodo di regolazione cioè ogni quanto l'uscita viene aggiornata è di 15sec ma è possibile cambiarlo

per quanto riguarda il tempo di campionamento della temperatura è fissato a 0.6sec ma il calclo del regolatore viene fatto ogni 0.1 sec (Questo è quanto ha fatto il mio predecessore) posso fare in modo di ricalcolare l'uscita ogni 0.6 sec perchè il timer è gia presente.

sempre nel codice che sto modificando l'errore di sistema (in gradi) viene moltiplicato per 7500 e il risultato di questa operazione viene utlizzato per il calcolo proporzionale. Suppogo che questo artifico serva per far in modo che il periodo del regolatore sia al 50% con errore tendente a 0, è giusta la mia interpretazione oppure mi è sfuggito qualcosa. ;)

Ciao

Stefano

Link al commento
Condividi su altri siti

E' sempre difficile entrare nella filosofia di un regolatore progettato da uno e descritto da un altro. Comunque vediamo di dare alcuni concetti generali.

Da come descivi l'elemento riscaldante il tempo di aggiornamento di 15 secondi può essere corretto.

Se campioni a 0.6 secondi la misura di temperatura (reazione) è inutile dannoso effettuare il calcolo ogni 0.1 secondo.

Suppongo che il resistore sia pilotato da un unterruttore allo stato solido (triac) con commutazione sullo zero per evitare disturbi.

Lavorando a 50hz la risoluzione minima vale 0.02", quindi se si tiene un tempo minimo di PWM di 0.1" risulterà abbastanza preciso.

Per comodità, se vuoi aggiornare l'uscita ogni 15 secondi, campiona ogni 0.15". Così avrai una risoluzione pari a 1%. Però l'esecuzione dell'algoritmo dovrà avvenire sempre e solo ogni 15". In pratica efettui la lettura, esegui i calcoli, oggiorni l'uscita, poi per 99 volte entri e, quando è trascorso il tempo di on, togli l'energia alla resistenza senza effetture calcoli o altro.

Fissi una soglia di temperatura, per esempio 550 C. Se non hai ancora raggiunto quella temperatura tieni senpre energizzata la resistenza. Oltre quella temperatura cominci a regolare.

Come stabilisci la corrispondenza tra errore e percentuale di PWM? Ti consiglio di farlo sperimentalmete. Per esempio prova ad impostare un tempo di chiusura di 4,5" su 15" (30%). Poi prendi nota di come sale la temperatura ed a quale temperatura raggiungi l'equilibrio termico, cioè a che temperatura si stabilizza il tuo elemento. In base a questi dati puoi stabilire il coefficiente di proporzionalità tra errore di temperatura e percentuale di on dell'elemento riscaldante.

Poi tieni presente che dovrai anche inserire un'azione integrale o di reset dell'errore, perchè con il solo proporzionale è impossibile annullare l'errore.

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