Vai al contenuto
PLC Forum


Problemi con funzione TCONT-S Pid Siemens S7-1500 per regolazione temperatura


luxu279

Messaggi consigliati

Buona sera a tutti,

 

Ho questo problema: devo regolare l'apertura e la chiusura di una serranda per il riscaldamento di un essiccatoio in base ad una temperatura e ad un set point.

Ho identificato la funzione TCONT-S come, secondo me, adatta allo scopo. L'unico problema che mi ritrovo è che il valore SP_INT che gli passo, impostato dal pannello operatore, viene immediatamente azzerato dal PLC.

C'è qualcuno che riesce a spiegarmi dove sbaglio?

 

Grazie in anticipo.

Link al commento
Condividi su altri siti


Non ti sei acorto che esiste la sezione apposita per i problemi del PLC S7-1500? Questo è un problema specifico di applicazione del PLC, non un problema di regolazione.

Oggi sono buono e provvedo io a spsostare la discussione.🙂

Link al commento
Condividi su altri siti

2 ore fa, luxu279 ha scritto:

C'è qualcuno che riesce a spiegarmi dove sbaglio?

Difficile dirti dove sbagli senza sapere cosa hai fatto, non credi?

Link al commento
Condividi su altri siti

16 ore fa, Livio Orsini ha scritto:

Non ti sei acorto che esiste la sezione apposita per i problemi del PLC S7-1500? Questo è un problema specifico di applicazione del PLC, non un problema di regolazione.

Oggi sono buono e provvedo io a spsostare la discussione.🙂

In effetti non sono molto pratica del forum e non mi sono accorta che esiste la sezione PLC S7-1500. Grazie per aver spostato la discussione nel posto giusto: spero che qualcuno mi sappia aiutare.

Link al commento
Condividi su altri siti

2 ore fa, luxu279 ha scritto:

spero che qualcuno mi sappia aiutare.

 

Hai letto la risposta di Batta?

Se non dai più informazioni su cosa hai fatto è praticamente impossibile aiutarti.

Link al commento
Condividi su altri siti

1 ora fa, Livio Orsini ha scritto:

 

Hai letto la risposta di Batta?

Se non dai più informazioni su cosa hai fatto è praticamente impossibile aiutarti.

Grazie Livio. Chiudi pure questa conversazione. Vedrò di arrangiarmi in altro modo.

Link al commento
Condividi su altri siti

Ma ti costa così tento spiegare come hai usato quella funzione?

Hai bisogno di aiuto, ma pretendi di riceverlo senza dare indicazioni?

Link al commento
Condividi su altri siti

7 ore fa, luxu279 ha scritto:

Vedrò di arrangiarmi in altro modo.

Perché vuoi abbandonare?
Guarda che nella mia risposta non c'era nulla di cattivo, ma è impossibile dirti dove sbagli senza sapere cosa hai fatto.
Qui ci sono tante persone che ti danno volentieri una mano, ma devi metterle in grado di poterti aiutare.
Se vai dal medico perché non stai bene, non puoi pretendere che faccia la diagnosi guardandoti negli occhi, gli dovrai dire di quali sintomi soffri.

Link al commento
Condividi su altri siti

11 ore fa, batta ha scritto:

Perché vuoi abbandonare?
Guarda che nella mia risposta non c'era nulla di cattivo, ma è impossibile dirti dove sbagli senza sapere cosa hai fatto.
Qui ci sono tante persone che ti danno volentieri una mano, ma devi metterle in grado di poterti aiutare.
Se vai dal medico perché non stai bene, non puoi pretendere che faccia la diagnosi guardandoti negli occhi, gli dovrai dire di quali sintomi soffri.

11 ore fa, batta ha scritto:

 

 

11 ore fa, batta ha scritto:

 

Scusa Batta, ma non è la tua di risposta che mi ha fatto decidere di rinunciare.

Proverò a spiegarmi meglio sperando di farcela. Nel frattempo ho spulciato anche dei manuali di Siemens sull'utilizzo dei PID e ho visto che mancava qualche passaggio.

