Vai al contenuto
PLC Forum


PID Compact: Errore tempo campionamento


ghezzia

Messaggi consigliati

Buon giorno,

Avrei bisogno un aiuto a comprendere (spero una volta per tutte) come funziona il blocco PID_Compact all'interno dell'OB35.

Nel mio caso, ho 9 blocchi PID_Compact per la regolazione della temperatura di alcuni stampi (3 stampi, ogni stampo ha 3 zone).

I blocchi sono all'interno dell'OB35 impostato a 1 sec, mentre ogni singolo blocco ha impostato come tempo di scansione 3 sec. (par. Retain/CtrlParams/Cycle).

Ho fatto l'autotuning ma i valori che ho ottenuto mi sembrano esagerati (esempio par. Retain/CtrlParams/Cycle = tutti diversi, da minimo 8.4 sec. fino a 18.7 sec.!!) e quindi li ho scartati ed  ho inserito i valori che meglio soddisfano il mio sistema, che così lavora ma non benissimo, infatti, quando il processo si avvia, avviene un veloce raffreddamento di alcune zone degli stampi che però, nonostante un alto valore di gain, non "partono" finchè la temperatura non perde almeno 15 gradi! Poi, tutto d'un tratto inizia a regolare ma ormai la temperatura è scesa....

Rimane il fatto che ogni singolo blocco PID_Compact mi segnala errore o meglio, l'error flag sempre a 0,  invece ErrorBits mi segnala sempre 0800 (Errore tempo campionamento).

Qualcuno ha idea del motivo dell'errore di campionamento?? 

Grazie in anticipo a chi vorrà rispondere

 

 

Link al commento
Condividi su altri siti


In genere tale errore viene generato per aver messo un tempo di campionamento vicinio al tempo di scansione di programma, non vorrei che nel tuo caso il PLC sia un po' "sovraccarico", prova ad alzare il tempo di campionamento e vedere cosa succede, forse sarà meno reattivo ma forse più preciso nell'autotuning

Link al commento
Condividi su altri siti

Grazie per la risposta.

Il tempo di scansione massimo registrato per la cpu è di 30ms. Non mi sembra sovraccarico. E poi comunque l'ob35 è asincrono e quindi non influenzato dal tempo di ciclo della Cpu? O forse mi sbaglio?

Comunque, non è che invece il tempo per l'elaborazione completa di 9 blocchi pid è maggiore del tempo fra un richiamo e l'altro dell'ob35? 

Link al commento
Condividi su altri siti

Ciao

Quote

non è che invece il tempo per l'elaborazione completa di 9 blocchi pid è maggiore del tempo fra un richiamo e l'altro dell'ob35? 

 

In quel caso la cpu ti darebbe un altro errore del tipo "limite risorse" o qualcosa del genere, e poi nel primo post dici di avere impostato il tempo ad 1sec, tra un richiamo OB35 ed il sucessivo, che per plc è un'eternità.

 

Hai provato a mettere lo stesso tempo ti 1sec sull'ingresso del blocco pid? Oppure:

      L     #OB35_EXC_FREQ	(var interna ad OB35)
      ITD
      DTR
      T     "DB_OPZIONE_BATTUTA".OB35_CYCLE	(DB168.DBD120)

a me serviva avere il tempo in reale per dei calcoli, che normalmente non ha senso essendo un tempo intero espresso in ms.

 

Saluti

Modificato: da TravelMen
Link al commento
Condividi su altri siti

Stiamo parlando di tempi biblici anche per il più lento dei PLC.

Prova ad impostare il tempo di campionamento uguale al tempo effettivo di richiamo del PID.

Link al commento
Condividi su altri siti

34 minuti fa, batta ha scritto:

Stiamo parlando di tempi biblici anche per il più lento dei PLC.

Prova ad impostare il tempo di campionamento uguale al tempo effettivo di richiamo del PID.

Quindi se ho ben capito, mi suggerisci di impostare il tempo dell' OB35 a 3sec.? O il contrario cioè ogni PID richiamarlo ogni 1 sec. ?

Link al commento
Condividi su altri siti

Aggiornamento.

Ho provato ad abbassare il tempo di ciclo di 3 blocchi PID come suggerito da Batta, impostandoli come il tempo di scansione dell' OB35 ma non cambia niente.

Nel frattempo, analizzando la DB di un blocco PID ho notato che è presente anche un warning (0020) che recita: 

Il tempo di campionamento dell'algoritmo PID viene circoscritto dal tempo di ciclo dell'OB richiamante.

Per ottenere risultati migliori utilizzare tempi di ciclo dell'OB più brevi.

Ho provato ad abbassare il tempo OB35 a 500ms (quindi la metà), ma nulla cambia, anzi ha iniziato a lampeggiare anche l' ErrorFlag....

 

Rimane il fatto che tutti i 9 PID presentano sempre l'erroeBits 0800: 

Errore del tempo di campionamento: PID_Compact non viene richiamato entro il tempo di campionamento dell'OB di schedulazione orologio.

Link al commento
Condividi su altri siti

Potresti impostare l'OB35 per un tempo di 300ms e richiamare un pid alla volta; l'intervallo di richiamo di ogni PID sarà di 2.7" quindi imposti il tempo del PID a 2.7".

Ovviamente puoi allungare o accorciare il tempo del PID agendo proporzionalemente sul tempo dell'OB35

In questo modo hai la certezza che il periodo di richiamo di ogni regolatore PID sia (quasi) assolutamente costante.

Link al commento
Condividi su altri siti

Buongiorno. Ho lasciato l' OB35 a 1sec. e  tutti i PID a 3sec. funziona tutto abbastanza bene, il cliente è soddisfatto...

Per quanto riguarda gli errori descritti in precedenza, non mi spiego perchè ma alzando il bit del riconoscimento (ErrAck) prima non si resettavano mentre adesso si sono resettati tutti e dopo mezza giornata di monitoraggio non sono più apparsi, quindi presumo che non riappariranno più. Domani mattina farò un altro collegamento per vedere come vanno le cose ma oggi sono più ottimista, anche se qualche dubbio rimane...

Grazie a tutti, buna serata

Link al commento
Condividi su altri siti

Bene. In ogni caso, anche se funziona tutto regolarmente, sarebbe buona norma non lanciare tutti i pid nello stesso ciclo di OB35, ma suddividerli, come suggerito da Livio.
 

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