Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Frage zu Time_of_day rechnung

  1. #1
    Registriert seit
    12.04.2007
    Beiträge
    140
    Danke
    5
    Erhielt 24 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,
    ich habe eine Frage zum "rechnen" mit time_of_day

    Die Berechnung die ich mache stimmt, und das macht mich irgendwie stutzig

    also, es geht um folgendes :

    Ich habe Zeit A z.B.: 11:39:41 ( feste Zeit d.h.: sie ändert sich nicht )
    Und
    Ich habe Zeit B z.B.: 11:40:01 ( variable Zeit da Systemzeit der CPU )

    jetzt möchte ich mir eine Laufzeit errechnen indem ich die Zeiten subtrahiere

    Also so : "Zeit B" - "Zeit A"
    dann wird das ergebnis in eine TOD variable geschrieben und alles ist wunderbar.

    Da ich nicht so viel Ahnung von Step 7 programmierung habe habe ich das ganze "händisch" gemacht, also :
    "Byte Stunde von Zeit B" - "Byte Stunde von Zeit A" = "Laufzeit Stunde"
    dann
    "Byte Minute von Zeit B"- "Byte Minute von Zeit A" = "Laufzeit Minute"
    dann
    "Byte Sekunde von Zeit B" - "Byte Sekunde von Zeit A" = Laufzeit Sekunde
    ...



    Das ganze dann noch umgerechnet da das TOD format in Millisekunden angegeben wird.

    und anschließend addiere ich mir die Laufzeiten also :

    Laufzeit Stunde+Laufzeit Minute + Laufzeit Sekunde = Laufzeit gesamt

    Jetzt tritt der Fall ein das der "dezimalwert" der Sekunde in meinem oberen Beispiel der "alten Zeit" größer als der der "neuen Zeit" ist ( also 1 Sekunde - 41 Sekunden ), und das ergebnis ist ach negativ, warum also tritt in dem Fall kein Fehler auf?

    Bin zufreiden mit dem Programm da es funktioniert, aber ich frage mich warum es funktioniert...

    Wäre nett wenn mir einer helfen könnte.

    Mfg
    Zitieren Zitieren Frage zu Time_of_day rechnung  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    du brauchst das doch gar nicht so kompliziert zu machen ...
    TOD ist vom funktionellen her die Zeit in Millisekunden, die sit 0:00 Uhr des aktuellen Tages vergangen ist. Du kannst deine TOD-Variablen direkt subtrahieren. Lediglich wenn du mit deiner Zeit-Auswertung über 0:00 Uhr kommst, dann müßtest du deine gespeicherte Zeit um 86.400.000 ms verringern (soviele hat ein Tag), damit die Differenz wieder passt ...

  3. #3
    misconduct ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.04.2007
    Beiträge
    140
    Danke
    5
    Erhielt 24 Danke für 22 Beiträge

    Standard

    hi,
    es geht ja nicht darum eine andere art zu finden um die laufzeit zu berechnen, aber trotzdem danke( hab ich sogar schon gemacht), es wundert mich lediglich das in dem beschriebenen fall ein negativer wert nicht zu einer verfälschung des ergebnisses führt.

    mfg

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ... dann habe ich dein Problem wohl nicht (richtig) verstanden.
    Wieso arbeitest du mit den BCD-Werten (wie bei Date_Time) wenn du es gar nicht musst ?
    Zitieren Zitieren ?  

  5. #5
    Registriert seit
    13.01.2005
    Ort
    Allgäu
    Beiträge
    146
    Danke
    4
    Erhielt 23 Danke für 18 Beiträge

    Standard

    Hi,

    mach die Rechnung doch mal selber, dann ist es klar. Wenn die alte Zeit größer ist wie bei der neuen Zeit ist ja weniger als eine Minute vergangen. Somit müssen die Sekunden von dieser (schon gezählten) Minute subtrahiert werden.

    Gruß
    Silke

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von M_o_t Beitrag anzeigen
    mach die Rechnung doch mal selber, dann ist es klar. Wenn die alte Zeit größer ist wie bei der neuen Zeit ist ja weniger als eine Minute vergangen. Somit müssen die Sekunden von dieser (schon gezählten) Minute subtrahiert werden.
    Das würde nur dann zutreffen, wenn inzwischen ein Tageswechsel stattgefunden hätte. Zu dem Punkt hatte ich mich oben aber auch schon geäußert ...


  7. #7
    misconduct ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.04.2007
    Beiträge
    140
    Danke
    5
    Erhielt 24 Danke für 22 Beiträge

    Standard

    Also,
    danke für die rege anteilname erstmal.
    Es sind auch keine wirklichen BCD Werte sondern INT Werte, da sonst die Zeitberechnung nicht funktioniert. Soll heisen ich wandel mittels BTI BCD zu INT und rechne damit.

    Und was mich an dieser Rechnung irgendwie gewundert hat ist das die T_O_D Variable keine Probleme mit einem nagativen Subtraktionsergebnis weiter arbeitet, es geht also darum warum -40000 Millisekunden genau so angenomen werden wie +19000 Millisekunden und nicht die -40000 Millisekunden von der Zeit subtrahiert sondern addiert werden ( was ja in meinem Fall auch richtig ist )

    Und wie bereits erwähnt habe ich auch einen Tageswechsel berücksicht, nur diese -XXXXX Millisekunden machen mich etwas stutzig.

    Mfg

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    ...
    negative Werte stören ihn nicht, da er (wie ich schon geschrieben habe) ein verkappter DINT ist. Ein DINT kann vom Konstrukt her genauso negativ wie positiv sein ...
    Du kannst den Wert dann ja auch mit 86.400.000 korrigieren. Dann ist er wieder positiv und stimmt ...

  9. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    misconduct (15.10.2007)

  10. #9
    misconduct ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.04.2007
    Beiträge
    140
    Danke
    5
    Erhielt 24 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    alles klar,
    danke für die erklärung, stand auf'm schlauch
    ich denk jetz hab ich's verstanden.

    mfg

Ähnliche Themen

  1. time_of_day
    Von Roos im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 20.06.2011, 10:00
  2. Rechnung AWL
    Von toto45 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.12.2010, 18:43
  3. Antworten: 17
    Letzter Beitrag: 14.05.2009, 21:04
  4. Paketangebot Simatic MMC auf Wunsch mit Rechnung
    Von Sps_MMC im Forum Suche - Biete
    Antworten: 0
    Letzter Beitrag: 26.04.2008, 11:46
  5. Kleine Excel Rechnung in .exe umsetzen
    Von RGB im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.04.2007, 10:27

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •