BRUNO_regg Inserito: 4 gennaio 2007 Segnala Share Inserito: 4 gennaio 2007 Buongiorno e buon anno a tutti,normalmente utilizzo il blocco FB41 della Siemens come controllo P.I.D.per regolare livelli o pressioni (es. livello:sonda capacitiva 4..20mA lettura livello -> gestione P.I.D ->segnale 4..20 mA per comando valvola modulante).Come parametri di controllo utilizzo solo i Gain e TI.Il blocco FB41 viene richiamato dall'OB35, mentre la lettura e scrittura dei dati e delle periferie vengono effettuati in un altro blocco letto dall'OB1...e fin qui penso che sia tutto corretto.Non sempre riesco ad ottenere un funzionamento stabile della valvola di comando, ma la valvola tende a aprire e chiudere di continuo. Ho provato a regolare TI e Gain (normalmente gain 0,5..2,0 e TI 60..90 sec.), ma in alcune applicazioni proprio non riesco ad ottenere un funzionamento corretto.Il blocco OB35 viene letto ogni 10ms (lo utilizzo anche per altre funzioni) e i parametri CYCLE e TM_LAG dell'FB41 sono impostati rispettivamente a 100ms e 2s.Queste sono le impostazioni che normalmente utilizzo, le applicazioni sono sempre diverse e non chiedo una risoluzione del problema on-line, semplicemente chiedo a chi ha piu' esperienza di me se ci sono altri parametri da gestire tra la marea di dati dell'FB41. Grazie Link al commento Condividi su altri siti More sharing options...
dago_ Inserita: 4 gennaio 2007 Segnala Share Inserita: 4 gennaio 2007 Ad esempio potresti provare ad impostare il parametro DEADB_W Link al commento Condividi su altri siti More sharing options...
BRUNO_regg Inserita: 4 gennaio 2007 Autore Segnala Share Inserita: 4 gennaio 2007 Ciao Dago,ho provato a utilizzare il parametro "banda morta". Si, migliora la stabilita',pero' inserisce anche un certo ritardo di lettura che a volte puo' dare problemi enon risolverli.Ciao e grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 gennaio 2007 Segnala Share Inserita: 4 gennaio 2007 Il blocco OB35 viene letto ogni 10ms (lo utilizzo anche per altre funzioni) e i parametri CYCLE e TM_LAG dell'FB41 sono impostati rispettivamente a 100ms e 2s.Dici che OB35 è richiamato ogni 10ms perché ti serve anche per altre cose. Ma FB41 viene richiamata ad ogni ciclo? Se è così devi impostare 10ms anche nel parametro CYCLE oppure (secondo me molto meglio) richiamare FB41 ogni 10 cicli di OB35.Il parametro TM_LAG influenza solo la derivata, che tu non stai utilizzando.Che processo devi controllare? Quanto è rapido il sistema? Con che valori di PV e di SP lavori?Prova a disattivare l'integrale, e se l'uscita del PID è ancora instabile riduci il guadagno. Quando sei riuscito ad ottenere un sistema stabile attiva nuovamente l'integrale e parti con valori di tempo integrale elevati. Riduci poi gradualmente il tempo integrale. Se poi hai fattori esterni che creano disturbo, potresti provare ad attivare anche la derivata, per avere un pid più reattivo in caso di reazioni rapide della variabile di processo.Tieni presente che nella mia esperienza lavorativa mi sono trovato a gestire PID con guadagni bassissimi e parte integrale elevata, ed altri con guadagni piuttosto elevati e parte integrale quasi nulla.Se descrivi meglio il sistema che devi controllare forse ti potremo dare un aiuto migliore. Se poi hai la possibilità di registrare l'andamento della variabile di processo e dell'uscita del PID in un grafico, postalo. Link al commento Condividi su altri siti More sharing options...
BRUNO_regg Inserita: 4 gennaio 2007 Autore Segnala Share Inserita: 4 gennaio 2007 (modificato) Ciao Batta,queste sono le impostazioni che normalmente utilizzo: CALL "CONT_C" , "DB6-dati PID livello" COM_RST := MAN_ON := PVPER_ON:=FALSE P_SEL := I_SEL :="DB6-dati PID livello".I_SEL <--TRUE INT_HOLD:= I_ITL_ON:= D_SEL :="DB6-dati PID livello".D_SEL <--FALSE CYCLE :=T#100MS SP_INT :="DB6-dati PID livello".SP_INT <--NORMALIZZATO 0.. 300.0 PV_IN :="DB6-dati PID livello".PV_IN <-- NORMALIZZATO COME SP_INT PV_PER := MAN := GAIN :="DB6-dati PID livello".GAIN <--NON SUPERIORE A 5.0 TI :="DB6-dati PID livello".TI <-- CIRCA 70 SECONDI TD :="DB6-dati PID livello".TD TM_LAG :=T#2S DEADB_W := LMN_HLM :="DB6-dati PID livello".LMN_HLM <-- LIMITE ALTO 100.0 LMN_LLM :=0.000000e+000 PV_FAC := PV_OFF := LMN_FAC := LMN_OFF := I_ITLVAL:= DISV := LMN :="DB6-dati PID livello".LMN <--NORMALIZZATO 0..100.0 LMN_PER := QLMN_HLM:= QLMN_LLM:= LMN_P := LMN_I := LMN_D := PV := ER :=Tutti gli altri dati non sono stati modificati rispetto DB originale Siemens Un'altra domanda:Il segnale di disturbo a che cosa serve e come si gestisce? A.. dimenticavo, il sistema che gestisco e' un serbatoio da circa 80lt, con una sonda capacitiva e una valvola modulante come ingresso prodotto.Ciao e grazie Modificato: 4 gennaio 2007 da BRUNO_regg Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 4 gennaio 2007 Segnala Share Inserita: 4 gennaio 2007 ... Non è che, per caso, l'instabilità del controllo di modulazione della valvola proporzionale ce l'hai quando entra il prodotto fin quasi al livello del capacitivo? Che sensore stai usando? Per esperienza personale, con gli Aeco capacitivi ho avuto problemi di ridondanza del segnale; quella volta ho risolto regolando la sensibilità e schermando il sensore con carta spagna. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 gennaio 2007 Segnala Share Inserita: 4 gennaio 2007 Importante sarebbe conoscere quanto è veloce il sistema. Per dire, con la valvola aperta, quanto tempo si impiega, all'incirca, per riempire il serbatoio? Stiamo parlando di un ciclo di 5 secondi o di 2 ore? I 70 secondi di tempo integrale possono essere troppi (nel qual caso avresti un'azione integrale blanda), oppure troppo pochi (e creare quindi instabilità).Comunque, seguendo le indicazioni del precedente post, dovresti riuscire a risolvere il problema. Prima si cerca la stabilità, poi si cerca di migliorare i tempi di risposta. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 gennaio 2007 Segnala Share Inserita: 4 gennaio 2007 1 - 10ms come tempo di campionamento per un controllo del tipo che hai citato mi smebrano un periodo inutilmente troppo breve. Meglio sarebbe salire di un ordine come ti suggerisce batta.2 - Se il clock di sistema anche per altri processi devi verificare che lo FB41 sia richiamato sempre nel medesimo istante. Meglio sarebbe se fosse la prima funzione ad essere richiamata.3 - Lettura delle variabili di ingresso e scrittura delle variabili di uscita devono essere eseguite sempre nel medesimo istante, quindi sincrone con FB41.4 - Dal difetto che descrivi c'è anche un problema di ottimizzazione dei parametri. Comincia a lavorare in proporzionale puro, poi inserisci l'integrale. Il derivativo usalo solo se è indispensabile. Link al commento Condividi su altri siti More sharing options...
BRUNO_regg Inserita: 5 gennaio 2007 Autore Segnala Share Inserita: 5 gennaio 2007 Buongiorno a tutti,ho provato a impostare lo stesso tempo di richiamo dell'OB35 al parametro "CYCLE" e in effetti il sistema e' migliorato. Poi tramite un "loop" ho richiamato il blocco FB41 ogni 100ms (con CYCLE impostato a 100ms) perche' anche a me sembrava inutile richiamarlo ogni 10ms.Quello che mi ha "fregato", e' che nell'. in linea della Siemens non c'é scritto che CYCLE deve avere lo stesso tempo di richiamo del blocco FB35 ma riporta la seguente descrizione: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.Ok, comunque l'importante e' risolvere o eventualmente migliorare il funzionamento del sistema.Vi chiedo un'altra cosa: Come mai il blocco vuole richiamato in OB100? Ho provato con richiamo o senza, ma non ho trovato grosse differenze.Un'altra cosa: A cosa serve l'ingresso DISV segnale di disturbo?Per rispondere a Batta, ti dico che il tempo di riempimento e' di circa 5 minuti (durante le prove di collaudo perche' non abbiamo portata), ma in produzione dal cliente sara' di 1..2 minuti. Ciao e grazie a tutti Link al commento Condividi su altri siti More sharing options...
batta Inserita: 5 gennaio 2007 Segnala Share Inserita: 5 gennaio 2007 Per funzionare bene il PID deve essere richiamato ad intervalli il più regolari possibili.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.Forse non è chiarissimo, ma l'interpretazione corretta è la seguente:- Il tempo tra i richiami del blocco deve essere costante. Fin qui tutto chiaro, ed è anche spiegato perché è meglio il richiamo in un OB a tempo.- L'ingresso "Tempo di campionamento" indica il tempo tra i richiami di blocco. Qui si deve indicare ogni quanto tempo viene richiamato il blocco. Sei tu che decidi ogni quanto tempo eleborare il PID, e sei tu che devi dire alla funzione PID ogni quanto tempo viene elaborata.Dallo schema a blocchi nell'. di FB41 DISV è un segnale che si somma all'uscita del PID, prima del controllo dei limiti e della normalizzazione del valore.Personalmente non l'ho mai utilizzato.Con un tempo di riempimento attuale di 5 minuti un tempo integrale di 70 secondi potrebbe essere troppo basso.Considerazione questa fatta puramente a spanne.La regolazione del PID andrà fatta comunque nelle condizioni reali di lavoro, e dovrai scegliere se privilegiare la rapidità di risposta o la stabilità. Non c'è però una regola per stabilire quale sia il giusto compromesso: dipende esclusivamente dalla tua applicazione. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 5 gennaio 2007 Segnala Share Inserita: 5 gennaio 2007 Dallo schema a blocchi nell'help di FB41 DISV è un segnale che si somma all'uscita del PID, prima del controllo dei limiti e della normalizzazione del valorePuò essere usato per inserire una funzione tipo feedforward. Inserire un feddforward oltre ad aumentare la velocità di risposta permette di avere valori di correzzione integrale molto contenuti. Ovviamente se la funzione è stata ottimizzata nel modo corretto. Link al commento Condividi su altri siti More sharing options...
BRUNO_regg Inserita: 5 gennaio 2007 Autore Segnala Share Inserita: 5 gennaio 2007 Grazie a tuttiCiao 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