Vai al contenuto
PLC Forum


blocco PID


Checcohfl

Messaggi consigliati

Buonasera, è la prima volta che mi trovo a dover utilizzare un sistema di regolazione proporzionale di temperatura.

In breve dovrei attivare 4 resistenze in fase di riscaldo (partenza da freddo), sino al set point di temperatura impostato; una volta raggiunto il set point rimangono accese solo 2 resistenze che dovranno mantenere la temperatura settata. mi domandavo quale fosse il blocco di programmazione (e se sia intuitivo da parametrizzare) da utilizzare per il mantenimento della temperatura.

Ho visto che nelle librerie ce ne sono diversi di blocchi PID, quale è quello giusto per me?

Come sensore ho una PT100 collegata ad un trasmettitore di temp. che mi da in uscita un segnale 0-10V.

Mi sapreste aiutare, grazie 

Link al commento
Condividi su altri siti


puoi usare il PID generico che va benissimo.

come ingresso al PID puoi usare un qualunque segnale analogico. Ti consiglio di usare solo il PI la D non è utile per la temperatura perchè ha una inerzia in genere elevata

 

ciao

Link al commento
Condividi su altri siti

Grazie per la risposta! 
secondo te, una volta fatto il programma se mo faccio dare la pt100 dal cliente potrei fare l’auto tuning in casa evitando di testarlo sul campo? 

Link al commento
Condividi su altri siti

16 ore fa, Checcohfl scrisse:

se mo faccio dare la pt100 dal cliente potrei fare l’auto tuning in casa evitando di testarlo sul campo? 

Se intendi che vuoi provare se riesci a lanciare l'autotuning, puoi anche semplicemente passare al PID una variabile che comandi a tuo piacere. Per avere un risultato dovrai, ovviamente, scrivere dei valori coerenti con ciò che l'autotuning sta facendo.

Se intendi fare l'autotuning ora per non farlo dal cliente, non ha nessun senso. L'autotuning serve per rilevare la risposta reale del sistema, ed impostare parametri adeguati. Ha quindi senso solo se fatto nelle reali condizioni di lavoro.

Link al commento
Condividi su altri siti

grazie a tutti per le ottime risposte. Aimè il cliente non ne vuole sapere di utilizzare un PID (nonostante io abbia insistito per fargli capire che fosse la soluzione migliore).

Quindi dovrei realizzare un sistema on\off con isteresi per azionare un normale teleruttore, hanno voluto la signal board RTD per leggere direttamente la pt100.

Premesso che non sono un programmatore, ma siamo in situazione di emergenza, e mi tocca fare il programma a me, vi chiederei un poco del vostro tempo per giudicare il programma in allegato, cosi per sapere se può funzionare o se ho combinato qualche casino.

Grazie infinite. 

fc1_1.png

fc1_2.png

fc2.png

fc3.png

ob1.png

Link al commento
Condividi su altri siti

il 2/4/2021 at 21:21 , Checcohfl scrisse:

Premesso che non sono un programmatore, ma siamo in situazione di emergenza, e mi tocca fare il programma a me

Questa cosa, sinceramente, non la capisco.
Che senso ha far sviluppare a te il software se non sei un programmatore?
Se ci fosse un problema meccanico, lo darebbero da risolvere ad un elettricista?
Per problemi di contabilità, chiamano un idraulico?
Ad ognuno il suo lavoro. Questa è una regola che non si dovrebbe mai disattendere.
 

Al programma ho dato un'occhiata veloce, e potrebbe funzionare.
Io però lo affronterei in modo diverso.

Ecco le principali modifiche:

1) Anche se usi pochissime variabili, abituati ad usare i "Blocchi Dati" (DB) al posto delle MW.

2) Vedo che usi anche la MW0. Tieni presente che se abiliti i merker di sistema, di default utilizzano i byte MB0 e MB1, ovvero la stessa area di memoria della MW0.
3) Vedo che dividi per 10 per trasformare la lettura dell'ingresso analogico RTD da decimi di grado a gradi. In questo modo, perdi inutilmente precisione. Piuttosto, usa anche il set point in decimi di grado. Nel caso di visualizzazione su pannello operatore, imposti la visualizzazione con una cifra decimale.

4) Piuttosto che una memoria per attivare 4 resistenze fino al primo raggiungimento del set point e successivamente lavorare solo con due resistenze, io creerei due diverse soglie: sotto alla soglia più bassa attivo tutte le resistenze, poi, quando sono vicino al set point, lavoro solo con due resistenze.

5) Per la logica del programma non usare direttamente le uscite, ma appoggiati a memorie interne (merker o bit in un DB). Poi utilizza queste memorie per comandare le uscite.