In sostanza io ho creato una FB per la regolazione di 2 serrande motorizzate che permettono il riscaldamento di due essiccatoi, inserendo quel tipo di PID che reputavo essere il più adatto al mio scopo, in quanto permette la gestione di attuatori da regolare.

Allego un'immagine di come ho inserito il blocco: se noti il quadrato grigio in ingresso su SP_INT è perchè gli passo un valore in INT quando lui si aspetta un REAL ma non da errori e sembra che lo converta lui internamente. Come valore di riferimento ho inserito, all'inizio, sia il PV_IN (valore normalizzato in formato Real della temperatura di riferimento per la regolazione), che PV_PER (ingresso analogico pulito). Nel settaggio del PID ho impostato che il valore lo legge da periferia, quindi se non erro PV_PER, e il valore in tensione/corrente perchè il canale della scheda è 4-20mA a 2 fili (la sonda è una PT100 con convertitore a bordo).

In uscita ho impostato direttamente su QLMNUP e QLMNDN le uscite di comando apri e chiudi della mia serranda motorizzata. Ho anche i riscontri dei finecorsa di aperto e chiuso che inserirò in ingresso.

Leggendo il manuale, ho scoperto che vanno richiamate nell'OB35 e così ho fatto (mancanza da dilettante ma questa è la mia situazione).

A questo punto ho caricato tutto nella mia CPU ed ho aperto la finestra di test, ho fatto partire la mia regolazione, messo in modalità automatica così di attivavano i teleruttori del motore (per la gioia del mio collega che era vicino al quadro), ed ho provato a passargli il Set point di regolazione, prima dalla suddetta finestra, poi anche dal campo impostato sul pannello operatore e direttamente forzando la DBD in ingresso sul blocco, ma niente! Appena invio il valore a PLC, lui viene azzerato! Il valore, nella DB è impostato come int e non a ritenzione.

Scusa se ho scritto una specie di romanzo. Spero di essere stata più chiara; se, secondo te, manca qualche altra informazione dimmi pure.

P.S. Nel frattempo sto testando anche la funzione PID_Temp che potrebbe andarmi bene comunque.

Grazie

pid.jpg

Link al commento
Condividi su altri siti

1 ora fa, luxu279 ha scritto:

Scusa se ho scritto una specie di romanzo.

 

E sempre meglio abbondare nelle informazioni, piuttosto che darne poche.🙂

Può anche essere che siano ancora necessarie alcune precisazioni ma, a questo punto, lascio la palla agli esperti di Siemens come Batta.

Link al commento
Condividi su altri siti

dina_supertramp

Ciao, sulla guida in linea del TIA cerca questa stringa: " Mode of operation TCONT_S", ti spiega come impostare i modi di funzionamento e sulla base del modo di funzionamento quale input per la variabile di processo usare (PV_IN oppure PV_PER) e come impostarlo/normalizzarlo.

Inoltre proprio all'inizio del capitolo ti dice che SP e PV devono avere la stessa unità.


 

 

TCONT-s.PNG

Link al commento
Condividi su altri siti

34 minuti fa, dina_supertramp ha scritto:

Ciao, sulla guida in linea del TIA cerca questa stringa: " Mode of operation TCONT_S", ti spiega come impostare i modi di funzionamento e sulla base del modo di funzionamento quale input per la variabile di processo usare (PV_IN oppure PV_PER) e come impostarlo/normalizzarlo.

Inoltre proprio all'inizio del capitolo ti dice che SP e PV devono avere la stessa unità.


 

 

TCONT-s.PNG

Grazie, questa guida l'avevo già vista ed, infatti, è da qui che ho capito la differenza fra il PV_Int e il PV_PER. Io ho impostato il PID per prendere il valore della periferia, quindi l'analogico pulito che arriva dal PLC, e l'ho configurato come corrente/tensione essendo il canale un 4-20mA.

Il mio problema, a parte cercare di indovinare i parametri di regolazione per farlo andare correttamente, è che non mi prende il set point.

