Codesys : INT_TO_TIME

Kieler

Level-2
Beiträge
763
Reaktionspunkte
86
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
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.
 
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?
 
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.
 
Zurück
Oben