easy-forum
Deutsch - Software => easySoft => Thema gestartet von: joelas 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...
-
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
-
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. ;)