Vai al contenuto
PLC Forum


FB41 - PID


Mauri_64

Messaggi consigliati

Buon giorno a tutti.

Non riesco a trovare nelle librerie del mio pacchetto S7 un FB 41 ( PID ) da importare nel mio programma utente.

Qualcuno ha qualche dritta da darmi, gentilmente?

Grazie

 

Link al commento
Condividi su altri siti


Era troppo difficile fornire qualche informazione in più?

Tanto per cominciare, stai usando Step 7 "classico" (Simatic Manager) o TIA Portal?

 

In Step 7 le funzioni PID le trovi in: Biblioteche --> Standar Library --> PID Control Blocks.
Se utilizzi una CPU "Compact" (31xC) al posto delle FB puoi usare le SFB, che sono integrate nella CPU e non come blocco da caricare a parte.

Le SFC le trovi in: Biblioteche --> Standar Library --> System Function Blocks.

 

Con TIA Portal invece, non devi cercare blocchi FB da importare, ma solo prelevare quello che ti serve dalle istruzioni. I PID sono nel gruppo Tecnologia --> Funzioni di base PID (sono le FB dei PID di Step 7 classico).

Qui trovi anche la sottocartella Funzioni di sistema integrate, da usare con le CPU Compact (sono le SFB di Step 7 classico).

 

Per il futuro, visto che scrivere è gratis, ti consiglio vivamente di fornire più dettagli.

Link al commento
Condividi su altri siti

  • 2 weeks later...

Buongiorno,

approfitto del thread generico relativo al FB41 (PID) per comprendere alcuni aspetti di funzionalità dello stesso.

 

Con Step S7 ho aperto un programma esistente che prevede l'utilizzo di un PID FB41. Secondo la guida, l'FB per poter funzionare deve aver abilitato il cycle time oppure deve essere richiamato nell'OB35.

 

Nel programma in questione invece l'ingresso dell'FB cycle time non è collegato mentre l'OB35 è presente ma al suo interno non c'è alcun richiamo dell'FB41 ed è assolutamente vuoto. Come può funzionare il PID? Il sistema funziona regolarmente.

 

Il fatto che l'OB35 sia abilitato, nonostante alcun richiamo esplicito all'FB41,  è un fattore implicito dell'abilitazione del FB41 stesso?

 

Grazie.

Link al commento
Condividi su altri siti

Ciao,

il tempo di campionamento che indichi nel parametro cycle non ha valenza come richiamo del blocco stesso.

Quel tempo è usato internamente all'fb41 per dei confronti che effettua sui parametri i e d, per poi essere sfruttato come "guadagno" per gli stessi.

Il pid va richiamato ciclicamente in un ob temporale per poter avere una regolazione più fine.

Richiamandolo ad ogni scansione, la regolazione avviene comunque.

Link al commento
Condividi su altri siti

Quote

Richiamandolo ad ogni scansione, la regolazione avviene comunque.

 

ma essendo il ciclo di scansione sicuramente variabile, anche l'esecuzione del regolatore PI(D) è effettuata con periodo variabile, cosa che intruduce rumore ed imprecisione.

Link al commento
Condividi su altri siti

Buongiorno, ma siccome l'OB35 e' presente ma al suo interno non si fa alcun richiamo all'FB41, anzi e' completamente vuoto, mi chiedo come possa funzionare il PID.

Grazie.

Scusa DesmoGiec, non ho letto approfonditamente la tua risposta.

Grazie

Link al commento
Condividi su altri siti

L'FB41 è stato inserito in una FC, ma non viene richiamato da nessun OB temporale.

 

Però sulla base di quello che dice DesmoGiec (" Richiamandolo ad ogni scansione, la regolazione avviene comunque") do per scontato che il PID venga richiamato ad ogni ciclo main. Corretto?

Grazie.

 

 

Link al commento
Condividi su altri siti

Quote

Corretto?

 

Non so.

 

Quote

L'FB41 è stato inserito in una FC

 

Chi chiama questo FC? E' richiamato in OB1?

Certo che se non c'è un richiamo su ointerrupt di temporizzazione è una vera e propria porcata, da citare ad esempio di quello che non si deve fare.

