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

Ergebnis 1 bis 5 von 5

Thema: CX5010 Real stoppt bei 2^24

  1. #1
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe eine CX5010 hier im Einsatz. In meinem Programm habe ich einen Counter als Real definiert.
    Laut Beckhoff kann dieser diesen Bereich: ~ -3.402823 x 1038 bis ~ 3.402823 x 1038

    Nun hat der Zähler aber bei 16777216 == 2^24 gestoppt!?
    Die 1,6e7 sind aber noch weiter von e38 entfernt.

    Das Programm läuft selber auf der SPS. Twincat ist die Version 2.11 (Build 2244)

    Ist das ein Bug?
    Brauchen tu ich einen Zähler der mindestestens bis 1x10^9 zählen kann.

    Code:
    VAR_GLOBAL PERSISTENT
     rCycleX: REAL; (* lifetime in cycles *)
    END_VAR
    Zitieren Zitieren CX5010 Real stoppt bei 2^24  

  2. #2
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard

    Gleiches Problem und gleiche Antwort wie hier
    http://www.sps-forum.de/beckhoff-cod...is-8192-a.html

    Spätestens wenn man mal darüber nachdenkt, wieso ein 32bit Datentyp Werte bis 3E38 erreichen kann sollte einem klar werden das Fließkomma-Typen nicht ganz so trivial sind wie Integer-Typen.
    Geändert von MasterOhh (26.06.2014 um 11:31 Uhr)

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    REAL ist für große Counter total ungeeignet, weil es nur ca. 7 signifikate Ziffern hergibt --> man kann nicht 123456.0 + 0.001 addieren.
    Benutze ein DINT (oder LINT falls die CPU das kennt), ggf. kannst Du auch mehrere DINT kaskadieren, indem Du beim Zählen den Übertrag von einem DINT in den nächsten verrechnest.

    Du könntest für den Zähler auch einen String benutzen, da kannst Du Zahlen mit hunderten Ziffern verwalten. Das kann so ziemlich jeder Microcontroller ...

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Portisch ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.09.2011
    Beiträge
    145
    Danke
    0
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Also auf die einfache Art wird es sein einen UDINT zu verwenden. LINT kann die CPU nicht.
    Somit könnte der Zähler bis zum Vierfachen des benötigten ansteigen.

    Da wir aber noch keine Hardwareerfahrungen haben - wie könnte man noch gößere Zahlen abbilden?
    Wie würde das mit einem String funktionieren?

  5. #5
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In der TcUtilities.lib gibt es Funktionen für 64Bit Integer (INT64 und UINT64). Du kannst aber für Large_Integer nicht die Standardoperationen nutzen sondern musst die FCs aus der Bibliothek verwenden.

Ähnliche Themen

  1. CX5010 Grafikeinstellung
    Von gloeru im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 05.05.2011, 17:14
  2. SF Rollendschalter stoppt Drehkreuz
    Von mmr im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 11
    Letzter Beitrag: 22.10.2010, 10:00
  3. Seltsames Verhalten einer S7-312 bei Real-Addition
    Von yohfreaker im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 09.10.2009, 23:08
  4. Bitte Verständnishilfe bei REAL
    Von rene im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 10.07.2007, 17:18
  5. DP/DP-Koppler stoppt CPU bei Spannungsausfall
    Von Flo-1- im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.03.2007, 18:35

Lesezeichen

Berechtigungen

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