Step 7 Millisekunden ind Stunden/Minuten umrechnen

Zuviel Werbung?
-> Hier kostenlos registrieren
Der Tip von DN/DP wär glaube ich der richtige, aber da steig ich programmtechnisch aus

aber ich tippsle ja hier rum um was dazuzulernen
Wie kann ein vorhandener Sekundenwert in die benötigten Tage, Stunden, Minuten und Sekunden berechnet werden?
[...]
Oder Du änderst den Baustein so, daß er gleich mit TIME (Millisekunden) am Eingang klarkommt.
Das sind gerade mal 2 Programmzeilen gleich am Bausteinanfang, die Du zufügen müsstest, und Dein Zerlegungsbaustein wäre "fertig".
Noch die Deklaration des IN-Parameters value von DINT zu TIME ändern und Du könntest den Baustein für die Zerlegung benutzen.
Code:
      L     #value      //alt: Sekunden (DINT) / neu: Millisekunden (TIME)
[COLOR="#0000FF"]      L     1000        // <-- zufügen
      /D                // <-- zufügen[/COLOR]
      T     #sDiValue   //Sekunden (DINT)

Wenn Du Dir den Baustein genauer ansiehst, dann wird Dir aber vielleicht klar, warum wahre Profis die simple Umrechnung lieber gleich selber programmieren, statt sich solche umständlichen Fremdbausteine ins Projekt zu holen.
Falls Du von dem Baustein auch die formatierte Stringausgabe nutzen willst, dann müsstest Du erstmal ca. 9 Fehler beseitigen :ROFLMAO:

Zumindest kannst Du ja den Bausteinrumpf übernehmen. Wenn Du eines Tages mehr Ahnung vom Programmieren hast, dann schmeisst Du den ganzen Müll-Code da raus und packst dafür den schlanken und effizienten Code von Ralle rein.

Harald
 
Hallo,
ich habe da mal was vorgekramt, das hatte ich mal programmiert wo ich mit SCL angefangen hatte. Vielleicht hilft dir das weiter...

Code:
// **************************************************************************************************************
// **************************************************************************************************************
// *****                                                                                                    *****
// *****    Zeit_ms_to_Uhrzeit                                                                              *****
// *****    Umwandlung von Millisekunden in Urhzeit                                                         *****
// *****                                                                                                    *****
// **************************************************************************************************************
// **************************************************************************************************************
 
FUNCTION Zeit_ms_to_Uhrzeit: VOID
 TITLE = 'Zeit_ms_to_Uhrzeit'
    // - Dirk Gollasch
 AUTHOR: Gollasch
 Name: 'DG'
 VERSION: '1.0'

VAR_INPUT
    ms:                     DINT;                                               // zu wandelne Zeitwert in Millisekunden
END_VAR

VAR_OUTPUT
    Tage:                   INT;                                                // Tage
    Stunden:                INT;                                                // Stunden
    Minuten:                INT;                                                // Minuten
    Sekunden:               INT;                                                // Sekunden
    mSekunden:              INT;                                                // Millisekunden
END_VAR

VAR_TEMP
    tTage:                  DINT;
    tStunden:               DINT;
    tMinuten:               DINT;
    tSekunden:              DINT;
    tMSekunden:             DINT;
    Rest:                   DINT;
END_VAR
 
LABEL
END_LABEL
 
 
 
BEGIN
// Tage
    tTage:= ms / 86400000;
    Rest:= ms - (tTage * 86400000);

// Stunden
    tStunden:= Rest / 3600000;
    Rest:= Rest - (tStunden * 3600000);
    Stunden:= DINT_TO_INT(tStunden);

// Minuten
    tMinuten:= Rest / 60000;
    Rest:= Rest - (tMinuten * 60000);
    Minuten:= DINT_TO_INT(tMinuten);

// Sekunden
    tSekunden:= Rest / 1000;
    Rest:= Rest - (tSekunden * 1000);
    Sekunden:= DINT_TO_INT(tSekunden);

// MilliSekunden
    tMSekunden:= Rest;
    mSekunden:= DINT_TO_INT(tMSekunden);
 
 
OK := TRUE;
END_FUNCTION

Dirk
 
Zurück
Oben