Beckhoff und Unixzeit

Scrat

Level-1
Beiträge
85
Reaktionspunkte
13
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,

ich muss in einer Beckhoff Steuerung eine Unixzeit (Sekunden seit 1970 0:00 Uhr) umrechnen auf ein normales Zeitformat (Time). gibt es da fertige Bausteine für? Hat das jemand schon mal verwendet?

Gruß Scrat
 
Ich suche gerade sowas ähnliches für SIEMENS.
Genauer gesagt aus "Heute mach unix".

Versteh ich das richtig, dass die Beckhoff aus ner DINT mit unix-Zeit ein Datum macht, ohne speziellen Baustein?

Nicht schlecht!
 
DWORD_TO_DT ist eine Funktion. Also eigentlich auch ein Baustein, der die übergebene Unix-Zeit in ein Datum umrechnet.
 
DWORD_TO_DT ist eine Funktion. Also eigentlich auch ein Baustein, der die übergebene Unix-Zeit in ein Datum umrechnet.

Ich hab mich glaub etwas unglücklich ausgedrückt. So ne Funktion gibt es in Step7 auch. FC6 oder FC7 heißt er glaub in der Standartlibary.
Einer der beiden zieht aus dem Datentyp DATE_AND_TIME das Datum, der andere die Zeit in hh:mm:ss.
Ich kapiers zwar noch nicht ganz, aber Datum und Zeit müssen bereits "richtig" codiert sein. Sprich, das Datum in Tagen und die Zeit in (milli)Sekunden.
Denn man kann die Tage in Sekunden umrechnen, eben wie bei der Beckhoff. Und die Zeit einfach durch 1000 teilen und schon hat man die Tagessekunden. Wirklich net!
PS: Danke, Kai!
 
Hallo,

hat jemand eine Erklärung weshalb Beckhoff hier einen Versatz von 2 Stunden hat? Beckhoff UNIX.png
Mit einem Unixtime-Umrechner komme ich auf die korrekte Zeit.
2024-06-22 20_37_50-Window.png
Die Systemzeit stimmt auch.
Beckhoff Systemtime.png

Gruß
Marco
 
Ich kenne dein "Beckhoff" nicht, doch vermutlich wird die Ursache im Unterschied Systemzeit und Lokalzeit liegen. Hast du den berücksichtigt? Rechnet DWORD_TO_DT vielleicht (einstellbar?) in Lokalzeit um?
Die Systemzeit passt. Und durch die Umrechnung von UNIX in ein lesbares Format gibt es die gleiche Zeit wie die Systemzeit. Auf dem Ursprungssystem stimmt die Lokalzeit auch. Irgendwas scheint innerhalb von TwinCAT schief zugehen.
 
Ja, DWORD_TO_DT sollte den Zeitwert einfach 1:1 umrechnen (wie der Unixtime-Rechner) und nicht noch Zeitzonen reinmischen.

Wird todLastReceive eventuell später noch was zugewiesen? Ist der Beobachtungswert das Ergebnis der Programmzeile oder der Wert vom Zyklusende?
 
Zurück
Oben