Vai al contenuto
PLC Forum


Pid E Scansione I/O Analogiche


suppaman87

Messaggi consigliati

Buongiorno a tutti.

Ho una CPU S7-314C utilizzata per il controllo di un impianto di evaporazione.

Questo plc tra le altre cose che già fa, ora dovrà anche gestire quattro regolatori PID, due di temperatura e due di pressione.

I tempi di controllo non sono poi così rapidi, per il più veloce dei quattro ho definito un ciclo di scansione di 200ms

Il mio dubbio riguarda come appunto scritto nel titolo, il ciclo di acquisizione degli ingressi analogici .

Le funzioni PID sono ovviamente richiamate ad interrupt. La lettura/scalatura degli ingressi analogici invece al momento viene fatta nel normale ciclo, diciamo per capirci in OB1 quindi con un tempo non costante.

Secondo voi la lettura del segnale effettuata con un tempo diverso rispetto all'interrupt del PID di controllo, può generare errori nel controllore? Magari con tempi lunghi tipo 500ms o 1sec l'errore è meno significativo rispetto a loop di controllo più veloci?

Eventualmente pensavo di tenere comunque la lettura delle analogiche in OB1, e poi fare una ulteriore lettura all'interno del pid. Due dei quattro controlli ciclano a 2secondi, quindi facendo solo la lettura all'interno del pid o il refresh della variabile un po lento visto che poi questi valori vengono anche visualizzati su di un pannello.

Lo stesso discorso vale anche per il segnale analogico di uscita.. In questo caso visto che le valvole possono essere comandate anche in manuale, quando sono in automatico scrivi l'uscita direttamente nel blocco di interrupt del pid, viceversa in manuale la escludo e la scrivo nell'OB1

Forse ho fatto un po di confusione.. spero si capisca ciò che ho scritto.

Grazie a tutti intanto.

Link al commento
Condividi su altri siti


Se il tempo di campionamento del PID è elevato, il fatto che il valore analogico della variabile di processo sia acquisito in OB1 è praticamente irrilevante.

Non è invece trascurabile per PID veloci.

Nel tuo caso, con il PID più veloce elaborato ogni 200 ms, l'errore introdotto con lettura PV in OB1 non dovrebbe incidere molto.

Per fare le cose nel modo giusto però, io ti consiglierei di leggere i valori analogici quando elabori il relativo PID.

Così facendo, soprattutto per i PID più lenti (2s), tale valore verrà aggiornato con una certa lentezza anche sul pannello operatore.

Però, se hai impostato l'elaborazione del PID ogni 2 secondi, significa che si tratta di un controllo con variabile di processo che varia molto lentamente. Questo ritardo sul pannello operatore quindi è solo una questione filosofica.

Da un punto di vista pratico, è assolutamente irrilevante.

La lettura in OB1 e anche nel PID mi pare quindi un doppione inutile.

Lo stesso vale, a mio avviso, per il comando delle uscite. Se sei in presenza di un processo lento, avere un ritardo di due secondi sul comando è insignificante.

Link al commento
Condividi su altri siti

Io porterei direttamete le PEW e PAW come INPUT e OUTPUT del PID così lo stato delle AI e AO vengono aggiornato subito dal controllore, invece le EW e le AW vengono aggiornate solo con l'immagine di processo I e immagime processo O all'inizio dell'OB1.

Nell'eventualità puoi comunque configurare l'immagine di processo parziale ma solo per una OB a schedulazione visto che hai un 300.

Ciao

Link al commento
Condividi su altri siti

Vi ringrazio intanto per i consigli.

Il dubbio della doppia scrittura mi era nato semplicemente per il fatto del comando manuale.

Magari in fase di test, o in casi particolari con l'impianto fermo se sto comandando la valvola ad esempio aperta al 100%, e mi accorgo improvvisamente che devo chiuderla perché c'è un tubo aperto e sto svuotando un serbatoio, comandando le uscite dal pid nel caso dei 2sec, la chiusura non sarebbe istantanea.

Link al commento
Condividi su altri siti

Io porterei direttamete le PEW e PAW come INPUT e OUTPUT del PID..

Questo è l'approccio corretto. Variazioni dei tempi dia cquisizione e aggiornamento, anche percentualmente piccole rispetto al tempo di richiamo del PID, comportano comunque del rumore di regolazione, rumore che spesso si maschera variando l'ottimizzazione dei paramentri del regolatore.

Questo jitter sul campionamento è un caso di studio classico nei corsi sulle tecniche di regolazione numerica. In tutti i testi (seri) c'è sempre almento un capitolo che ne tratta.

Nel caso dello S7 - 2xx (ma acnhe dello S7-3xx) i tempi di conversione del convertitore A/D non sono ne piccoli ne nulli, ma sono abbastanza rilevanti e bisogna tenerne conto. In caso di regolatori veloci e schede di conversione lente la regolazione diventa impossibile.

Link al commento
Condividi su altri siti

E' sempre un piacere leggere le delucidazioni di Livio Orsini, in tanti anni di programmazione ho sentito pochissima gente parlare di Jitter......... :(

Comunque in casa di regolazioni veloci come dice Livio il tempo di conversione dell'hw è un parametro per nulla sottovalutabile, non conosco bene i sistemi s7-200 ma nel 300 e 400 vi sono schede di AI e AO con tempi di conversione dell'ordine del 1ms (valore comunque da prendere con le pinze, visto che è inficiato da altri parametri di contorno....vedi diagnostiche vari abilitate, numero di canali attivi ecc. ecc.).

Comunque detto questo, ti posso assicurare che queste schede diciamo "Fast" nelle mie applicazioni un po' spinte hanno fatto il loro sporco lavoro in modo decoroso, le ho appilcate per esegurire dei controlli velocità e potenza di una turbina a vapore.

A presto.

Ciao

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