Vai al contenuto

Gestione isteresi su comando riscaldatore

Home Forum Programmazione IEC 61131 (LogicLab) Gestione isteresi su comando riscaldatore

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • #35879
    Anonimo
    Inattivo

    Ho realizzato un semplice programma ladder che gestisce il comando di un riscaldatore su acquisizione di temperatura da Pt100. Per evitare oscillazioni sul comando del riscaldatore ho gestito una isteresi sul valore di tempertaura.

    Non essendo molto pratico nel linguaggio ST, seguendo quanto riportato in questo topic ho realizzato il tutto in ladder, ecco lo screenshot del programma. Chiedevo se era possibile avere un esempio in ST, così può essermi utile anche per avvicinarmi all’utilizzo del linguaggio.

    #39195
    Sergio Bertana
    Amministratore del forum

    Premesso che la gestione della isteresi che hai fatto è corretta, lo schema che hai realizzato non ha nulla del ladder è più adatto al linguaggio FBD (Screenshot). Tant’è che nella nuova versione di LogicLab 4 l’editor del ladder è stato rivisto per “costringere” lo sviluppatore a seguire le regole dettate dalla normativa IEC 61131. Ma niente paura è sempre possibile continuare ad usare la retrocompatibilità con l’editor attuale. Ora vediamo come scrivere il programma in ST.

      AnInp.Address:=0; (* Module address *)
      AnInp.Channel:=0; (* Module channel *)
      AnInp.Mode:=AD_VOLT_0_10_COMMON; (* Acquisition mode *)
      AnInp(); (* Execute the analog acquisistion *)

      IF (AnInp.Value < Minimum) THEN Heating:=TRUE; END_IF; (* If the value drops below minimum set the command *)
      IF (AnInp.Value >= Maximum) THEN Heating:=FALSE; END_IF; (* If the value reach the maximum reset the command *)
      IF (AnInp.Fault) THEN Heating:=FALSE; END_IF; (* On FB fault reset the command *)

    Anche per chi non ha esperienza di programmazione in linguaggio ST credo il programma sia leggibile, nella prima parte viene gestita l’acquisizione. Poi il valore acquisito viene comparato con lo statement IF con i valori minimo e massimo e  se la condizione è vera si eseguono le operazioni scritte dopo il THEN.

    #39196
    Sergio Bertana
    Amministratore del forum

    Naturalmente è conveniente creare una funzione per gestire l’isteresi. In questo programma (Stampa) ho realizzato due funzioni per la gestione della isteresi una scritta in ST e l’altra in FBD (Download programma).

    #39198
    Anonimo
    Inattivo

    Dovrei realizzare un controllo che:

    Temperatura < di SetPoint -> apri valvola A (heat)
    Temperatura > di SetPoint -> apri valvola B (cool)
    -2° da SetPoint > Temperatura < +2° da SetPoint -> chiudi sia valvola A e B

    In questo modo se l’afflusso di caldo o freddo (per le pompe o valvole sovradimensionate) è troppo, arrestandole prima del valore di set point non si tende ad oltrepassarlo.

    #39199
    Sergio Bertana
    Amministratore del forum

    Intanto diciamo che con una regolazione On/Off è difficile evitare gli overshoots, il sistema tende sempre un po ad andare olte i valori di set point, solo una regolazione PID permette di evitare questo problema. Ma per realizzare una regolazione PID dovresti disporre di pompe e/o valvole gestibili analogicamente (Velocità/Portata variabile).

    Comunque è buona la soluzione di creare una banda morta attorno al valore di SetPoint (Tu hai fissato ±2 gradi) ma si può avere un valore variabile da impostare sperimentalmente in base ai test reali sull’impianto. Aumentando la banda morta potrai arrestare l’azione prima di raggiungere il SetPoint lasciando alla inerzia termica il compito di portare la temperatura al valore di SetPoint senza avere overshoot.

    Ecco lo screenshot in simulazione su SimuLab di un semplice riscaldatore a doppio effetto con banda morta (Download programma).

    #39330
    Sergio Bertana
    Amministratore del forum

    Allego l’FB OnOffRegulation che ho realizzato per gestire la regolazione degli aerotermi in azienda. Il FB gestisce la soglia di temperatura con una banda morta per evitare le pendolazioni sul comando (Stampa, libreria).

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Devi essere connesso per rispondere a questo topic.