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

Ergebnis 1 bis 4 von 4

Thema: SFC64, Überlauf und ein wenig 32Bit-Mathematik

  1. #1
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.337
    Danke
    448
    Erhielt 688 Danke für 513 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute!

    Ich war grad dabei einen Baustein zu schreiben der den SFC64 (TIME_TCK) einsetzt. Natürlich habe ich mir dabei über den Überlauf Gedanken gemacht und
    ein wenig mit Zahlenwerten herum gespielt. Dabei ist mir etwas aufgefallen.

    Nimmt man zum Beispiel den höchst möglichen Positiven Zahlenwert DW#16#7FFFFFFF oder +2147483647 und zieht davon L#100 ab bzw. addiert L#100 auf so erhällt man die Werte:

    +2147483547 und
    -2147483549

    Man kann die beiden Werte jetzt als Beispiel für einen Wert vor dem Überlauf und für einen nach dem Überlauf hernehmen. Die absolute Differenz zwischen den Werten beträgt 4294967069.
    Schreibt man jetzt in AWL aber:
    L L#2147483547
    L L#-2147483549
    -D
    oder
    L L#-2147483549
    L L#2147483547
    -D

    So lauten die Ergebnisse +200 bzw. -200 weil -D ja zwei 32Bit-Zahlen (unabhängig des Vorzeichens) voneinander subtrahiert.

    Lange Rede, kurzer Sinn. Eigentlich muss man dann nicht immer den Überlauf von SCF64 durch eigenen Code abfangen, sondern nur wenn man sie direkt vergleicht oder absolut
    behandelt.

    Wenn man jetzt aber die Differenz bildet (zum Beispiel als "Elapsed-Time"-Wert) und mit dieser weiterarbeitet, so fällt der Überlauf eigentlich nicht ins Gewicht.
    Wenn man dass so macht brauch man für den Überlauf keinen separaten Code zu schreiben

    Oder vertuh ich mich da...
    SFC64_Ueberlauf_Mathe_2.png
    <EDIT>Hab das angehängte Beispiel so angepasst dass es zum Beitrag passt.</EDIT>
    Geändert von RONIN (23.03.2014 um 17:38 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!
    Zitieren Zitieren SFC64, Überlauf und ein wenig 32Bit-Mathematik  

  2. #2
    Registriert seit
    06.10.2003
    Beiträge
    3.408
    Danke
    449
    Erhielt 503 Danke für 407 Beiträge

    Standard

    Hallo Ronin,

    du mußt berückschtigen dass die SFC64 nach dem Überlauf bei Null beginnt. Im Gegensatz zum Format "TIME" gibt es bei der SFC64 keine negative oder vorzeichenlose Werte.


    Gruß, Onkel
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. Folgende 2 Benutzer sagen Danke zu Onkel Dagobert für den nützlichen Beitrag:

    RONIN (23.03.2014),vollmi (23.03.2014)

  4. #3
    Avatar von RONIN
    RONIN ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.337
    Danke
    448
    Erhielt 688 Danke für 513 Beiträge

    Standard

    , *FACEPALM*,
    Das hat grad richtig weh getan.

    Wie konnte ich dass den vergessen!!! Ich glaub heute schreibe ich wohl keine einzige Zeile mehr, bevor ich auf noch mehr blödsinnige Gedanken komm.
    Ein elementarer Fehler in der Überlegung und schon zerbröselt alles....

    Danke Onkel. Damit hat sich das wohl erledigt!
    Geändert von RONIN (23.03.2014 um 18:48 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #4
    Registriert seit
    06.10.2003
    Beiträge
    3.408
    Danke
    449
    Erhielt 503 Danke für 407 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ohne Opfer kein Sieg .
    Bei CodeSys ist es übrigens so, wie du es versucht hast. Dort läuft die Systemzeit ins Negative bzw. über die vollen 32 Bit (habe ich zumindest mal gehört).
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 02.11.2011, 19:13
  2. Ich bin ein wenig verwirrt...
    Von Oele im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.08.2011, 19:37
  3. Wer kennt sich noch ein wenig mit dem PG750 aus?
    Von Rodewijn im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 29.08.2006, 22:58
  4. Antworten: 1
    Letzter Beitrag: 07.12.2005, 14:31

Lesezeichen

Berechtigungen

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