DT Differenz berechnen

tomrey

Well-known member
Beiträge
346
Punkte Reaktionen
30
Zuviel Werbung?
->Hier kostenlos registrieren
Hi all,
brauche Hilfestellung bei folgendem Problem:
Mit Scheduler habe ich einen Wecker gebaut und möchte nun die Zeit nach dem Wecksignal bekommen um bestimmte Funktionen in Abstand zum Wecksignal zu realisieren. (Für die Zeit vor dem Wecksignal ist ja eine Funktion im Scheduler bereits vorhanden).

Ich habe folgendes versucht:

1. SysRtcGetTime schreibe ich laufend in dtSystemzeit.
Beim Wechsignal Move ich SysRtcGetTime in dtWeckzeit.
soweit ok.
Dann ein SUB: dtSystemzeit - dtWeckzeit => dtDiff
Das fuktioniert nicht (anscheinend kommen Sekunden bei Stunden an und verhauen das ganze dt)
Beim SUB kann ich aber nur einen DT ausgeben obwohl ich ja eigentlich nur TIME brauche.

2. Versuch mit Konvertierung von dtSystemzeit und dtWeckzeit mit dt_to_int und SUB rechnet richtig
aber bei MUL*1000 (ms in sek) und int_to_time kommen tausende von Stunden.

Der FbBetrDauer ist mir zu kompliziert, da müsste ich die einzelnen Ausgangswerte nochmal zu TIME zusammensetzen.

Wer hat den entscheidenden Tip?
Gruß
 

MarkusK

Member
Beiträge
22
Punkte Reaktionen
5
erst umrechnen zu TOD dann zum DWord, alles berechnen und wieder zurück

tod_diff := DWORD_TO_TOD (TOD_TO_DWORD (DT_TO_TOD (dtSystemzeit)-DT_TO_TOD(dtWeckzeit ));

1h = 3600000

zB:
eine Zeitabweichung (Offset) von UDC zum Lokalen Ort angegben in Stunden
local_time := DWORD_TO_TOD ( ( TOD_TO_DWORD (DT_TO_TOD (utc))+3600000*TIME_ZONE_OFFSET));


Gruß Markus
 
OP
T

tomrey

Well-known member
Beiträge
346
Punkte Reaktionen
30
Zuviel Werbung?
->Hier kostenlos registrieren
Danke, habs gestern selbst rausgebracht, DT geht auch direkt nach DWORD und DWORD nach dem Rechnen in TIME.
Hab am INT rumgezahnt bis ich das mit dem Überlauf kapiert habe...
Gruß
 
Oben