Millisecond aus Time

denisweber
2010-08-21
2010-08-22
  • denisweber - 2010-08-21

    Hallo
    Gibt es eine Möglichkeit nur die Millisekunden aus einer "Time" Variable zu Exportieren ähnlich wie bei "second of DT"?
    Hardware: Wago 841

     
  • Anonymous - 2010-08-21

    Originally created by: ebt'ler

    Hi,

    versuch mal:

    VAR
       test_time: TIME := t#1s20ms;
       timestring: STRING;
       millisek: INT;
    END_VAR
    ______________________________________________________
    timestring:= TIME_TO_STRING  (test_time);
    IF FIND (timestring , 'ms') > 0 THEN
       timestring := RIGHT(timestring , 5);
       timestring:= LEFT (timestring , 3);
       millisek:= STRING_TO_INT (timestring);
       IF millisek = 0 THEN
          millisek:= STRING_TO_INT ( RIGHT ( timestring , 2));
          IF millisek = 0 THEN
          millisek:= STRING_TO_INT ( RIGHT ( timestring , 1));
          END_IF
       END_IF
    ELSE
       millisek := 0;
    END_IF
    

    Was anderes fällt mir grade nicht ein. Intern wird TIME komplet in Millisekunden umgerechnet, daher der Umweg über String.

     
  • Rolf-Geisler - 2010-08-21

    Hi,
    eine andere Möglichkeit ist die Wandlung TIME ==> DINT (das konvertiert den gesamten TIME-Wert nach Millisekunden), und dann modal durch 1000 dividieren. Es bleiben nur die Millisekunden übrig:

    VAR
      Zeitwert : TIME;
      ZeitwertInMillisek : DINT;
      Millisek : INT;
    END_VAR
    ZeitwertInMillisek := TIME_TO_DINT (Zeitwert);
    Millisek := DINT_TO_INT (ZeitwertInMillisek MOD DINT#1000);
    

    Sieht etwas umständlich aus, da man TIME nicht direkt nach INT konvertieren kann. Sind aber alles IEC-Standardfunktionen und sollten plattformunabhängig zur Verfügung stehen.

    Gruss Rolf

     
  • Anonymous - 2010-08-22

    Originally created by: ebt'ler

    Die Variante von Rolf_Geisler ist für die Anwendung sicher die elegantere Wahl.
    Mein Weg war da eher etwas umständlicher.

     
  • denisweber - 2010-08-22

    Hallo
    Danke für die Antworten,hab beide getestel und denke die von Rolf_Geisler ist wohl die konfortabelere Lösung.Danke noch mal für die Mühe...........

     

Log in to post a comment.