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

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 44

Thema: Rundungsfehler

  1. #11
    borromeus ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nun, das sind Durchflüsse im Bereich 1500 - 3000 m³/h.
    Die Summe wird daher einige 10^6 betragen.
    Da zähle ich einen 10^3 dazu- das macht mir also weniger Sorgen. Das muss ja nicht auf die Kommastelle genau werden.

    Eine Lösung mit DINT und wie oben beschrieben neuesten Wert addieren, ältesten Wert subtrahieren führt m.E. zum gleichen (befürchteten) Driftverhalten.

    @Ralle: Danke, aber wenn ich es um Mitternacht mache kann ich es ja alle 10s auch machen.

    Vielleicht hat wer eine Idee wie man so viele Werte zeitoptimiert addieren kann. Mir fällt da fast nichts ein.

  2. #12
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Wenn du Zahlenwerte zwischen 0 und 3000 hast macht das bei 2160 Werten maximal 6480000, also für DINT kein Problem. Du kannst sogar noch zwei Kommastellen mitnehemn, also Werte zwischen 0 und 300000. Dann landest du im schlechtesten Fall bei 648000000 und bist immer noch im Zahlenbereich des DINT. Dann funktioniert auch noch die Variange mit dazurechnen und abziehen.
    mfG Aventinus

  3. #13
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.788
    Danke
    398
    Erhielt 2.414 Danke für 2.010 Beiträge

    Standard

    Also bei den Werten sehe ich das genau wie Aventinus.
    Die Rechne-Methode könnte dann wieder deine eigene sein (also einmal alles addieren und ab dann remove_oldest und add_newest).
    Das sollte im absolut vertretbaren Bereich bleiben ...

    Gruß
    Larry

  4. #14
    borromeus ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Danke meine Herren,

    Wenn ich alle 10s so eine Rechnung mache, wo mir die 3te Kommastelle abhanden kommt, habe ich doch nach 3.153.600 Rechnungen in einem Jahr einen Fehler von >3000. In 10 Jahren ist die Abweichung >30.000.
    Bezogen auf die Summe wäre das ~1% Abweichung. Ich denke damit kann man gut leben, wenn es wirklich nur so wenig ist.

    Ich werde mal schauen wie lange es dauert 2160 Werte in einer Schleife zu addieren oder es eben doch zu staffeln auf zB 10 Zyklen.

  5. #15
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    .. Ich werde mal schauen wie lange es dauert 2160 Werte in einer Schleife zu addieren oder es eben doch zu staffeln auf zB 10 Zyklen.
    Willst du wirklich deine 2160 Werte jedes mal komplett neu summieren? Was hindert dich daran, die Summe mit jedem neuen Wert einfach nur zu aktualisieren?
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  6. #16
    Registriert seit
    19.05.2008
    Beiträge
    651
    Danke
    118
    Erhielt 136 Danke für 105 Beiträge

    Idee

    Hallo Borromeus,

    wie schnell muss sich dein Wert „aktualisieren“?
    Ist der nur für eine Anzeige?

    Eventuell kannst du die Mittelwertbildung kaskadieren.
    Du bildest den Mittelwert aus 10 Messungen. Dieses Ergebnis nimmst du, für einen zweiten Mittelwert mit den 216 Werten.

    Ganz raffiniert wird es, wenn du beim 2. Mittelwert nicht mit 216, sondern nur mit 215 Werten + den letzten 10 Werten aus der 1. Kaskade rechnest…

    Gruß
    Chräshe

  7. #17
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.639
    Danke
    377
    Erhielt 803 Danke für 644 Beiträge

    Standard

    Der Aufgabe:
    Max 3000 m³/h.
    2160 Messwerte.
    Genaugkeit soll besser als 1% sein.

    Mein Lösungsvorschlag:
    Durchfluss als DINT in FIFO Buffer abspeichern mit Kommaverschiebung von 2 Stellen. (Max L#300000 entspricht
    3000.00 m³/h).
    Alle 2160 DINT Werte summieren (Max L#
    648000000). Der Maxwert von DINT (L#2147483647) wird nicht überschritten.
    Den summierte Wert mit L#2160 dividieren.
    Dann in REAL umwandeln und durch 0.01 multiplizieren.
    Der Genauigkeit sollte dann besser als 0.01% sein.

    Da addition viel weniger CPU Zeit nimmt als multiplikation oder division, kann viellieicht den gesammte FIFO Buffer in 1 Scan summiert werden.
    2160-mal +D dauert 1.7 ms auf ein 315'er, 0.4 ms auf ein 317'er.
    Jesper M. Pedersen

  8. #18
    borromeus ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.255
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von Onkel Dagobert Beitrag anzeigen
    Willst du wirklich deine 2160 Werte jedes mal komplett neu summieren? Was hindert dich daran, die Summe mit jedem neuen Wert einfach nur zu aktualisieren?
    Weil ich Angst habe, dass der Summenwert im Laufe der Jahre davondriftet- durch Rundungsfehler.
    Ich muss das ja eh nur alle 10s machen.... ich habe mal nachgeschaut, eine 416er macht einen Befehl (L,T, +R, etc) in 30-60ns... wenn ich sage in der Schleife sind max 20 Befehle und das ganze 2160 mal sind das schlappe 2ms.
    Da sich im PCS7 unter 0,5s aber eh nichts tut sollte das klappen.

    Ich bin aber an einer gesicherten Theorie, dass der Wert nicht abdriftet weiter sehr interessiert.
    Ich werde das auch ausprobieren mit den DINT, ist ja in 5min programmiert, und dann lasse ich das im Schnelldurchlauf (~10ms) mal einen Tag laufen.

  9. #19
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Weil ich Angst habe, dass der Summenwert im Laufe der Jahre davondriftet- durch Rundungsfehler.
    Ich bin aber an einer gesicherten Theorie, dass der Wert nicht abdriftet weiter sehr interessiert.
    Ich werde das auch ausprobieren mit den DINT, ist ja in 5min programmiert, und dann lasse ich das im Schnelldurchlauf (~10ms) mal einen Tag laufen.
    Du wirst keine Rundunsfehler beim Berechnen haben wenn du mit DINT rechnest. Den einzigen Fehler den du machst ist bei der Wandlung von REAL auf DINT, der fließt in dein Ergebnis ein wenn du den Wert zu deiner Summe addierst und hebt sich wieder auf wenn du ihn nach den 6h wieder abziehst.
    mfG Aventinus

  10. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    borromeus (03.12.2015)

  11. #20
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Aventinus Beitrag anzeigen
    .. Den einzigen Fehler den du machst ist bei der Wandlung von REAL auf DINT ..
    Wobei man auch mal darüber nachdenken sollte, wie genau der Realwert eigentlich ist. Macht es überhaupt Sinn, bei einer Größenordnung von 3000m³/h Nachkommastellen zu berücksichtigen?

    Eine ganz andere Möglichkeit wäre es, den aktuellen Mittelwert anstatt des ältesten Wertes von der Summe zu subtrahieren. Dann muss man die einzelnen Werte garnicht speichern und wegdriften kann auch nichts. Allerdings ist das dann auch kein richtiger Mittelwert.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

Ähnliche Themen

  1. Rundungsfehler
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 14.10.2012, 17:17
  2. Rundungsfehler in SCL
    Von Bensen83 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 12.01.2011, 16:25
  3. Rundungsfehler bei Realzahlen
    Von GFI im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.01.2008, 16:56

Lesezeichen

Berechtigungen

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