# Rechnen mit Uhrzeiten



## Doofundstinkt (25 Oktober 2009)

Hallo,

ich möchte mit TwinCat in meiner Haussteuerung die Raffstores abhängig von  Uhrzeiten rauf- und runterfahren.

Hierzu möchte ich in der Visualisierung die Uhrzeit verstellen können.
Mir reicht eine Änderung in 15 Minuten - Schritten.

Jetzt quäle ich mich mit der CTUD - Funktion, um damit die Vorgabe- Uhrzeit in 15- Minuten- Schritten zu erhöhen. Hier komme ich nicht mit der Konvertierung des Datentypes von Time to Word klar.

Wie kann ich das Problem lösen?

Gruß

Ingo


----------



## gravieren (25 Oktober 2009)

Hi


www.oscat.de



Gruss


----------



## witkatz (26 Oktober 2009)

Doofundstinkt schrieb:


> Hier komme ich nicht mit der Konvertierung des Datentypes von Time to Word klar.
> 
> Wie kann ich das Problem lösen?


Hallo Ingo,

der Datentyp TIME hat die Auflösung von 1ms und wird intern wie DWORD behandelt, also ein 32Bit-Datentyp. Die Umrechnung in 1/4 Stunden Takte könnte so aussehen:


```
VAR
    tTime: TIME;
    nQuarter: WORD;
END_VAR
nQuarter:= DWORD_TO_WORD(TIME_TO_DWORD(tTime) / 1000 / 60 / 15);
```
Gruß,
witkatz


----------



## Doofundstinkt (27 Oktober 2009)

Hallo Witkatz,

danke für die schnelle Antwort.

Bisher habe ich mir relativ einfach geholfen:

IF bSollwertUp = TRUE 
    THEN Uhrzeit := Uhrzeit + t#1m;
END_IF;

Allerdings ist es auf der Visualisierung relativ schwer zu bedienen, da man den genauen Wert schlecht trifft. Da werde ich mir wohl noch einen step reinprogrammieren müssen. 

Aktuell habe ich noch das Problem, dass ich mir den Sonnenuntergang berechnen lasse, und die Funktion spuckt mir einen ziemlich genauen Sonnenuntergang aus: TOD#16:59:16.273

Wie kann ich die Zeit umformatieren? Mir reicht es wenn ich nur Stunden und Minuten bekomme.....

Ich möchte meine Raffstores über einen einfachen Vergleich zufahren lassen....

    IF Uhrzeit = Sonnenaufgang
    THEN Zentral_Jalousie_Auf:=TRUE;
    END_IF;

Gruß

Ingo​


----------



## Larry Laffer (27 Oktober 2009)

Hallo,
wie wäre es denn so :
	
	



```
IF Uhrzeit [COLOR=Red][B]>=[/B][/COLOR] Sonnenaufgang
    THEN Zentral_Jalousie_Auf:=TRUE;
    END_IF;
```
oder vielleicht :
	
	



```
Zentral_Jalousie_Auf:= (Uhrzeit [COLOR=Red][B]>=[/B][/COLOR] Sonnenaufgang) and not (Uhrzeit [COLOR=Red][B]>=[/B][/COLOR] Sonnenuntergang) ;
```
Gruß
LL


----------

