SCL Division mit Rest

vollmi

Level-3
Beiträge
5.442
Reaktionspunkte
1.412
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen. Ich versuch grad aus einem TOD eine realzahl im Format HH.MM zu erstellen.

Code:
(TOD_TO_DINT(FC8 (IN := SPS_DT)) / 3600000)

Damit hätte ich ja schon die Stunden. Jetzt würde ich aber gerne eine Division ausführen bei der ich den Rest auch noch bekomme um damit noch die Sekunden zu errechnen.

Hat jemand eine Idee? Die Suche war für SCL etwas ergebnislos.

mfG René
 
MOD statt / bringt den Rest.

Code:
Test := 10 mod 3;

Oder du multiplizierst das Ergebnis wieder mit dem Divisor und ziehtst das vom ursprünglichen Ausgangswert ab.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mal sagen, dass das so gehen sollte:

Code:
std := tod DIV 3600000;
tod := tod MOD 3600000;
min := tod DIV 60000;
tod := tod MOD 60000;
sec := tod DIV 1000;
tod := tod MOD 1000;
millisec := tod;
 
Danke euch MOD genau das hab ich gesucht.

Jetzt hab ich mir die Real anständig zusammensetzen können.

Code:
SPS_TOD := (DINT_TO_REAL((TOD_TO_DINT(FC8 (IN := SPS_DT)) / 3600000))) + ((DINT_TO_REAL(TOD_TO_DINT(FC8 (IN := SPS_DT)) MOD 3600000) / 60000) / 100);

Is a bissel verschachtelt und überklammert, aber ich finde so sind die Zusammenhänge besser ersichtlich als wenn man alles rauskürzt.
Als Resultat krieg ich jetzt eine Real Zahl im Format HH.MM

mfG René
 
Zuletzt bearbeitet:
... das hat den Nachteil, dass der FC8 zwei Mal (ünnötigerweise) aufgerufen wird und deinen Zyklus damit belastet ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... das hat den Nachteil, dass der FC8 zwei Mal (ünnötigerweise) aufgerufen wird und deinen Zyklus damit belastet ...

Grundsätzlich wärs eh sinnvoll den FC8 Zentral aufzurufen und dann das Resultat in nem DB zur Verfügung zu stellen. Werd ich dann auch noch so umbiegen.

mfG René
 
Zurück
Oben