TwinCat TIME ohne ms

Klohie

Level-1
Beiträge
49
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ich lasse über einen TON-Baustein die Zeit mit laufen. Dieser gibt diese an in TIME aus. Ich möchte diese Ausgabe aber gerne ohne Millisekunden, geht das? In einen String umwandeln und bestimmte Positionen löschen geht ja auch nicht, da ja 1 oder 11 oder 111.
 
Moin Klohie,

TIME beinhaltet per Definition Millisekunden. Wie stellst Du Dir eine Ausgabe ohne Millisekunden vor? Bzw. wo willst Du sie ausgeben?

VG

MFreiberger
 
Hey TIME ist ein UDINT.
Einfach TIME durch 1000 Teilen und schon hast du den Wert in Sekunden.

Für einen String musst du dir leider eine Funktion bauen die alles so wie du möchtest zusammen setzt.

Code:
VAR_INPUT
    InTime:                TIME;
END_VAR
VAR
    iTime:                UDINT := 0;
    i_h:                    INT;
    i_min:                INT;
    i_s:                     INT;  
END_VAR

iTime         := (TIME_TO_UDINT(InTime) / 1000);

IF iTIME < 60 THEN
    i_s        :=UDINT_TO_INT (iTime);
END_IF;

IF iTIME >= 60 AND iTIME  < 3600 THEN
    i_min     := UDINT_TO_INT(iTIME  / 60);
    i_s          := UDINT_TO_INT(iTIME  MOD 60);
END_IF;

IF iTIME  >= 3600 THEN
    i_h         := UDINT_TO_INT(iTIME / 3600);
    i_min     := UDINT_TO_INT((iTIME / 60) MOD 60);
    i_s         := UDINT_TO_INT(iTIME  MOD 60);
END_IF;

.......
wie gewünscht mit Concat zusammenbauen
 
Statt ...
Code:
IF iTIME < 60 THEN
    i_s        :=UDINT_TO_INT (iTime);
END_IF;

IF iTIME >= 60 AND iTIME  < 3600 THEN
    i_min     := UDINT_TO_INT(iTIME  / 60);
    i_s     := UDINT_TO_INT(iTIME  MOD 60);
END_IF;

IF iTIME  >= 3600 THEN
    i_h     := UDINT_TO_INT(iTIME / 3600);
    i_min     := UDINT_TO_INT((iTIME / 60) MOD 60);
    i_s     := UDINT_TO_INT(iTIME  MOD 60);
END_IF;
... sollte ...
Code:
i_h     := UDINT_TO_INT(iTIME / 3600);
i_min   := UDINT_TO_INT((iTIME / 60) MOD 60);
i_s     := UDINT_TO_INT(iTIME  MOD 60);
... genügen?
Sonst werden h bzw. min weiterhin <>0 angezeigt, wenn sie zu 0 werden.
 
Zurück
Oben