Vai al contenuto

Calcolo differenza tempi

Home Forum Terminali operatore (Weintek) Calcolo differenza tempi

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #78767
    Anonimo
    Inattivo

    Devo calcolare la differenza di tempo in secondi che intercorre tra la pressione di due tasti sul terminale.

    Qualcuno ha qualche esempio  e/o suggerimento.

    #78770
    Sergio Bertana
    Amministratore del forum

    Puoi 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
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.