Link al commento
Condividi su altri siti

dina_supertramp
9 minuti fa, luxu279 ha scritto:

 

Il mio problema, a parte cercare di indovinare i parametri di regolazione per farlo andare correttamente, è che non mi prende il set point.


Se al posto della tua variabile, all'ingresso SP_INT cabli un valore numerico fisso cosa succede?

Link al commento
Condividi su altri siti

Beh. con il valore fisso vedo il set point, ma non lavora correttamente. Mi spiego meglio: la temperatura letta dalla sonda è di circa 21° ed io ho inserito un SP di 20°. In teoria dovrebbe azionare la chiusura dell'attuatore per raffreddamento, invece continua ad attivare il comando di apertura. Sicuramente ho impostato io dei parametri sbagliati. Adesso sono solo in simulazione perchè il motore non è fisicamente collegato nel quadro, ma aziona solo le uscite del PLC. Proverò a controllare nel programma se azzero da qualche parte il valore di set point che imposto, anche se mi sembra strano.

Grazie per le dritte.

Link al commento
Condividi su altri siti

dina_supertramp
2 ore fa, luxu279 ha scritto:

 

Il mio problema, a parte cercare di indovinare i parametri di regolazione per farlo andare correttamente, è che non mi prende il set point.


Ok, abbiamo capito che la variabile che usi per imputare il parametro SP_INT viene scritta da qualche altra parte nel programma e/o nell'HMI, deve essere così per forza, e lo hai verificato cablando un valore invece della tua variabile.
Io inizierei a risolvere questo problema, poi ci si piò dedicare a regolare/affinare il PID.

Se posso, perchè usare una funzione "datata" come la TCONT-S e non usare i PID tecnologici nativi del 1500 (PID_Compact / PID_3Step / PID_Temp)? Ti dico questo perchè potrebbe venirti in aiuto (in aiuto, non che fanno il lavoro al posto tuo) la loro funzione di autotuning, almeno per trovare dei parametri PID iniziali da cui poi partire con la parametrizzazione vera e propria. 

Dai un occhio a questo manuale (trovi i PID di cui ti ho parlato, ma anche quelli che stai usando tu, come il TCONT-S):
Regolazione PID (siemens.com)

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

22 minuti fa, dina_supertramp ha scritto:


Ok, abbiamo capito che la variabile che usi per imputare il parametro SP_INT viene scritta da qualche altra parte nel programma e/o nell'HMI, deve essere così per forza, e lo hai verificato cablando un valore invece della tua variabile.
Io inizierei a risolvere questo problema, poi ci si piò dedicare a regolare/affinare il PID.

Se posso, perchè usare una funzione "datata" come la TCONT-S e non usare i PID tecnologici nativi del 1500 (PID_Compact / PID_3Step / PID_Temp)? Ti dico questo perchè potrebbe venirti in aiuto (in aiuto, non che fanno il lavoro al posto tuo) la loro funzione di autotuning, almeno per trovare dei parametri PID iniziali da cui poi partire con la parametrizzazione vera e propria. 

Dai un occhio a questo manuale (trovi i PID di cui ti ho parlato, ma anche quelli che stai usando tu, come il TCONT-S):
Regolazione PID (siemens.com)

In effetti sto testando anche il PID_Temp e mi sembra che lavori meglio.

Link al commento
Condividi su altri siti

dina_supertramp
8 minuti fa, luxu279 ha scritto:

In effetti sto testando anche il PID_Temp e mi sembra che lavori meglio.

Bene, facci sapere...

PID_Temp lo trovo molto comodo per le mie regolazioni di temperatura basilari (non faccio automazione di processo, ma qualche "processino" da regolare lo trovo sempre bene o male).
Ha uscite per riscaldo/raffreddamento a PWM oppure analogiche, diciamo che è abbastanza dinamico, e per regolazioni semplici soprattutto da neofiti è un buon punto di partenza.

Link al commento
Condividi su altri siti

6 minuti fa, dina_supertramp ha scritto:

