Twincat, Datum & Uhrzeit für Excel, TIMESTRUCT

morris

Level-1
Beiträge
18
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wie bekomme ich das Datum und die uhrzeit mit Millisekunden in das Excel Format, aus das Excel wieder das Datum generieren kann?
Möchte Daten mit Zeitstempel (getsystemtime oder FB_LocalSystemTime) loggen.

MFG
Morris
 
Hey Morris,

damit bekommst du die systemzeit

Code:
IF NTGetTimeInit < 1 THEN
    IF NT_GetTime_1.BUSY = FALSE THEN
        NT_GetTime_1.START := TRUE;
    END_IF
    NTGetTimeInit  := 1;
ELSE
    NT_GetTime_1.START := FALSE;
    NTGetTimeInit  := 0;
END_IF;

(* Aufruf NT_GetTime *)

NT_GetTime_1(
        TMOUT:= TMOUT);

Uhr.NT_Sek         := NT_GetTime_1.TIMESTR.wSecond;
Uhr.NT_Min         := NT_GetTime_1.TIMESTR.wMinute;
Uhr.NT_Hour         := NT_GetTime_1.TIMESTR.wHour;
Uhr.NT_Day         := NT_GetTime_1.TIMESTR.wDay;
Uhr.NT_Month     := NT_GetTime_1.TIMESTR.wMonth;
Uhr.NT_Year        := NT_GetTime_1.TIMESTR.wYear;

hier als beispiel bei der stunde.... halt mit CONCAT die Informationen zusammenbauen.

Code:
FUNCTION FUN_TIME_TO_STRING : Uhrzeit_Datum_t
VAR_INPUT
    Uhr: Uhrzeit_Datum_t;
END_VAR
VAR
END_VAR

IF UHR.NT_Hour <=9 THEN
    FUN_TIME_TO_STRING.Stunde_String := '';
    FUN_TIME_TO_STRING.Stunde_String := CONCAT ('0', UINT_TO_STRING ( Uhr.NT_Hour));
ELSE
    FUN_TIME_TO_STRING.Stunde_String :='';
    FUN_TIME_TO_STRING.Stunde_String := UINT_TO_STRING ( Uhr.NT_Hour);
END_IF;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Hendrik für deineAntowrt,

Hab es geschafft, dass Excel die Zeit erkennt =)
(vielleicht ein bisschen Aufwändig und mit einem ähnlichen Ansatz)

Code:
FBLocalSystemTime : FB_LocalSystemTime := ( bEnable := TRUE, dwCycle := 5 );
zeit : TIMESTRUCT;
Zeitstempel : STRING;

Code:
FBLocalSystemTime(systemTime=> zeit);

// Passenden String im FOrmat TT.MM.JJJJ hh:mm:ss,ms" zusammenbasteln
    zeitstempel := CONCAT(STR1:= WORD_TO_STRING(zeit.wDay), STR2:='.' );   
 
    zeitstempel := CONCAT(STR1:=zeitstempel, STR2:=WORD_TO_STRING(zeit.wMonth) );
    zeitstempel := CONCAT(STR1:=zeitstempel, STR2:='.' );
    
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=WORD_TO_STRING(zeit.wYear));
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=' ' );
    
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=WORD_TO_STRING(zeit.wHour));
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=':' );
    
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=WORD_TO_STRING(zeit.wMinute));
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=':' );
    
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=WORD_TO_STRING(zeit.wSecond));
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=',' );
    
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=WORD_TO_STRING(zeit.wMilliseconds));
    zeitstempel := CONCAT(STR1:= zeitstempel, STR2:=';' );
// und diesen in die eine CSV. Datei mit Hilfe von FB_FileWrite übergeben

In Excel als Zellenformat "Benutzerdefiniert" mit dem Typ "TT.MM.JJJJ hh:mm:ss,000" eingeben
und nun kann man Das Datum beliebig anziegen lassen bzw. in die Zahl ändern

MFG

Morris
 
Zuletzt bearbeitet:
Zurück
Oben