Vai al contenuto
PLC Forum


Regolazione Continua Con L'sfb 41/fb 41 "cont_c" - dubbi


JumpMan

Messaggi consigliati

Volevo esporre alcuni dubbi che mi sono venuti riguardo l’FB in questione.

In alcune vecchie applicazioni ho fatto l’errore di richiamare in OB1 l’SFB 41/FB 41 "CONT_C" per la regolazione PID, il mio errore era dovuto al fatto che pensavo che l’FB si arrangiasse a scandire i campionamenti semplicemente passando l’intervallo desiderato nel parametro CYCLE, in sostanza avevo impostato CYCLE= 200ms e lo richiamavo da OB1 (ogni circa 20ms credo) pensando che al suo interno eseguisse i calcoli ogni 200ms come dichiarato in CYCLE.

(Tengo a precisare che sono riuscito comunque a tarare il PID e funziona bene)

Oggi però mi è venuto un dubbio, sull’. dell’FB c’è scritto:

CYCLE    TIME    >= 1ms T#1s    SAMPLE TIME / Tempo di campionamento
                                           Il tempo tra i richiami di blocco deve essere costante. 
                                           L'ingresso "Tempo di campionamento" indica il tempo tra i           
                                           richiami di blocco.
“Il tempo tra i richiami di blocco deve essere costante”(letto anche qui sul forum) , quindi devo: - Richiamare FB41 dall’OB35 - impostare per OB35 un tempo di scansione di 200ms. - Impostare il parametro CYCLE=200ms Giusto? Per automatizzare l’ultimo passaggio ed evitare problemi (errato funzionamento del PID se si cambia t.scansione OB35 senza correggere i vari CYCLE) potrei in OB35 fare: (fig.1)
 L     #OB35_EXC_FREQ          //Tempo scansione OB35
  TAD                           //Inverte la sequenza dei bytes
  T     "Pid1".CYCLE            //Tempo scansione PID  1
  T     "Pid2".CYCLE            //Tempo scansione PID  2
  T     "Pid3".CYCLE            //Tempo scansione PID  3

Domande:

1) Come mai funzionava correttamente anche con richiami ogni 20ms(CIRCA) e con CICLE=200ms ?

2) Forse funziona lo stesso ma i parametri P/I/D vanno regolati diversamente ?

3) Nel caso dovessi correggere i vecchi programmi (mettendo il richiamo in OB35) dovrei ritarare P/I/D?

4) L’esempio (fig.1) qui sopra che legge il tempo scansione di OB35 in ms (16 bit intero) e scrive il parametro CYCLE di FB41 (32 bit TIME) è corretto ?

Saluti

Link al commento
Condividi su altri siti


Ciao JumpMan,

ho spostato la discusssione perchè ritengo possa avere la sua collocazione migliore nel forum Siemens, visto che le tue domade riguardano principalmente la gestione del blocco.

Vediamo se riesco anche a darti qualche risposta

1) Come mai funzionava correttamente anche con richiami ogni 20ms(CIRCA) e con CICLE=200ms ?

Prima cosa. Tu pensavi di avere un tempo di campionamento di 200ms, quando in realtà era di 20ms. Se hai impostato un tempo di scansione di 0,2s significa che il tuo processo ha tempi di risposta dell'ordine dei 2s (di solito si mantiene almeno un ordine di grandezza di differenza tra tenpo di campionatura e processo). In realtà controllavi con 0.02s variabili. Si può ipotizzare che il jitter sia <20% del tempo di campionamento. Questa variabilità avrebbe causato un discreto "rumore" di regolazione nel caso che il tempo di campionamento dovesse essere <=0.02s. Ma nel tuo caso hai un ordine di grandezza (almeno) di margine, quindi la sua influenza è trascurabile.

Chiaramente la taratura è apparentemente diversa. Dico apparentemente perchè bisognerebbe ricalcolare il tutto con i due diversi tempi di campionatura. Certamente i parametri normalizzati risulteranno molto simili.

Credo di aver risposto anche alle tue domande 2 e 3.

Io non uso il PID di Siemens, ma richiamo una mia funzione dall'OB35 quindi non mi preoccupo di CYCLE.

Da ultimo, se vuoi verificare con esattezza i tempi di richiamo ed esecuzione dei tuoi PID segui questa semplice procedura.

In OB35 prima dell'istruzione di richiamo del PID scrivi direttamente un'uscita analogica ad un valore alto. Immediatamente dopo l'istruzione di richiamo del PID scrivi direttamente la medesima uscita ad un valore basso. Con un oscilloscopio visualizza lo stato dell'uscita. Il tempo in cui l'uscita è alta corrisponde alla durata del PID, mentre la distanza tra due fronti di salita corrisponde al tempo di campionamento.

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