Step 7 Aktuelle CPU Uhrzeit vergleichen in SCL

stinker06

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich will die aktuelle CPU Uhrzeit mit einer vorgegeben Uhrzeit vergleichen. Dies funktioniert aber nur manchmal.
Das Auslesen der Uhrzeit erfolgt über die SFC1. Dies funktioniert einwandfrei. In der Variable Uhrzeit vom Typ TIME_OF_DAY steht also die Uhrzeit der CPU mit Millisekunden.
Die statische boolsche Variable Var2 soll um 23:59:00 gesetzt werden. Dies funktioniert aber nur manchmal. Ich weiss nicht warum es mal funktioniert und meistens aber nicht.
Hier ein Ausschnitt des Quellcodes.

READ_CLK_RETVAL := SFC1 (CDT := System_DT ) ; // Aufruf Systemfunktion zum Auslesen der Systemzeit und Datum
Datum := DT_DATE(IN := System_DT); // FC26 extrahiert aus Datum und Zeit das Datum
Uhrzeit := DT_TOD(IN := System_DT); // FC28 extrahiert aus Datum und Zeit die Zeit

///////////////////////////////////////////////////////////////////////////////////////////////
// Uhrzeit kurz vor Mitternacht //
///////////////////////////////////////////////////////////////////////////////////////////////
Var2 := Uhrzeit = TOD#23:59:00;
 
Du musst vermutlich vorher die ms ausblenden.
TOD hat ja das Format
TOD#23:59:59.999

Wenn Du auf == abfragst wird das meistens nicht klappen, das es ja 23:59:00.123 sein kann, zum Zeitpunkt des SFC1 Aufrufes.


 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, soweit hab ich auch schon gedacht. Deswegen hab ich auch dabei geschrieben das die Uhrzeit mit Millisekunden gespeichert wird. Ich hab nur noch nix gefunden wie ich die Millisekunden ausblende.
Muss ich wohl noch bischen googeln.
 
... oder nach der Wandlung (wenn es ein TOD ist) herausrechnen :
Code:
L #mein_TOD
L 1000
/D
L 1000
* D
T #mein_TOD

sorry - war ja SCL gefragt :
Code:
mein_TOD := DINT_to_TOD ((TOD_to_DINT (mein_TOD) / 1000) * 1000) ;
 
Zuletzt bearbeitet:
Zurück
Oben