Modificato: da batta
Link al commento
Condividi su altri siti

3 ore fa, batta scrisse:

Questa cosa, sinceramente, non la capisco.
Che senso ha far sviluppare a te il software se non sei un programmatore?
Se ci fosse un problema meccanico, lo darebbero da risolvere ad un elettricista?
Per problemi di contabilità, chiamano un idraulico?
Ad ognuno il suo lavoro. Questa è una regola che non si dovrebbe mai disattendere.

Ti ringrazio per il prezioso aiuto che mi stai dando! Se mai avrai bisogno qualche informazione riguardo la quadristica, normative CEI, software di disegno schemi elettrici.. Potrò ricambiare il favore.

 

La penso anche io così, solitamente non prendiamo quasi mai in carico la parte SW oppure la deleghiamo a dei professionisti.

In questo caso hanno insistito per farmela fare a me perchè pensano che siccome ho fatto un corso base anni fà per S7-300 e faccio i collaudi HW degli I\O, allora mi considerano erroneamente un programmatore. Ma soprattutto mi lasciano uno stipendio da operaio normale.

 

1) Anche se usi pochissime variabili, abituati ad usare i "Blocchi Dati" (DB) al posto delle MW. Ho provveduto, è decisamente meglio usare i DB come dici tu!

2) Vedo che usi anche la MW0. Tieni presente che se abiliti i merker di sistema, di default utilizzano i byte MB0 e MB1, ovvero la stessa area di memoria della MW0. Si ne sono al corrente, ho modificato la configurazione della CPU impostando per quei 2 merker i byte 100 e 101. 

3) Vedo che dividi per 10 per trasformare la lettura dell'ingresso analogico RTD da decimi di grado a gradi. In questo modo, perdi inutilmente precisione. Piuttosto, usa anche il set point in decimi di grado. Nel caso di visualizzazione su pannello operatore, imposti la visualizzazione con una cifra decimale. Grazie del consiglio, farò così!

4) Piuttosto che una memoria per attivare 4 resistenze fino al primo raggiungimento del set point e successivamente lavorare solo con due resistenze, io creerei due diverse soglie: sotto alla soglia più bassa attivo tutte le resistenze, poi, quando sono vicino al set point, lavoro solo con due resistenze. Ottima idea, farò così!

5) Per la logica del programma non usare direttamente le uscite, ma appoggiati a memorie interne (merker o bit in un DB). Poi utilizza queste memorie per comandare le uscite. Ho provveduto, è decisamente più corretto fare così come dici tu!

 

Mi rimangono solamente un paio di dubbi?  Te li chiederei:

1-Per appoggiare l'ingresso analogico RTD "IW80" in una variabile del "DBinput" ho pensato di usato il blocco MOVE, è corretto?

2-Mi chiedevo se non fosse il caso di ritardare di un tempo X (impostabile da OP) il SET e RESET delle resistenze di mantenimento, per evitare il continuo on\off del contattore?

 

Ancora Grazie!

 

 

 

 

Link al commento
Condividi su altri siti

11 ore fa, Checcohfl scrisse:

1-Per appoggiare l'ingresso analogico RTD "IW80" in una variabile del "DBinput" ho pensato di usato il blocco MOVE, è corretto?

Sì, è corretto. E sarebbe più corretto mettere questa istruzione all'inizio del programma, non alla fine come nel tuo esempio.
Dal lato pratico non cambia quasi nulla (mettendola alla fine avrai solo la prima scansione con un dato non aggiornato), come concetto, prima aggiorno la variabile e poi la uso.
 

11 ore fa, Checcohfl scrisse:

2-Mi chiedevo se non fosse il caso di ritardare di un tempo X (impostabile da OP) il SET e RESET delle resistenze di mantenimento, per evitare il continuo on\off del contattore?

Piuttosto che ritardare con tempi, meglio creare un'isteresi.

Esempio: stop al raggiungimento del set point, start mezzo grado sotto il set point.

Link al commento
Condividi su altri siti

Adelino Rossi
Quote

, per evitare il continuo on\off del contattore

Trattandosi di una regolazione suppongo che usi contattori statici e non elettromeccanici.  

Link al commento
Condividi su altri siti

 

1 ora fa, Adelino Rossi scrisse:

Trattandosi di una regolazione suppongo che usi contattori statici e non elettromeccanici.

 

purtroppo no

 

il 2/4/2021 at 21:21 , Checcohfl scrisse:

realizzare un sistema on\off con isteresi per azionare un normale teleruttore, hanno voluto la signal board RTD per leggere direttamente la pt100

 

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