Bene, facci sapere...

PID_Temp lo trovo molto comodo per le mie regolazioni di temperatura basilari (non faccio automazione di processo, ma qualche "processino" da regolare lo trovo sempre bene o male).
Ha uscite per riscaldo/raffreddamento a PWM oppure analogiche, diciamo che è abbastanza dinamico, e per regolazioni semplici soprattutto da neofiti è un buon punto di partenza.

Grazie mille 🙂

 

Link al commento
Condividi su altri siti

🙂

 

Buongiorno a tutti, 

 

Ho risolto il problema del set point introdotto da pannello ed ho utilizzato PID_Temp come mi ha suggerito dina_supertramp.

Ora mi rimane solo un dubbio: se imposto un set point maggiore della temperatura di riferimento, dovrebbe, in teoria, attivare il riscaldamento e quindi aprire la valvola, invece a me funziona al contrario.

In più, mi da un errore nella finestra di stato dell'ottimizzazione "Errore del tempo di campionamento: PID_Temp non viene richiamato all'interno del tempo di campionamento dell'OB di schedulazione orologio". Io ho banalmente creato una FB con i miei 3 pid e la richiamo con una CALL nell'OB35.

Grazie ancora a chi mi potrà aiutare e per la pazienza.

 

 

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

dina_supertramp

Ciao,

 

38 minuti fa, luxu279 ha scritto:

 

In più, mi da un errore nella finestra di stato dell'ottimizzazione "Errore del tempo di campionamento: PID_Temp non viene richiamato all'interno del tempo di campionamento dell'OB di schedulazione orologio". Io ho banalmente creato una FB con i miei 3 pid e la richiamo con una CALL nell'OB35.

 


Crea tre OB di interrupt distinti, al cui interno richiamo il singolo PID_Temp: un PID cad.OB.
Oppure richiamali in un solo OB ma in modo che per tutto un ciclo dell'OB venga elaborato un solo PID e quello successivo al ciclo dopo, e cosi via per tutti i tuoi PID. In sostanza cerca di avere un solo regolatore elaborato alla volta
 