Link al commento
Condividi su altri siti

Al di là delle porcata della programmazione significa che il sistema funziona comunque?! Non lo chiedo per reiterare nell'errata programmazione ma per comprendere se il sistema funziona nel modo corretto oppure no.

 

Grazie.

 

 

Link al commento
Condividi su altri siti

Mettiamola così. Il pid va richiamato in un ob temporale. 

Altri metodi, seppur funzionanti, rendono la regolazione imprecisa. 

Se non è in ob1 fa nulla. 

Se ad esempio lo hai in fc22, ma fc22 è richiamato incondizionatamente in ob1, il risultato è identico, sempre ad ogni scansione lo richiami. 

Link al commento
Condividi su altri siti

Quote

Se ad esempio lo hai in fc22, ma fc22 è richiamato incondizionatamente in ob1, il risultato è identico, sempre ad ogni scansione lo richiami. 

 

Aumenta solo l'imprecisione.

Il regolatore per funzionare deve essere richiamato; più il periodo di richiamo è costante maggiore è la precisione ottenibile. Se il perido di richiamo è incostante anche la regolazione sarà incostante, quindi poco precisa. Questo detto in modo banale e semplificato.

Link al commento
Condividi su altri siti

Oltre all'imprecisione dovuta ai richiami a tempo non costante, si aggiunge un altro errore: se è impostato, per esempio, un tempo ciclo di 100 ms e richiamo il PID ogni 10 ms, i calcoli dell'integrale e della derivata saranno sbagliati, perché riferiti ad un tempo di campionamento errato.

Link al commento
Condividi su altri siti

Grazie a tutti per le utili informazioni. Qualora sia necessario dare maggiore energia al sistema (per esempio aumentare velocita' motori) per abbassare il valore di una grandezza per avvicinarla al set point come si dovrebbe impostare il PID? 

Grazie

Link al commento
Condividi su altri siti

Il regolatore lo ottimizzi esclusivamente in funzione delle caratteristiche fisiche dell'impianto.

 

Se, ad esempio, un motore deve aumentare di velocità questo dipenderà solo dal riferimento della stessa o dal riferimento della variabile che è funzione della velocità del motore.

 

Cerco di chiarire con un esempio.

Ipotizziamo di dover mantenere costante la pressione in un circuito idraulico come, per esempio, un acquedotto.

La pressione di riferimento è impistata a 2bar e, stante le condizioni di utilizzo del momento, il motore della pompa ruota a circa 800 rpm.

Se aumenta la richiesta di acqua dalla condotta, la pressione tenderàa diminuire, quindi il regolatore PI(D) farà in modo che la velocità del motore aumen ti sino a che la pressione della condotta sarà nuovamente pari a 2 bar.

 

L'ottimizzazione dei parametri del regolotare può influenzare solo la velocità di risposta, il massimo errore a regime ed il massimo errore istantaneo.

Link al commento
Condividi su altri siti

Grazie Livio, su questo siamo d'accordo ma nel mio caso è il contrario. Nel senso che se la mia pressione di riferimento è impostata a 2 bar e, stante le condizioni di utilizzo del momento, il motore della pompa ruota a circa 800 rpm.

Se aumenta la richiesta di freddo, la pressione tenderà ad AUMENTARE, quindi il regolatore PI(D) farà in modo che la velocità del motore AUMENTI sino a che la pressione della condotta sarà nuovamente pari a 2 bar.

Quindi più che un proporzionale è un inversamente proporzionale (sempre se sia ammesso). Grazie.

 

 

Link al commento
Condividi su altri siti

Però se è inversa, il valore che dovrò inserire nell'ingresso GAIN dell'FB41 dell'S7 300 dovrà essere negativo? Lo chiedo perchè sto analizzando un programma che dichiara un gain (proporzionale) di - 2. Grazie.

 

 

Link al commento
Condividi su altri siti

Quote

Però se è inversa, il valore che dovrò inserire nell'ingresso GAIN dell'FB41 dell'S7 300 dovrà essere negativo?

Sì, con FB41, per invertire l'azione del PID, il modo più semplice è impostare gain negativo.

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