# Wago 750-890 Uhrzeit Lesen und Schreiben



## AW123 (6 April 2022)

Moin,

ich habe ein Frage wie ich die Uhrzeit lesen und schreiben kann im Wago Controller.
Im Forum habe ich gefunden, dass man die Uhrzeit mit der Lib "SysLibRTC" auslesen / schreiben kann.
Nun stellt sich für mich die Frage:

Wenn ich bei der Funktion getTime eine "1" drauf gebe bekomme ich eine Zeit angezeigt im DT Format.
Bedeutet dies: DT = Controller interne Zeit? oder muss ich via "move befehl" diese Zeit noch in eine andere Variable schieben.

Bei SetTime kann ich eine Zeit im DT Format vorgeben und dann bekomme ich ein "true" wenn er dies verarbeitet hat. 
Wenn ich auf diesen Eingang ein anderes Datum vorgeben habe hat sich am Ausgang von getTime nichts geändert.

Ist dies der richtige weg?

Leider habe ich keine Wago CPU mehr zur Verfügung um damit zu spielen. Kann ich dies auf in Codesys simulieren?

MfG AW123


----------



## .:WAGO::0105239:. (7 April 2022)

Hallo AW123,
die Funktion SysRtcGetTime gibt die aktuelle Echtzeit vom Controller zurück. In der Simulation werden Sie wahrscheinlich folgende Zeit DT#1970-01-01-00:00 als Rückgabe erhalten. Leider wird die Funktion nicht von der Simulation unterstützt. Ein "move Befehl" ist hier nicht erforderlich, Sie können einfach am Ausgang der Funktion eine Variable vom Datentyp "DT" anlegen.


----------



## AW123 (7 April 2022)

Ok super danke. Und wie funktioniert dann set time?
Wenn ich dort DT#2000-04-04-04:00 eingebe sollte dann nicht bei get time dies drin stehen?

Ich würde gerne folgendes realisieren:

Die Steuerung läuft autark. Falls diese mal länger aus ist und diese die Uhrzeit DT#1970-01-01-00:00 wieder an nimmt soll
die Zeit geändert werden auf die aktuellen werte.

Der Gedanke ist mit getRTC schaue ich ob das Datum > 2022 ist wenn ja dann darf die Anlage arbeiten wenn nein
setzte das Datum und die Uhrzeit.

Wie kann ich dies realisieren in Codesys 2.3

MfG AW


----------



## .:WAGO::0105239:. (7 April 2022)

Hallo AW123,
wie oben beschrieben ließt die Funktion SysRtcGetTime die aktuelle Echtzeit vom Controller aus und wird dadurch nicht in der Simulation unterstützt. Die Funktion SysRtcSetTime setzt die aktuelle Echtzeit vom Controller, dieses wird auch nicht in der Simulation unterstützt, da Sie mit der Simulation nicht auf die Systemfunktionen eines Controllers zurückgreifen können.

Ihren Ansatz, falls die Uhrzeit DT#1970-01-01-00:00 beträgt, kann ich nicht nachvollziehen. Wenn Sie mit der Funktion SysRtcGetTime die Uhrzeit  DT#1970-01-01-00:00 erhalten, wie soll dann die aktuelle Uhrzeit via SysRtcSetTime gesetzt werden. Hier können Sie wenn nur eine fest vorgegebene Zeit mit der Funktion SysRtcSetTime setzen oder Sie geben die zu schreibende Uhrzeit z.B. aus der Visualisierung vor.


----------



## AW123 (7 April 2022)

.:WAGO::0105239:. schrieb:


> Hallo AW123,
> wie oben beschrieben ließt die Funktion SysRtcGetTime die aktuelle Echtzeit vom Controller aus und wird dadurch nicht in der Simulation unterstützt. Die Funktion SysRtcSetTime setzt die aktuelle Echtzeit vom Controller, dieses wird auch nicht in der Simulation unterstützt, da Sie mit der Simulation nicht auf die Systemfunktionen eines Controllers zurückgreifen können.


Ich weis, dass ich die Uhrzeit nicht simulieren kann. Ich hatte kurzzeitig eine Steuerung zur Verfügung um dies zu testen.
Das auslesen hatte auch super funktioniert. Nur als ich versucht habe ein anderes Datum zu schreiben (forcen der Variable in der Funktion SetTime) wurde mir bei GetTime immer noch das alte Ergebnis angezeigt.



.:WAGO::0105239:. schrieb:


> Ihren Ansatz, falls die Uhrzeit DT#1970-01-01-00:00 beträgt, kann ich nicht nachvollziehen. Wenn Sie mit der Funktion SysRtcGetTime die Uhrzeit  DT#1970-01-01-00:00 erhalten, wie soll dann die aktuelle Uhrzeit via SysRtcSetTime gesetzt werden. Hier können Sie wenn nur eine fest vorgegebene Zeit mit der Funktion SysRtcSetTime setzen oder Sie geben die zu schreibende Uhrzeit z.B. aus der Visualisierung vor.



Das Ziel ist, die Uhrzeit via Panel und Modbus zu setzen / übertragen.
Ich trage Datum Uhrzeit im Panel ein -> schiebe dies als DT Format in eine Variable -> diese variable lade ich in SetTime.


----------



## .:WAGO::0105239:. (7 April 2022)

AW123 schrieb:


> Ich weis, dass ich die Uhrzeit nicht simulieren kann. Ich hatte kurzzeitig eine Steuerung zur Verfügung um dies zu testen.
> Das auslesen hatte auch super funktioniert. Nur als ich versucht habe ein anderes Datum zu schreiben (forcen der Variable in der Funktion SetTime) wurde mir bei GetTime immer noch das alte Ergebnis angezeigt.



Stellen Sie doch bitte mal Ihren Programmcode zur Verfügung, gerne auch als Privatnachricht.
Alternativ können Sie auch den nachfolgenden Code ausprobieren.

Deklaration:
PROGRAM PLC_PRG
VAR
    dummy: BOOL;
    dtGetTime: DT;
    dtSetTime: DT;
    xStartSetTime: BOOL;
END_VAR


Programm:
dtGetTime:=SysRtcGetTime(dummy);

IF xStartSetTime THEN
SysRtcSetTime(dtSetTime);
 xStartSetTime:=FALSE;
END_IF


----------



## AW123 (8 April 2022)

Ok ich habe den Fehler gefunden. Ich hatte die Funktion dauerhaft aufgerufen "SetTime".
Sonst hatte ich es eig. Identisch.
Dies werde ich so das nächste mal ausprobieren wenn ich wieder eine Steuerung zur Verfügung habe.

Vielen Dank.


----------

