TC3 Timestruct wird um eine Stund falsch angezeigt

blackhack

Level-2
Beiträge
61
Reaktionspunkte
2
TC3 Timestruct wird um eine Stunde falsch angezeigt

Hallo Zusammen,
nach langer Abstinenz vom Programmieren, weil ich mich beruflich umorientiert habe, bin ich nun privat wieder an einem Programm dran.

Ich habe eine Visualisierung geschrieben bei der die Systemzeit in Format Timestruct angezeigt wird.
Dabei zeigt diese Zeit aber generell um eine Stunde zu wenig an obwohl im Struct wenn man online hineinschaut die Zeit stimmt.
Unterhalb habe ich die Struct umgewandelt in DT da wird sie dann korrekt angezeigt.
Ich arbeite mit TC3.1 Build 4024.0

Anbei der Code:
Code.JPG

und hier die Anzeige Online:
Online.JPG

Sowie Offline mit den Eigenschaften der falschen Zeit im Timestruct Format
Offline1.JPG

Und der Zeit im DT Format
Offline2.JPG

Onlinegegenüberstellung der selben Variable zur gleichen Zeit
Online2.JPG
 
Zuletzt bearbeitet:
Ich kenne mich mit TC nicht aus, ich vermute aber daß Deine Systemuhr in UTC läuft (hast Du eine Uhrzeit-Synchronisation per NTP?) und beim Konvertieren für die Anzeige wird die Uhrzeit in die Lokalzeit entsprechend der eingestellten Zeitzone (UTC+1) umgerechnet/konvertiert. Mal wird die Systemzeit verwendet und mal die Lokalzeit. Schau mal im Beckhoff Information System nach Zeit- und Zeitzone-Funktionen und -Funktionsbausteinen.

Harald
 
Hallo Harald,
erstmal danke für deine Antwort.
Ich habe keine Synchronisation, weil die Steuerung momentan noch keine Internetanbindung hat.
Ich könnte ja auch ohne weiteres die Stunde aufaddieren, aber das bringt mich nicht zum Ziel.
Wie man auf dem letzten Bild sieht, ist die Systemzeit in der Variable ja richtig. Nur wird sie von der Visualisierung dann falsch angezeigt.
Wenn ich nun die Zeit umrechnen lasse, das dürfte der Baustein "FB_SystemTimeToTzSpecificLocalTime" sein, dann stimmt die Zeit auf der Anzeige wieder nicht. Ich teste das aber heute Abend mal.
Gruß
Bernd
 
Hallo,
standardmäßig liefert dir Twincat mit Tc2_System.F_GetSystemTime() immer die Zeit in UTC. Diese muss dann korrigiert werden mit Tc2_Utilities.FB_FileTimeToTzSpecificLocalTime() und der entsprechenden Zeitzoneninformation die du mit Tc2_Utilities.FB_GetTimeZoneInformation() auslesen kannst.
Sg M.
 
Ok probiere ich heute Abend aus.
Mich wundert aber dennoch, dass die Anzeige um eine Stunde anders anzeigt als in der Variable auf die zugegriffen wird.
 
Hi MasterOhh das ist jetzt höchst intereessant und erklärt das Verhalten.
Welche Platzhalter kann ich dann eingeben, damit die Zeit und das Datum so Zeit.JPG angezeigt wird und ich auf meine Variable zugreife?


Ich habe jetzt mal die Variable in den Eigenschaften der Visualisierung entfernt und die Anzeige ist wie zu erwarten die selbe.
Da wir aber momentan Winterzeit haben und der PanelPC auch so eingestellt ist, dass er die Sommer und Winterzeit Umschaltung automatisch macht,
müsste doch die richtige Zeit angezeigt werden oder. Ich hole mir die Systemzeit mit NT_GETTIME und schreibe diese in eine Variable vom Format TIMESTRUCT.
Dort steht die richtige Zeit. Wenn nun %t[] auf diese Zeit zugreift müsste ja dann auch die gleiche Zeit angezeigt werden.
 
Zuletzt bearbeitet:
Es ist schon komisch, dass er bei dir nicht die korrekte Zeit anzeigt. Ich kann die Visu aktuell leider nur lokal auf meinem Programmierrechner testen. Aber hier wird mir die richtige Uhrzeit gezeigt ...
Worauf läuft das HMI bei dir? Auf einer CX oder lokal? Hast du die Zeiteinstellungen schon überprüft?
 
Hallo zusammen ich habe nun herausgefunden woran das Verhalten liegt.
Wenn in den Einstellungen der Systemuhr der Haken gesetzt ist, dass die Uhr automatisch auf Sommer und Winterzeit umstellen soll, dann stimmt die Uhr in der Anzeige.
Wenn ich nun den Haken wieder wegnehme und den PC neu boote, dann bekomme ich wieder die falsche Urzeit angezeigt.

Danke an Alle die mir mit Tipps weitergeholfen haben.
Gruß
Bernd
 
Zurück
Oben