Vai al contenuto

Funzione per la conversione epoch time in stringa data/ora

Home Forum Programmazione IEC 61131 (LogicLab) Funzione per la conversione epoch time in stringa data/ora

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35337
    Emiliano
    Partecipante

    Vorrei utilizzare SysETimeToDate con una funzione in ST, praticamente dovrei convertire una data/ora in stringa, come per esempio:

    OString:=Converti(data_in_epoch_time,ADR(strout));

    Quindi OString dovrà essere del tipo: 05/03/2013 17:50:20, ma al momento della compilazione mi da questo errore:

    etd – error A4110:  SysDateToETime => Invalid data type

    etd dichiarata nella funzione come VAR_INPUT Type SysETimeToDate (primo parametro della funzione ‘data_in_epoch’)
    il tutto funziona come programma, ma se creo la funzione non va! Ci sono degli sbocchi o devo abbandonare l’utilizzo della funzione per quanto riguarda le date ?

    #37591
    Sergio Bertana
    Amministratore del forum

    Il problema è che tu stai istanziando una FB la SysETimeToDate in una funzione. Nella normativa IEC 611131 le funzioni non possono avere al loro interno dati statici, quindi per realizzare quello che tu vuoi, devi per forza realizzare un blocco funzione. Ecco il listato di una FB che ha in entrata una variabile di tempo in Epoch time ETime ed una uscita con una stringa formattata di data ed ora OString.

    ETToD(EpochTime:=ETime); (* Valore di epoch time *)
    i:=SysVarsnprintf(ADR(OString[0]), 4, ‘d/’, USINT_TYPE, ADR(ETToD.Day));
    i:=SysVarsnprintf(ADR(OString[3]), 4, ‘d/’, USINT_TYPE, ADR(ETToD.Month));
    i:=SysVarsnprintf(ADR(OString[6]), 6, ‘d ‘, UINT_TYPE, ADR(ETToD.Year));
    i:=SysVarsnprintf(ADR(OString[11]), 4, ‘d:’, USINT_TYPE, ADR(ETToD.Hour));
    i:=SysVarsnprintf(ADR(OString[14]), 4, ‘d:’, USINT_TYPE, ADR(ETToD.Minute));
    i:=SysVarsnprintf(ADR(OString[17]), 3, ‘d’, USINT_TYPE, ADR(ETToD.Second));

    Allego stampa e programma sorgente di un semplice porogramma di test.

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