# Codesys : INT_TO_TIME



## Kieler (23 Dezember 2008)

Kann mir mal jemand kurz auf die Sprünge helfen. Ich möchte unter Codesys eine Zeitverzögerung mit Hilfe der Timer Funktion TON der Standard.LIB realisieren. Die Zeitverzögerung in Sekunden wird vom PLS als Integerwert vorgegeben. 
Jetzt die Frage : Wie wandel ich meinen Integerwert (immer Sek.) in das Format Time ?
Hat jemand eine Idee?

Schon jetzt vielen Dank.


----------



## zotos (23 Dezember 2008)

Wert := DINT_TO_TIME(1000*INT_TO_DINT(SekundenVorgabe));


----------



## Kieler (23 Dezember 2008)

Vielen Dank Zotos,

das sieht ja ganz einfach aus, wenn ich den jetzt wüsste, wo ich die Funktion DINT_TO_TIME hernähme. Was bewikrt eigentlich die 1000? Hat das was mit der verwendeten Zeitbasis zu tun?


----------



## zotos (23 Dezember 2008)

DINT_TO_TIME ist doch fester Bestandteil von CoDeSys. 

1s sind 1000ms das TIME Format arbeitet halt mit Millisekunden.


----------



## Kieler (23 Dezember 2008)

Vielen Dank Zotos,

Du hast mich kurz vor den Feiertagen noch in die richtige Richtung geschoben. Habe gleich etwas rumgespielt.
Es geht auch :
WERT := INT_TO_TIME(VG*1000);
Erstaunlicher Weise geht es auch dann noch, wenn das Ergebnis schon lange nicht mehr in ein Integer passt.

Nochmals vielen Dank.


----------



## zotos (23 Dezember 2008)

Kieler schrieb:


> ...
> Es geht auch :
> WERT := INT_TO_TIME(VG*1000);
> Erstaunlicher Weise geht es auch dann noch, wenn das Ergebnis schon lange nicht mehr in ein Integer passt.
> ...



Das überrascht mich nicht wirklich. Der Integer wert VG wird ja mit einer Konstante 1000 Multipliziert und das Zwischenergebnis wird in einem 32Bit Format behandelt. Also macht der Compiler eine Implizite Typumwandlungen. Ich finde Explizite Typumwandlungen aber verständlicher auch wenn diese den Code aufblähen.


----------



## Kieler (23 Dezember 2008)

Ich werde jetzt meine "Feiertage" nutzen um ein Codesys Programm zu schreiben.  Über 10 Jahre Siemens prägen doch ganz schön, obwohl man immer sagt die Sprache spielt eine untergeordnete Rolle. Hatte mich etwas in Richtung BIBLIOTHEK verrannt, weil die Zeiten ja auch nur über diesen Weg gehen. Habe ich das richtig verstanden, das die eingebundenen Bibliotheken immer vollständig mit in die Steuerung geladen werden? Haut man den Speicher der Steuerung so nicht unnötig voll?


----------



## zotos (23 Dezember 2008)

Der Compiler zieht sich aus den Bibliotheken raus was er braucht und nicht mehr.

Man sieht bei den Bibliotheken auch was benötigt wird und was nicht die benötigten Elemente sind schwarz die nicht verwendeten sind grau dargestellt ("Ausnahme" ist die Standard.lib die ist komplett drin).

Das angesprochene INT_TO_TIME ist z.B. nicht in einer Bibliothek sondern direkt ein "Sprachelement" von allen CoDeSys Sprachen. Das Typecasting hat in der IEC61131-3 eine elementare Bedeutung und von daher kannst Du fast jeden Type in einen anderen Type mit "Type_TO_Type" wandeln.


----------



## Kieler (23 Dezember 2008)

zotos schrieb:


> Der Compiler zieht sich aus den Bibliotheken raus was er braucht und nicht mehr.



...na dann ist ja gut


----------

