Vai al contenuto
PLC Forum


Plc 317 - PID controllo su OB


Mauro_lab

Messaggi consigliati

Buon giorno

Mi domandavo se vi è un limite nella gestione dei PID

La questione è questa, io ho circa 24 PID che utilizzano la funzione di libreria FB41

Di solito utilizzo l'OB35 per il lancio a circa 500mS di ogni PID

La domanda è questa, posso mettere tutti i PID in una unica OB oppure sarebbe meglio utilissare piu OB, e se è si quanti PID per OB mettere?

In attesa di riscontro saluto

Mauro

Link al commento
Condividi su altri siti


Livio Orsini

Ci sono 2 parametri fondamentali: la percentuale di occupazione di CPU ed il tempo ottimale di regolazione.

Prendiamo ad esempio il problema che hai descritto. Hai 24 PID che si presuppone regoleranno 24 processi.

Tu dici che usi uno scheduler di 500 ms.

Se per ipotesi lanci i regolatori in serie, uno ogni 500 ms, avrai un tempo di regolazione per ogni PID, pari a 12". In altri termini ogni processo avrà un tempo di rinfresco pari a 12".

Se invece ipotizzi il lancio dei 24 regolatori in parallelo, considerando 5 ms, ad esempio, come tempo medio di risoluzione per ogni regolatore, la CPU sarà occupata 120 ms ogni 500 ms per risolvere i PID; in altri termini il 24% delle risorse della CPU sono occupate dai regolatori.

Darti un consiglio serio, su come organizzare al meglio il tuo sistema, con i soli dati che hai riportato, non possibile.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Salve

Cerco di essere piu preciso

usando i Cyclic Interrupt della OB35 che dovrebbe essere settata dal sistema a 100mS, significa che nei 100mS vengono risolti i 24 PID, ovviamente i 100mS possono essere aumentati in 500mS essendo non necessaria una velocita superiore.

Ovviamente se utilizzatti altre OB (es. OB36, OB37 ecc.. ) ha senso se volessi utilizzare velocità differenti di interrup.

I regolatori in oggetto non hanno particolari problemi di velocità, essendo in gran parte controlli di livello e/o di temperatura.

Il tutto ha un aggiornamento impostato di ogni parametro a 1 S sul sistema di S.V.

La disquisizione è data sul fatto di non caricare eccessivamente una OB, ma se è utile dividere su 2 o piu OB i processi PID.

Il sistema utilizza DB di appoggio dati e DB a tabelle per la configurazione e settaggio, sfruttando la naturale ritenzione di questi oggetti.

Pertanto non credo che si debba preoccupare di una eventuale perdita dati, e nemmeno di una eccessiva velocita da sostenere essendo tutto risolvibile nell'unita di un secondo.

La mia preoccupazione è solo data di non caricare eccessivamente una OB rispetto ad altre richiamate nella principale OB1

Quello che ho scritto ha un fondamento di verità oppure è una mia idea e i tempi sono differenti da quelli che mi sto aspettando?

Link al commento
Condividi su altri siti

Livio Orsini

Il problema non è il carico di un OB o blocco organizzativo; il vero problema è il carico di CPU. Puoi suddividere o meno il richiamo in uno o più blocchi organizzativi ma il tempo per eseguire un PID non muta, anzi si allunga leggermente. Nei due esempi limite del mio messaggio #2 c'è l'essenza del problema. Sta a te verificare il tempo medio necessario per l'esecuzione di un regolatore e decidere come e quando richiamare le 24 funzioni.

Link al commento
Condividi su altri siti

L'esecuzione di FB41 su una 317 credo (ma è da verificare) non porti via più di 0.2ms.

L'esecuzione di tutti i 24 PID richiederebbe quindi circa 5 ms.

Se questi tempi sono corretti, potresti anche richiamare tutti i PID insieme in OB35.

Però si può fare qualcosa di meglio, anche utilizzando solo OB35, senza tirare in ballo altri OB a tempo.

Per esempio, potresti lasciare l'esecuzione di OB35 ai 100ms di default, e utilizzare una variabile per contare i cicli da 1 a 5.

Poi nel ciclo 1 lanci un gruppo di PID, nel ciclo 2 un altro gruppo, e così via.

Alla fine, ogni PID verrà rielaborato sempre ogni 500ms, ma le esecuzioni di OB35 saranno più leggere.

Link al commento
Condividi su altri siti

Capisco che il carico della CPU è importante e va monitorato in fase di startUP

Ora sono ancora in fase progettuale e non ho ancora l'idea del carico finale del sistema.

Purtroppo il progetto è un pelo complesso, ed avro una piu' chiaro riferimento alla fine dello sviluppo

Non sono solo i 24 PID che possono caricare la CPU ma anche le 150 conversioni dei segnali analogici, la gestioni dei 600 livelli di di allarme a loro associati, e i segnali digitali I/O e la gestione delle sottoreti ET200S in profibus.

E se non bastasse vi sono una serie di calcoli da gestire per la ricalibrazione in cascata di alcuni dei PID.

Comunque, è sempre bene cercare di suddividere sin dalle prime fasi i carichi di lavoro dei vari sistemi.

Grazie del vostri interventi che sono sempre illuminanti

Link al commento
Condividi su altri siti

Non sono solo i 24 PID che possono caricare la CPU ma anche le 150 conversioni dei segnali analogici, la gestioni dei 600 livelli di di allarme a loro associati, e i segnali digitali I/O e la gestione delle sottoreti ET200S in profibus.

E' chiaro che se su un impianto ci sono 24 PID di regolazione, c'è anche dell'altro.

Proprio per questo è meglio suddividere le esecuzioni dei PID e di altre eventuali funzioni simili.

Comunque, 24 PID, 150 conversioni di segnali analogici e tutto il resto, per una 317 non sono certo un problema.

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