Autor Thema: E4: Systemzeit im Unix-format?  (Gelesen 409 mal)

Offline joelas

  • Jr. Member
  • **
  • Beiträge: 27
E4: Systemzeit im Unix-format?
« am: September 18, 2025, 09:14:19 Vormittag »
Kennt jemand eine Moeglichkeit, die aktuelle Zeit (Funktionsblock "RC") als 32-bit-Variable im Unix-Format in einem MD abzulegen, so dass sie ueber ModBusTCP als "Zeitstempel" gelesen werden kann?
Ich nehme ja an, dass der RC-Block die interne Zeit schon in einem Unix-aehnlichen Format aus dem Speicher liest, nur ist dieser Wert ja leider offenbar nicht von aussen zum Lesen zugaenglich...

Offline w.sprungmann

  • Full Member
  • ***
  • Beiträge: 304
Antw:E4: Systemzeit im Unix-format?
« Antwort #1 am: September 22, 2025, 08:00:37 Vormittag »
Hallo joelas,
kannst du den Zeitstempel nicht aus dem Zeitserver holen, wenn du schon mit Modbus (Internet) verbunden bist?

Beim 32 Bit Unix Format gibt es noch ein anderes Problem, dieses habe ich gefunden:

Die Zeit als 32-Bit-Unix-Format ist ein vorzeichenbehafteter 32-Bit-Wert (time_t), der die Anzahl der Sekunden seit dem 1. Januar 1970 (Unix-Epoche) in UTC zählt. Dieses Format birgt jedoch das Jahr-2038-Problem, bei dem die Kapazität der 32-Bit-Zahl am 19. Januar 2038 überschritten wird und zu Systemfehlern führt. Aus diesem Grund verwenden moderne Unix-Systeme auf 64-Bit-Basis standardmäßig eine 64-Bit-Variable, um dieses Problem zu umgehen
Das Problem mit 32-Bit-Variablen

Kapazitätsgrenze:
Eine vorzeichenbehaftete 32-Bit-Zahl kann Werte bis zu etwa 2.147.483.647 aufnehmen.

Datumsgrenze:
Am 19. Januar 2038 um 03:14:07 Uhr UTC wird die Anzahl der verstrichenen Sekunden diesen Wert überschreiten.
Auswirkungen:
Dies führt zu einem Überlauf, was dazu führt, dass die Zeit auf vielen Systemen wieder zurückspringt und zu Fehlfunktionen führt.

Na ja es dauert noch 13 Jahre
Gruß Wilhelm

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 867
  • Think easy!
    • mollgruppe
Antw:E4: Systemzeit im Unix-format?
« Antwort #2 am: Oktober 10, 2025, 12:36:47 Nachmittag »
Hallo Wilhelm,
das stimmt so nicht ganz.
Auf SPSen (zB Codesys) ist der Wert von Time nicht Vorzeichenbehaftet Es ist ein DWORD. Damit ist es ein Jahr 2106 Problem. ;)
Weil Einfach einfach Einfach ist!