TIA HHMMSS aus DINT Zahl in TOD wandeln? YYYYMMDD in DATE wandeln?

IndustryChick

Level-1
Beiträge
58
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe hier eine Wetterstation in der die Zeit der GPS Uhr in einem 32 Bit Modbusregister abgelegt ist.

Die Zahl lege ich bei mir in einem Datenbaustein im Format DINT ab. Der Wert wird mir angezeigt als HHMMSS.

Wie bekomme ich daraus jetzt ein Time_of_Day gebastelt?



Den ähnlichen Fall habe ich auch mit dem Datum. Dort ist es auch wieder ein 32 Bit Modbusregister, welches

ich im Datenbaustein im Format DINT ablege. Dort lautet die Syntax YYYYMMDD und das würde ich gerne auf

DATE konvertieren.


Das ganze läuft auf einer 1214C von Siemens.



Vielleicht kann mir ja einer sagen wie ich sowas am besten anstellen kann. Bisher hat nichts zu dem gewünschten

Erfolg geführt was ich versucht habe :D Ich bin allerdings auch kein Profi ;-)
 
Die Stellenwertigkeit ist 10.
Wenn du den DINT MOD 10 rechnest erhältst du die Einer-Stelle.
Dann rechnest du DINT = DINT / 10 und schiebst damit zuzusagen die Einer-Stelle raus.
Dann wieder das Ergebnis von DINT MOD 10 usw.

Dann hast du alle Einzelelemente, die du danach dem Format TOD passend zusammensetzen musst.
 
... und du hast dann beispielsweise was in deiner DINT-Variablen stehen - sagen wir mal für jetzt ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich hätte es auch wie Thomas verstanden.
Mein Tipp wäre auf jeden Fall, dass ich persönlich das nicht in TOD oder DATE umwandle, sondern einen Zwischenschritt in DTL machen würden. Hier kann ich z.B. mit einem MOD 100 direkt die Sekunden umkopieren (mit einem DINT_TO_USINT). Ist der DTL komplett ist es recht einfach DATE und TOD zu bekommen.

Kleiner Tipp abseits davon übrigens: NICHT in direkt in Date_and_Time umwandeln! Da kein Wochentag verfügbar ist hat da Siemens ein Problem! Bin da mal bei was ähnlichem drüber gestolpert... die "Lösung" war dann DTL -> DATE und TOD -> Date_and_Time! Da funktioniert wieder alles, weil da der Umwandlungsbaustein den Wochentag wieder reinfriemelt! Aber bei direktem DTL->DT wandeln kopiert er nur den Wert um; und wenn die DT-Wochentagsstelle 0 ist hat er ein Problem... Das aber nur am Rande :)
 
Also wenn es jetzt 12.27 Uhr und 23 Sekunden ist, dann steht in der Variable 122723. Und zählt bei 23 eben im Sekundentakt hoch. So meinte ich das :) Analog dazu das Datum.

Ich hab mich da wohl etwas missverständlich ausgedrückt :D Sorry dafür :D
 
Zurück
Oben