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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Zeitmessung: GetSystemTime Berechnung

  1. #1
    Registriert seit
    09.12.2008
    Beiträge
    55
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    Zuerst einmal ein großes Lob an das Forum.

    Wenn ich den Baustein GetSystemTime verwende, bekomme ich 2 Werte (timeLoDW und timeHiDW) zurückgeliefert. Wie kann ich jetzt diese beiden Werte zu einer Zahl zusammen bringen, damit ich später diese einfacher in Sekunden umrechnen kann?
    Wieso ich das ganze brauche: Ich würde gerne eine "Stoppuhr" machen, d.h. ich hole mir bei einem Startimpuls den Wert mit GetSystemTime. wenn der Impuls erneut kommt, nehme ich mir die Zeit nochmals per GetSystemTime und bilde die Differenz. Diese würde ich dann gerne in Sekunden ausgeben.
    Oder gibt es eventuell eine andere (besser) Möglichkeit dies zu machen?

    Verwende einen CX1000.

    Vielen Dank für eure Hilfe
    mfg
    wolfi
    Zitieren Zitieren Zeitmessung: GetSystemTime Berechnung  

  2. #2
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    503
    Erhielt 217 Danke für 192 Beiträge

    Standard

    Bau dir selber deinen "Timer":

    in Merker oder DB ein INt.
    Sekundentakt erhöhst du deinen INT.

    Dann hast du gleich INT in Sek, . . .
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  3. #3
    Registriert seit
    09.12.2008
    Beiträge
    55
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Winnmann,

    Danke für die Antwort.
    Ich verstehe jedoch nur Bahnhof?

    mfg
    wolfi

  4. #4
    Registriert seit
    26.11.2007
    Ort
    Schweiz
    Beiträge
    97
    Danke
    25
    Erhielt 5 Danke für 3 Beiträge

    Standard

    Hallo

    Dein Ansatz mit dem GETSYSTEMTIME ist richtig.

    Start- und Stopzeiten erfassen, Differenz bilden (bei mir genügt es, wenn ich das timeLoDW auswerte).

    Da der Baustein eine 100ns Auflösung hat, musst du nur noch umrechnen....

    Wenns mir Recht ist: 10'0000'000 / (Stopzeit-Startzeit) sollte dann Sekunden geben....

    Hoffe es hilft...

    Gruss
    Itus
    Geändert von Itus (11.02.2011 um 17:08 Uhr) Grund: vertippser
    Wahr ist nicht was A sagt, sondern was B versteht. Paul Watzlawick

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

    Standard

    Nimm, je nach benötigtem Wertebereich, eine UINT- oder UDINT-Variable, die Du in jedem Programmzyklus um 1 hochzählst. Bei jeder Low-High-Flanke Deines Signals kopierst Du diesen Zähler in eine zweite Variable und setzt die Zählvariable wieder auf 0.

  6. #6
    Registriert seit
    09.12.2008
    Beiträge
    55
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Leute.

    Leider reicht mir die TimeLoDW nicht aus, benötige beide Werte (timeLoDW + timeHiDW). Wie kann ich diese beiden zusammenrechnen??

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

    Standard

    Wenn es denn unbedingt GetSystemTime sein muss:

    Time:=TimeHiDW*2^32+TimeLoDW

    Wobei Time natürlich eine Real-Variable ist. Den nötigen Typumwandlungs-Schnickschnack spare ich mir hier mal.

  8. #8
    Registriert seit
    09.12.2008
    Beiträge
    55
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Bei meinem letzten Projekt hat es funktioniert nur die timeLoDW zu verwenden. Nun benötige ich jedoch beide Werte (timeHiDW und timeLoDW). Wie kann ich diese beiden Werte zusammenfügen.

    Oben wurde es schon kurz erklärt. Kann mir dies jedoch jemand ausführlicher erklären??

    Oder gibt es denn keine andere Möglichkeit eine "Stoppuhr" zu programmieren??

    Vielen Dank für eure Hilfe.

    wolfgang

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

    Standard

    Also nochmal ausführlich:

    Time:=UDINT_TO_LREAL(TimeHiDW)*4294967296.0+UDINT_TO_LREAL(TimeLoDW);

  10. #10
    Registriert seit
    19.10.2009
    Beiträge
    194
    Danke
    8
    Erhielt 50 Danke für 44 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In der TcUtilities.lib gibt es Funktionen zum Rechnen mit 64-bit Werten. Mit der Funktion UInt64Sub64 kann eine Differenz zweier 64-bit Werte berechnet werden. Mit UINT64_TO_LREAL
    kann in LREAL gewandelt werden.

    Code:
    VAR
        ActSystemTime1: T_ULARGE_INTEGER ;
        ActSystemTime2: T_ULARGE_INTEGER ;
        UInt64TimeDif: T_ULARGE_INTEGER ;
        TimeDifSec: LREAL;
        bZeitmess: BOOL;
        fStartflanke: R_TRIG;
        fStopflanke: F_TRIG;
    END_VAR
    fStartflanke(CLK:= bZeitmess);
    IF fStartflanke.Q THEN
        fbReadSystemTime(
            timeLoDW=> ActSystemTime1.dwLowPart,
            timeHiDW=> ActSystemTime1.dwHighPart);
    END_IF
    fStopflanke(CLK:= bZeitmess);
    IF fStopflanke.Q THEN
        fbReadSystemTime(
            timeLoDW=> ActSystemTime2.dwLowPart,
            timeHiDW=> ActSystemTime2.dwHighPart);
        UInt64TimeDif:= UInt64Sub64(ActSystemTime2, ActSystemTime1);
        TimeDifSec:= UINT64_TO_LREAL(UInt64TimeDif) / LREAL#10000000;
    END_IF
    Gruß,
    witkatz
    Geändert von witkatz (09.08.2011 um 10:17 Uhr)

  11. Folgende 2 Benutzer sagen Danke zu witkatz für den nützlichen Beitrag:

    Minehunter (29.02.2016),wolfi999 (10.08.2011)

Ä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
  •