14.11.2007 17:01 | |
Beiträge: 81 Bewertung:
|
Hallo, ich muss eine Integer-Variable in eine TIME umwandeln. Das ganz in SCL. Also z.B. INTin REAL würde ja einfach über INT_TO_REAL() gehen, aber mit TIME geht das nicht. Wie kann ich das denn lösen ? Vielen Dank |
14.11.2007 17:37 | |
Beiträge: 433 Bewertung:
|
Hallo Kala, das ist meines Erachtens nicht mit 1 Befehl zu lösen. Es gibt den DINT_TO_TIME. Da es aber keinen INT_TO_DINT gibt musst Du erst ein INT_TO_DWORD und DWORD_TO_DINT machen. Und dann kannst Du dein DINT_TO_TIME ausführen. Ist etwas umständlich, aber andere Konvertierungsfunktionen gibt es da nicht. Tomcat |
15.11.2007 08:13 | |
Beiträge: 81 Bewertung:
|
Na gut, vielen Dank |
15.11.2007 12:26 | |
Beigetreten: 06.03.2006 Letzter Bes: 13.09.2024 Beiträge: 369 Bewertung:
|
Hallo, der Vorschlag von Tomcat war mal - SCL Version 5.3 kennt auch ein DINT_TO_INT. Die Umwandlung funktioniert mit ergebnis := DINT_TO_INT (TIME_TO_INT (zeit)); Da der Typ TIME die Millisekunden in 32 Bit zählt, ist zu beachten, dass die Zeit bei einer Umwandlung nach INT die Größenordnung von 32 Sekunden nicht überschreiten sollte. Ansonsten wäre DINT der geeignetere Datentyp ;-) Viele Grüße Thomas |
15.11.2007 13:33 | |
Beiträge: 433 Bewertung:
|
Stimmt, ein DINT_TO_INT steht in der Hilfe drin, aber kein INT_TO_DINT. Ich habe nicht probiert, ob es funktioniert. Wenn, dann müsste es so heißen: FUNCTION_BLOCK FB1 VAR test_int: INT; test_time: TIME; END_VAR test_time:=DINT_TO_TIME(INT_TO_DINT(test_int)); END_FUNCTION_BLOCK Der Compiler bringt zumindest keine Fehler. Ob am Ende auch wirklich das rauskommt, was rauskommen soll, müsste man halt ausprobieren. Tomcat |
15.11.2007 15:08 | |
Beigetreten: 06.03.2006 Letzter Bes: 13.09.2024 Beiträge: 369 Bewertung:
|
Sorry, hab die Richtung verwechselt ... Danke Tomcat, für die Korrektur |
Folgen Sie uns auf