Vai al contenuto
PLC Forum


Fb 41 - Pid Control


mautomazione

Messaggi consigliati

Buongiorno

sono alle prese con l'apprendimento della FB 41. Per il momento uso solo la regolazione proporzionale. Richiamo la FB 41 all'interno dell'OB 35 (facendo attenzione che la schedulazione orologio dell'OB 35 coincida con la variabile CYCLE della FB41). Per l'ingressi della FB41 uso un blocco dati globali. Uso PLCSIM per vedere il comportamento della FB41. Vado a impostare i valori di SP_INT (valore di riferimento interno) e PV_IN (ingresso valore istantaneo) e dovrei vedere la variazione di LMN (valore regolante). Il problema è che questo mi ha funzionato le prime volte ed adesso non più. Non vorrei avere fatto qualche variazione senza rendermene conto. Qualcuno ha qualche idea ?

Grazie in anticipo

Link al commento
Condividi su altri siti


Devi controllare se, per errore, hai modificato altri parametri, principalmente:

- COM_RST (deve essere FALSE)

- MAN_ON (deve essere FALSE)

- P_SEL (deve essere TRUE)

- GAIN (deve essere <> 0)

Link al commento
Condividi su altri siti

Però se non dai informazioni, è dura fare una diagnosi a distanza.

Cos'è che non funziona più?

Che prove stai facendo?

Che variabili stai monitorando?

Il DB di istanza è stato creato e poi caricato nel PLC?

Il richiamo di FB41 è sempre in OB35?

Link al commento
Condividi su altri siti

ovviamente l'FB 41 viene richiamato sempre nell'OB35. Attraverso PLCSIM (dopo aver caricato i blocchi sulla cpu) vado a inserire i valori di SP_INT PV_IN e mi aspetto che LMN (valore regolante) mi vari.

Link al commento
Condividi su altri siti

ovviamente l'FB 41 viene richiamato sempre nell'OB35. Attraverso PLCSIM (dopo aver caricato i blocchi sulla cpu) vado a inserire i valori di SP_INT PV_IN e mi aspetto che LMN (valore regolante) mi vari.

Se pensi che con queste informazioni sia possibile trovare la soluzione, dovevi scrivere su un forum di indovini.

Il DB di istanza è stato generato correttamente e poi caricato nella cpu?

Perché non apri il DB di istanza, vai in online e visualizzi così nel più piccolo dettaglio tutto quello che sta succedendo?

Poi fai un printscreen e lo metti nel tuo prossimo post.

O, ancora meglio, allega l'intero progetto.

Link al commento
Condividi su altri siti

Ho caricato il progetto Step 7 nell'area UP/DOWNLOAD. non sono rìuscito ad allegare il file alla seguente discussione. il progetto caricato si chiama "PROGETTO DI ESEMPIO".

Grazie

Link al commento
Condividi su altri siti

Vedi, basta avere i dati ed i problemi si risolvono facilmente.

L'errore è nell'impostazione dei limiti: hai impostato il limite minimo dell'uscita del pid a 0.0, e il limite massimo a... 0.0.

Se l'uscita del PID riuscisse ad assumere valori diversi da 0.0 rimarrei decisamente sorpreso.

Un consiglio: alla FB41 collega solo i parametri che ti servono e lascia gli altri liberi.

Assicurati solamente, controllando i valori attuali del DB di istanza, che siano impostati nel modo corretto.

Poi, se nessuno li modifica, rimarranno inalterati.

Inoltre, tanto per fare un esempio, non ha proprio senso se passi il valore della variabile di processo come PV_IN collegare un valore anche a PV_PER.

Per quanto poi tu preferisca usare il KOP, a mio avviso il richiamo e la visualizzazione dei valori di una FB (o FC) è molto più comodo ed intuitivo se fatto in AWL.

In AWL poi, se vuoi impostare dei parametri booleani fissi puoi anche scrivere FALSE oppure TRUE all'ingresso.

Per controllare cosa sta facendo il PID, il modo più comodo è aprire il DB di istanza e monitorare i valori.

Un piccolo trucco poi per non sbagliare il valore di "CYCLE" (ora nel tuo progetto CYCLE è impostato a 2000 ms, mentre in configurazione hardware OB35 è a 1000 ms) è di utilizzare la variabile "OB35_EXC_FREQ".

Visto che non si può passare la variabile direttamente alla FB41 (OB35_EXC_FREQ è una INT invece FB41 si aspetta una variabile di tipo TIME), basta appoggiare OB35_EXC_FREQ ad una variabile locale di tipo TIME.

Tutto questo vale, ovviamente, se il richiamo di FB41 è in OB35.

Link al commento
Condividi su altri siti

Controlla bene, e vedrai che, se nel frattempo non hai cambiato qualcosa, è proprio così.

Io ho aperto il tuo progetto, caricato nel simulatore, controllato i valori delle variabili del DB di istanza, trovato l'errore, modificato il limite massimo, impostato un valore di SP diverso da PV e... magicamente... il PID ha iniziato a lavorare.

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