Se usi l'uscita PWM, configura un tempo di ciclo dell' OB più piccolo del tempo di ciclo PID (parametro "Tempo di campionamento dell'algoritmo PID), perché il tempo di ciclo PID definisce anche il periodo del PWM, mentre il tempo di ciclo OB definisce la durata dell'interruzione o dell'impulso più piccolo. Quindi, maggiore è il tempo di ciclo PID rispetto al tempo di ciclo OB, più preciso è il segnale PWM generato rispetto al valore di uscita calcolato.

 

38 minuti fa, luxu279 ha scritto:

 

Ora mi rimane solo un dubbio: se imposto un set point maggiore della temperatura di riferimento, dovrebbe, in teoria, attivare il riscaldamento e quindi aprire la valvola, invece a me funziona al contrario.

 

In che senso funziona al contrario?
L'uscita OutPut heat che valore ha, true o false?

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

1 ora fa, dina_supertramp ha scritto:

Ciao,

 


Crea tre OB di interrupt distinti, al cui interno richiamo il singolo PID_Temp: un PID cad.OB.
Oppure richiamali in un solo OB ma in modo che per tutto un ciclo dell'OB venga elaborato un solo PID e quello successivo al ciclo dopo, e cosi via per tutti i tuoi PID. In sostanza cerca di avere un solo regolatore elaborato alla volta
 

Se usi l'uscita PWM, configura un tempo di ciclo dell' OB più piccolo del tempo di ciclo PID (parametro "Tempo di campionamento dell'algoritmo PID), perché il tempo di ciclo PID definisce anche il periodo del PWM, mentre il tempo di ciclo OB definisce la durata dell'interruzione o dell'impulso più piccolo. Quindi, maggiore è il tempo di ciclo PID rispetto al tempo di ciclo OB, più preciso è il segnale PWM generato rispetto al valore di uscita calcolato.

 

In che senso funziona al contrario?
L'uscita OutPut heat che valore ha, true o false?

Ho creato i 3 OB distinti e richiamo in ciascuno un PID.

Per quanto riguarda i tempi degli OB, ho lasciato quello di default che mi imposta alla creazione, cioè 100000 micro sec, mentre i tempi di campionamento Algoritmo PID per riscaldamento e raffreddamento sono impostati come valore di avvio a 1 sec.

Per quanto riguarda l'uscita adesso sembra andare nel modo corretto, cioè mi mette a true l'uscita per il riscaldamento.

Rimane, però, presente un errore codice 800 in esadecimale.

 

Link al commento
Condividi su altri siti

dina_supertramp
22 minuti fa, luxu279 ha scritto:

Rimane, però, presente un errore codice 800 in esadecimale.

 

Nel manuale che ti ho allegato l'altro giorno, ci sono i codici di errore del PID_Temp:

L'errore DW#16#0000800 cita: 

"Errore del tempo di campionamento: PID_Temp non viene richiamato entro il tempo di campionamento dell'OB di schedulazione orologio. Si raccomanda di richiamare PID_Temp in un OB di schedulazione orologio senza condizioni e di eseguire la relativa attivazione o disattivazione tramite il modo di funzionamento nel parametro Mode. Richiami condizionati o il richiamo nell'OB1 possono ripercuotersi negativamente sulla qualità della regolazione. La sorveglianza del tempo di campionamento può essere disattivata con CycleTime.EnMonitoring = FALSE. Se prima del verificarsi dell'errore era attivo il funzionamento automatico e ActivateRecoverMode = TRUE, PID_Temp rimane in questo modo di funzionamento. Se prima del verificarsi dell'errore era attivo il funzionamento manuale e ActivateRecoverMode = TRUE, PID_Temp rimane in questo modo di funzionamento. Se prima del verificarsi dell'errore era attivo il modo di funzionamento Ottimizzazione iniziale o Ottimizzazione fine e ActivateRecoverMode = TRUE, PID_Temp passa al modo di funzionamento salvato in Mode. Se quest'errore si è verificato nella simulazione con PLCSIM, osservare le avvertenze riportate alla sezione Simulazione di PID_Temp con PLCSIM (Pagina 188)."

Prova a fare quanto ti dice la guida all'errore e vedi se risolvi

Link al commento
Condividi su altri siti

2 minuti fa, dina_supertramp ha scritto:

Nel manuale che ti ho allegato l'altro giorno, ci sono i codici di errore del PID_Temp:

L'errore DW#16#0000800 cita: 

"Errore del tempo di campionamento: PID_Temp non viene richiamato entro il tempo di campionamento dell'OB di schedulazione orologio. Si raccomanda di richiamare PID_Temp in un OB di schedulazione orologio senza condizioni e di eseguire la relativa attivazione o disattivazione tramite il modo di funzionamento nel parametro Mode. Richiami condizionati o il richiamo nell'OB1 possono ripercuotersi negativamente sulla qualità della regolazione. La sorveglianza del tempo di campionamento può essere disattivata con CycleTime.EnMonitoring = FALSE. Se prima del verificarsi dell'errore era attivo il funzionamento automatico e ActivateRecoverMode = TRUE, PID_Temp rimane in questo modo di funzionamento. Se prima del verificarsi dell'errore era attivo il funzionamento manuale e ActivateRecoverMode = TRUE, PID_Temp rimane in questo modo di funzionamento. Se prima del verificarsi dell'errore era attivo il modo di funzionamento Ottimizzazione iniziale o Ottimizzazione fine e ActivateRecoverMode = TRUE, PID_Temp passa al modo di funzionamento salvato in Mode. Se quest'errore si è verificato nella simulazione con PLCSIM, osservare le avvertenze riportate alla sezione Simulazione di PID_Temp con PLCSIM (Pagina 188)."

Prova a fare quanto ti dice la guida all'errore e vedi se risolvi

Grazie. Non sono ancora arrivata al capitolo dei codici di errore. Provo.

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