# SCL Division mit Rest



## vollmi (5 Juni 2009)

Hi zusammen. Ich versuch grad aus einem TOD eine realzahl im Format HH.MM zu erstellen.


```
(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é


----------



## Ralle (5 Juni 2009)

MOD statt / bringt den Rest.


```
Test := 10 mod 3;
```

Oder du multiplizierst das Ergebnis wieder mit dem Divisor und ziehtst das vom ursprünglichen Ausgangswert ab.


----------



## Human (5 Juni 2009)

Ich würde mal sagen, dass das so gehen sollte:


```
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;
```


----------



## vollmi (5 Juni 2009)

Danke euch MOD genau das hab ich gesucht.

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


```
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é


----------



## Larry Laffer (5 Juni 2009)

... das hat den Nachteil, dass der FC8 zwei Mal (ünnötigerweise) aufgerufen wird und deinen Zyklus damit belastet ...


----------



## vollmi (5 Juni 2009)

Larry Laffer schrieb:


> ... 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é


----------

