Vai al contenuto

Controllo funzionamento applicazione tramite heartbeat

Home Forum Programmazione IEC 61131 (LogicLab) Controllo funzionamento applicazione tramite heartbeat

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

    Avrei la necessità di controllare lo stato attivo di una applicazione esterna, a tale scopo ho previsto che la suddetta applicazione generi un heartbeat in ingresso allo SlimLine con una frequenza prestabilita, diciamo 5 secondi. Sul variare dello stato del segnale in ingresso, memorizzo in una variabile l’ora corrente. Successivamente confronto l’ora corrente con quella precedentemente salvata.

    Il mio dubbio è: cosa succede quando il risultato di SysGetSysTime(TRUE) esegue l’overflow. Il tempo corrente sebbene successivo a quello memorizzato, dato l’overflow, risulterebbe precedente e il confronto tra i due tempi risulterebbe falsato. E’ giusta la mia osservazione ?

    #36443
    Sergio Bertana
    Amministratore del forum

    Il flusso del programma così come l’hai descritto è perfetto, ed è legittima anche la tua perplessità. Ecco la stampa di un programma che esegue quello che ti necessita.

    La differenza di tempo “SysGetSysTime(TRUE)-TimeBf” essendo tra due valori di tipo UDINT mantiene il rapporto circolare è restituisce un valore corretto anche se vi è un rollover del valore di ritorno dalla funzione SysGetSysTime(TRUE).

    Attenzione il calcolo della differenza deve avvenire nell’intervallo di tempo necessario al rollover del valore, per spiegarmi esendo il tempo incrementato ad ogni uS il rollover avviene dopo 4294967295 uS pari a 4294 secondi. Se la differenza “SysGetSysTime(TRUE)-TimeBf” fosse eseguita con un valore di TimeBf salvato da più di 4294 secondi il risultato sarebbe in errore. Ecco perchè non ho scritto qualcosa del tipo:

    Error:=(SysGetSysTime(TRUE)-TimeBf) > 5000000;

    Perchè immaginando che l’ingresso di heartbeat non arrivi più ogni 4294 secondi avrei per 5 secondi l’uscita Error disattiva pur essendo in errore. Allego il programma sorgente.

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