Vai al contenuto

Visualizzazione Data/Ora utilizzando formato custom

Home Forum Terminali operatore (Weintek) Visualizzazione Data/Ora utilizzando formato custom

Stai visualizzando 1 post (di 1 totali)
  • Autore
    Post
  • #77837
    Sergio Bertana
    Amministratore del forum

    Molti clienti hanno l’esigenza di visualizzare e/o impostare la data e l’ora in un sistema SlimLine tramite il pannello operatore Weintek, in questo topic avevamo già trattato l’argomento utilizzando delle macro di conversione sul pannello. In questo topic invece vediamo come sia possibile realizzare una semplice gestione Data/ora da pannello (Screenshot) gestendo tutto da programma LogicLab. In LogicLab in una task Back eseguiamo il programma:

    VAR
        i : UDINT; (* Auxiliary variable *)
        ClockTime : UDINT; (* Clock time *)
        ClockDate : UDINT; (* Clock date *)
        DateTime : UDINT; (* Clock Date/Time *)
        LDTime : LDATETIMESTRUCT; (* Date/Time struct *)
    END_VAR
    
        // Check if new date has been set by HMI.
    
        IF ((HMIClockDate <> ClockDate) OR (HMIClockTime <> ClockTime)) THEN
            SysDateTime:=TO_UDINT(CONCAT_DT(
                    TO_INT(MOD(HMIClockDate, 10000)), //Year
                    TO_INT(MOD((HMIClockDate/10000), 100)), //Month
                    TO_INT(MOD((HMIClockDate/1000000), 100)), //Day
                    TO_INT(HMIClockTime/10000), //Hour
                    TO_INT(MOD((HMIClockTime/100), 100)), //Minute
                    TO_INT(MOD(HMIClockTime, 100)))); //Second
        END_IF;    
    
        // If system Date/Time changes set HMI values.
    
        IF (SysDateTime <> DateTime) THEN
            DateTime:=SysDateTime; //Clock Date/Time
    
            i:=SPLIT_DT(TO_DATE_AND_TIME(SysDateTime), ADR(LDTime.Year), ADR(LDTime.Month), ADR(LDTime.Day), ADR(LDTime.Hours), ADR(LDTime.Minutes), ADR(LDTime.Seconds));
    
            ClockDate:=LDTime.Day*1000000; //Clock date
            ClockDate:=ClockDate+TO_UDINT(LDTime.Month*10000); //Clock date
            ClockDate:=ClockDate+TO_UDINT(LDTime.Year); //Clock date
            HMIClockDate:=ClockDate;
    
            ClockTime:=LDTime.Seconds; //Clock time
            ClockTime:=ClockTime+TO_UDINT(LDTime.Minutes*100); //Clock time
            ClockTime:=ClockTime+TO_UDINT(LDTime.Hours*10000); //Clock time
            HMIClockTime:=ClockTime;
        END_IF;

    Le variabili HMIClockDate e HMIClockTime sono variabili a UDINT allocate in DB100 collegate all’oggetto di visualizzazione sul display. Il loro valore ad ogni secondo viene calcolato dal programma. Se vi è una variazione del loro valore rispetto al valore calcolato vi è stata una impostazione di un nuovo valore sul terminale quindi occorre impostare la variabile SysDateTime che aggiorna automaticamente il real time clock del sistema.

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