Home › Forum › Terminali operatore (Weintek) › Visualizzazione Data/Ora utilizzando formato custom
- Questo topic ha 1 risposta, 1 partecipante ed è stato aggiornato l'ultima volta 1 anno, 3 mesi fa da
Sergio Bertana.
-
AutorePost
-
Settembre 13, 2024 alle 3:09 pm #77837
Sergio Bertana
Amministratore del forumMolti 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.
Giugno 13, 2025 alle 5:05 pm #82820Sergio Bertana
Amministratore del forumInformazioni utili si possono trovare anche in questo topic.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.