Mauro_lab Inserito: 8 marzo 2011 Segnala Share Inserito: 8 marzo 2011 Buon giornoMi domandavo se vi è un limite nella gestione dei PIDLa questione è questa, io ho circa 24 PID che utilizzano la funzione di libreria FB41Di solito utilizzo l'OB35 per il lancio a circa 500mS di ogni PIDLa 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 salutoMauro Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 marzo 2011 Segnala Share Inserita: 8 marzo 2011 (modificato) 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: 8 marzo 2011 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
Mauro_lab Inserita: 8 marzo 2011 Autore Segnala Share Inserita: 8 marzo 2011 SalveCerco di essere piu precisousando 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 OB1Quello 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 More sharing options...
Livio Orsini Inserita: 8 marzo 2011 Segnala Share Inserita: 8 marzo 2011 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 More sharing options...
batta Inserita: 9 marzo 2011 Segnala Share Inserita: 9 marzo 2011 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 More sharing options...
Mauro_lab Inserita: 9 marzo 2011 Autore Segnala Share Inserita: 9 marzo 2011 Capisco che il carico della CPU è importante e va monitorato in fase di startUPOra 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 sviluppoNon 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 More sharing options...
batta Inserita: 10 marzo 2011 Segnala Share Inserita: 10 marzo 2011 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 More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora