Home › Forum › Terminali operatore (Weintek) › Calcolo differenza tempi
- Questo topic ha 1 risposta, 1 partecipante ed è stato aggiornato l'ultima volta 1 anno, 11 mesi fa da
Sergio Bertana.
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
-
AutorePost
-
Novembre 8, 2024 alle 4:40 pm #78767
Anonimo
InattivoDevo calcolare la differenza di tempo in secondi che intercorre tra la pressione di due tasti sul terminale.
Qualcuno ha qualche esempio e/o suggerimento.
Novembre 8, 2024 alle 4:46 pm #78770Sergio Bertana
Amministratore del forumPuoi eseguire quello che ti serve realizzando due macro da eseguire sulla pressione di due tasti funzione.
- Macro SaveTime: Alla pressione del primo tasto esegue il salvataggio del tempo in una variabile HMI.
- Macro ComputeTime: Alla pressione del secondo tasto calcola il tempo intercorso dalla pressione del primo tasto e salva il valore in una variabile HMI.
Ecco il listato delle due macro.
// ----------------------------------------------------------------------------- // MACRO "SaveTime" // ----------------------------------------------------------------------------- // Esegue il salvataggio del tempo su variabile HMI LW-10 (32 bit-unsigned). // ----------------------------------------------------------------------------- macro_command main() short Value=0 //Get valoe int TSave=0 //Time save (S) // Trasformo ora attuale in secondi. GetData(Value, "Local HMI", LW, 9019, 1) //LW-9019 (16bit) : local hour TSave=Value*3600 GetData(Value, "Local HMI", LW, 9018, 1) //LW-9018 (16bit) : local minute TSave=TSave+(Value*60) GetData(Value, "Local HMI", LW, 9017, 1) //LW-9017 (16bit) : local second TSave=TSave+Value // Salvo valore in variabile HMI. SetData(TSave, "Local HMI", LW, 10, 1) TRACE("TSave:%d", TSave) end macro_command// ----------------------------------------------------------------------------- // MACRO "ComputeTime" // ----------------------------------------------------------------------------- // Calcola tempo trascorso e salva su variabile HMI LW-10 (32 bit-unsigned). // ----------------------------------------------------------------------------- macro_command main() short Value=0 //Get valoe int TSave=0 //Time save (S) int TLoad=0 //Time load (S) int TPass=0 //Time passed (S) // Trasformo ora attuale in secondi. GetData(Value, "Local HMI", LW, 9019, 1) //LW-9019 (16bit) : local hour TLoad=Value*3600 GetData(Value, "Local HMI", LW, 9018, 1) //LW-9018 (16bit) : local minute TLoad=TLoad+(Value*60) GetData(Value, "Local HMI", LW, 9017, 1) //LW-9017 (16bit) : local second TLoad=TLoad+Value // Calcolo tempo trascorso. GetDataEx(TSave, "Local HMI", LW, 10, 1) TPass=TLoad-TSave SetData(TPass, "Local HMI", LW, 12, 1) TRACE("TLoad:%d, TSave:%d, TPass:%d", TLoad, TSave, TPass) end macro_command -
AutorePost
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
- Devi essere connesso per rispondere a questo topic.