Step 7 Datentyp TIME konvertieren

Der Simulant

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Spezialisten,

die heute Quizfrage lautet wie folgt:

Ich bekomme als Input TIME

VAR_INPUT
IN_time:TIME;
END_VAR

Nun kann man TIME umwandeln in DINT, da müssten dann Millisekunden rauskommen:
milliSecounds := TIME_TO_DINT(IN_TIME);



Mein erster Ansatz schlug mal total fehl:

secounds := milliSecounds / 1000 ;
minutes := secounds / 60;
hours := minutes / 60;
days := hours / 24;

days passt dann noch, aber die Stunden/Min/Sec nicht mehr.

Beispiel:

INPUT TIME: T#24D20H31M23S647MS
days: 24
hours: 596 -> damn!
.... :confused:


Dann kam mir die Oscat in den Sinn, jedoch gibt es die gewünschten Funktionen nicht;
aber andersherum:
Also Minutes->Time, Sek->Time, usw..



Könnt ihr mir sagen, wie ich auf die Sekunden/Minuten/Stunden/Tage komme? (alles bitte DINTS)
Hab heute einen Knoten im Hirn....


Danke schonmal für euere Hilfe!!!!
Gruß euer newbie

PS: Als Anhang hab ich mal die aktuelle Funktion angehängt
 

Anhänge

  • Function.txt
    5,8 KB · Aufrufe: 36
Hallo,
versuch es doch mal so :
Code:
seconds := (milliSeconds / 1000) mod 60 ;
 minutes := (milliSeconds / 60000) mod 60;
 hours := (milliSeconds / 3600000) mod 24 ;
 days := milliSeconds / 86400000 ;
Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
DU fängst mit den tagen an.

Also millisekunden durch die anzahl milisekunden die ein Tag hat.

tage := millisek / 86400000;
stunden := (millisek mod 86400000) // was nicht in tage passt
/ 3600000; // dass ergibt die stunden

etc
 
Zurück
Oben