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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Zeitmessung: GetSystemTime Berechnung

  1. #11
    Registriert seit
    19.01.2015
    Ort
    Ruhrgebiet
    Beiträge
    6
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich habe im Forum mal gelesen und benutze auch den Block getsystemtime auf meinem cx9020.
    Ich möchte eine Zeitmessung für das Ansprechverhalten zweier Sensoren messen.
    jedoch habe ich in gewissen abständen ständig einen Rundungsfehler den ich nicht raus bekomme. -.-
    Da ist irgendwie der Wurm drin und ich bekomme ihn nicht heraus.

    Code:
        IF GetSysTimeIN2.timeHiDW > GetSysTimeIN1.timeHiDW THEN
            GetSysTimeINcom.timeLoDW := GetSysTimeIN2.timeLoDW - GetSysTimeIN1.timeLoDW;
            GetSysTimeINcom.timeHiDW := GetSysTimeIN2.timeHiDW - GetSysTimeIN1.timeHiDW;
            fTimeIN := (GetSysTimeINcom.timeHiDW*429496.7295) - (GetSysTimeINcom.timeLoDW/10000);        (*    time the sample needs to reach both sensors    *)
            fSpeedIN := SamplingVolumeIN.fGapSensors / fTimeIN;                                            (*    first speed of the sample    *)
    
    
        ELSIF GetSysTimeIN2.timeHiDW = GetSysTimeIN1.timeHiDW THEN
            GetSysTimeINcom.timeLoDW := GetSysTimeIN2.timeLoDW - GetSysTimeIN1.timeLoDW;
              fTimeIN := GetSysTimeINcom.timeLoDW/10000;                                                (*    time the sample needs to reach both sensors    *)
            fSpeedIN := SamplingVolumeIN.fGapSensors / fTimeIN;                                            (*    first speed of the sample    *)
    
        ELSE
                (*    ERROR    *)
            fTimeIN := 0;
            fSpeedIN := SamplingVolumeIN.fGapSensors / fTimeIN;
        END_IF;

    Bei diesem Code habe ich für fTimeIN werte die um 1000ms liegen und teilweise kommt dann ein Wert mit 429398ms.
    Das Verwunderliche ist das ich diese Messung auch noch an zwei anderen stellen benutze und an einer Stelle tritt der selbe Fehler auf, bei der dritten bekomme ich teilweise werte die mit xxx.7295 enden und in meinem messbereich liegen. Sprich die Rundung von lowDW auf highDW funktioniert.

    kann mir jemand sagen ob dieser code richtig ist oder nicht? Dann muss ich den Fehler im System suchen.
    Walter White:"You clearly don't know who you're talking to, so let me clue you in. I am not in danger, Skyler. I am the danger. A guy opens his door and gets shot, and you think that of me? No! I am the one who knocks!"

  2. #12
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Ich habe mir den Code nicht detailliert angeschaut, aber angesichts der Zykluszeiten würde eine Auflösung der Systemzeit von 1ms wohl ausreichen. Dazu gab es vor Kurzem einen interessanten Beitrag hier im Forum: TIME ist nicht nur ein Datentyp, sondern auch eine Funktion. TIME() liefert die Systemzeit im Format TIME, also 0..2^32-1 ms.

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.173
    Danke
    922
    Erhielt 3.288 Danke für 2.657 Beiträge

    Standard

    Deine 64-Bit-Subtraktion ist nicht korrekt: bei der Subtraktion der LoDW kann ein Übertrag entstehen, der bei der Subtraktion der HiDW verrechnet werden muß. Schau mal genau den Beitrag vor Deinem Beitrag.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    assindia (16.02.2015)

  5. #14
    Registriert seit
    19.01.2015
    Ort
    Ruhrgebiet
    Beiträge
    6
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bedankt!!

    Einfach mal richtig lesen
    Walter White:"You clearly don't know who you're talking to, so let me clue you in. I am not in danger, Skyler. I am the danger. A guy opens his door and gets shot, and you think that of me? No! I am the one who knocks!"

Ähnliche Themen

  1. Zeitmessung mit S7-224
    Von CSRP im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 29.03.2009, 10:53
  2. Zeitmessung mit S7-200 CPU 212
    Von HTL im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 21.02.2009, 13:41
  3. Antworten: 1
    Letzter Beitrag: 23.09.2005, 13:56
  4. S5 Zeitmessung
    Von Buh im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.08.2005, 07:16
  5. Zeitmessung mit S7-300
    Von L.T. im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 25.06.2005, 16:38

Lesezeichen

Berechtigungen

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