Vai al contenuto

Distinguere il primo loop di esecuzione programma

Home Forum Controllori SlimLine e Netsyst (LogicLab) Distinguere il primo loop di esecuzione programma

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35590
    Fabio
    Partecipante

    C’è il modo di sapere se il primo ciclo del programma è in esecuzione perchè l’ho appena scaricato dal PC oppure se è un successivo run a casa di uno spegnimento del PLC ?

    Dovrei fare delle inizializzazioni di variabili in modo differente, per esempio init di variabili di collaudo ed variabili impostate da utente, sempre utilizzando variabili ritentive.

    #38314
    Sergio Bertana
    Amministratore del forum

    E’ possibile utilizzare una variabile RETAIN di tipo BOOL. Come visibile in questo topic, le variabili di tipo RETAIN mantengono il loro valore allo spegnimento del sistema, mentre sono azzerate al caricamento del programma.

    Quindi se definisci ad esempio una variabile PReload di tipo BOOL come RETAIN, al primo loop di programma potrai verificare se è FALSE o TRUE e così gestire le tue inizializzazioni. Dopo il controllo la variabile PReload andrà settata. Ecco come gestirla in un semplice programma ST eseguito in task Boot (Allego programma di esempio per download).

      IF NOT(PReload) THEN
        IsReload:=TRUE; (* Program reload *)
      ELSE
        IsStartup:=TRUE; (* Program start-up *)
      END_IF;

      PReload:=TRUE; (* Program reload flag *)

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