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

Ergebnis 1 bis 4 von 4

Thema: Rechnen mit REAL in SCL ???

  1. #1
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo miteinander,

    ich habe ein Problemchen mit SCL. Wenn der unten angegebene Code ausgeführt wird, d.h. wenn 'FlankePos1' true ist, addiere ich auf die Variable 'temp' 0.1 . 'Store' stellt das Ergebnis dar.
    Komischerweise wird nach mehreren Ausführungen nicht immer genau 0.1 addiert. Z.B. ist nach 5 Ausführungen das Ergebnis ~0,49999.
    Alle relevanten Variablen sind als REAL deklariert. Ich dachte eigentlich 5*0.1 ist 0.5 und nicht 0.49999
    Oder muss ich beim Umgang mit Variablen vom Typ REAL irgend etwas besonderes beachten?

    Testumgebung ist PLCSim.

    Vielen Dank
    mkd

    Code:
    FUNCTION_BLOCK FB5 
    
    (*hier werden alle Variablen deklariert*)  
    
       IF (manual=true) THEN
        
            //inkrementieren
            IF (FlankePos1) THEN        
                temp:=store+0.1; 
                
                (*Ergebnis kleiner 100 ??? *)
                IF (temp <=100.0) THEN
                store:=temp;
                END_IF;
       
            END_IF;
            
            
    END_FUNCTION_BLOCK
    Zitieren Zitieren Rechnen mit REAL in SCL ???  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Die Zahl 0,1 ist als Gleitpunktzahl nicht genau darstellbar, da keine Zweierpotenz.
    Dass der Step7 Editor eine 0,1 genau anzeigt. liegt daran dass er die Anzeige auf eine bestimmte Anzahl von Stellen rundet. Wenn du die Zahl immer wieder aufaddierst, summiert sich der Fehler sodass der Editor diesen irgendwann anzeigt, obwohl er auch schon bei 0,1 vorhanden ist!

    Am Besten du schaust dir den Wikipedia Artikel zum Gleitpunktformat IEEE-754 mal an, und versuchst mal die Binärdarstellung von 0,1 zu bestimmen.

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

    maweri (28.07.2009),mkd (28.07.2009)

  4. #3
    mkd ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.12.2006
    Beiträge
    185
    Danke
    25
    Erhielt 26 Danke für 21 Beiträge

    Standard

    Hallo Thomas,


    vielen Dank für deinen Hinweis. Wenn ich ehrlich bin, habe ich mir da noch nie Gedanken drüber gemacht wie so eine Gleitpunktzahl zusammengesetzt ist und welche Auflösungen sich daraus ergeben.

    O.K. - soweit ich verstanden habe besteht das Siemens Format REAL aus 32 Bit. Bit 0...22 Mantisse und 23...30 als Exponent. Bit 31 bestimmt das Vorzeichen.

    Das Vorzeichen wie 1*10^-1 ???

    Ich habe da wohl ein Brett vorm Kopf
    Denn 1*10^-1 wäre ja 0,1 - die sich ja offensichtlich nicht darstellen lassen.

    Kannst du
    Die Zahl 0,1 ist als Gleitpunktzahl nicht genau darstellbar, da keine Zweierpotenz.
    Nochmal genau erläutern?


    Danke!

  5. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    was Thomas meinte ist hier sehr schön beschrieben. Zwar nicht mit 0,1 sondern mit 18,4 - das Wesentliche kann man m.E. aber schon erkennen.

    Wenn du diese "Wandlungsfehler" bei REAL umgehen willst könntest du z.B. auf INT oder DINT ausweichen. Du mußt dann halt nur festlegen, um welchen Wert dein Komma in dieser Darstellung verschoben ist. Also 187 ind der INT-Variablen entspricht 1,87 in einer REAL-Variablen - alle Werte müßten durch 100 geteilt werden.

    Gruß
    LL

  6. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    mkd (29.07.2009)

Ähnliche Themen

  1. Rechnen mit SCL
    Von hulla66 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 11.05.2016, 15:27
  2. rechnen
    Von waldy im Forum Stammtisch
    Antworten: 12
    Letzter Beitrag: 12.06.2011, 10:17
  3. Problem bei Rechnen mit "REAL" Werten
    Von SPS n00b im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 10.02.2010, 10:21
  4. Rechnen mit LOG in SCL
    Von Waelder im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 23.07.2009, 16:12
  5. Mit SPS rechnen
    Von Moboso im Forum Simatic
    Antworten: 31
    Letzter Beitrag: 09.04.2008, 21:40

Lesezeichen

Berechtigungen

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