Vai al contenuto

Contatore ore di funzionamento

Home Forum Programmazione IEC 61131 (LogicLab) Contatore ore di funzionamento

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #58362
    Fabio Romani
    Partecipante

    Stò cercando di realizzare un FB che conteggi le ore ed i minuti di lavoro delle piastre ozono, e poi mi restitusca un alert per  sostituzione dopo 100 ore di lavoro. Il problema e’ nella variabile ritentiva che non si dovrà mai resettare tipo “Timer Vita”.

    Ho scaricato il progetto RetainCounter da questo topic, ma ogni volta che spengo e riaccendo il sistema  la variabile si resetta, invio il programma al Vs supporto tecnico, potete controllarlo cortesemente.

    #58365
    Sergio Bertana
    Amministratore del forum

    Ecco lo screenshot del programma ricevuto, hai seguito la parte di esempio in linguaggio FBD dove hai passato correttamente l’indirizzo della variabile Valore al tuo FB di conteggio, ma poi ti sei perso nello sviluppo della FB. Nella mia FB eseguo questo calcolo

    @Value:=@Value+1;

    Mentre tu nel tuo esegui questo calcolo

    Secondi:=Secondi+1;
    @Minuti:=Secondi/60;

    Ma la variabile Secondi non è ritentiva, e se tu ne copi il valore in quella ritentiva alla accensione avrai la variabile ritentiva che contiene il valore allo spegnimento ma la variabile Secondi sarà azzerata e quindi copiandone il valore in quella ritentiva azzererai anche lei.

    #58366
    Sergio Bertana
    Amministratore del forum

    Credo possa essere di esempio realizzare un semplice FB che gestisce il conteggio del tempo di funzionamento. Basterà definire una variabile UDINT in memoria ritentiva (DB100 da 2048 a 4095) per ogni contatore che si vuole gestire e passarne l’indirizzo al FB HourCounter che lo gestirà. Riporto il codice sorgente del FB.

        // -------------------------------------------------------------------------
        // GESTIONE CONTAORE
        // -------------------------------------------------------------------------
        // Eseguo conteggio in secondi, valore massimo 4294967295 secondi pari ad
        // oltre 130 anni.
    
        IF (SysClock1000 <> Clk) THEN
            Clk:=SysClock1000; //Counter clock
            @HCValue:=@HCValue+1; //Hourcounter value
        END_IF;
    
        // Genero in uscita il valore in ore, minuti, secondi.
    
        Hours:=@HCValue/3600; //Hours
        Minutes:=TO_USINT((@HCValue/60) MOD 60); //Minutes
        Seconds:=TO_USINT(@HCValue MOD 60); //Seconds

    Allego il progetto HourCounter per il download.

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