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