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

Ergebnis 1 bis 8 von 8

Thema: Unterschied Trunc <--> Round

  1. #1
    Registriert seit
    19.04.2007
    Beiträge
    15
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wenn ein wert von 53 an IN im Trunc-Block anliegt, kommt hier an OUT ein Wert von 52 raus. (Diese 53 ist dan ohne nachkommastellen)

    Wenn ich eine Wert von 53.0 hier ranschreiben komt auch 53 raus.

    Statt dieses Trunc block habe ich jetzt ein Round block benutzt, und das funktioniert. Aber was ist hier dann der Unterschied? (und wieso??)

    Emile
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Emilio (07.01.2008 um 11:07 Uhr)
    Zitieren Zitieren Unterschied Trunc <--> Round  

  2. #2
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Bei TRUNC wird die Kommastelle einfach abgeschnitten und bei ROUND wird eben gerundet.

    Wenn man nun ein Real hat kommt es zu Ungenauigkeiten die der Datentyp Real mit sich bringt.

    Wenn man 0,53 * 100 rechnet kann es bei Real zu eine kleinen Abweichung kommen wenn dann da 52,99999 da steht wird TRUNC einfach 52 draus machen und ROUND würde es auf 53 aufrunden.
    If you open your Mind too much, your Brain will fall out.

  3. #3
    Emilio ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.04.2007
    Beiträge
    15
    Danke
    7
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich habe nochmal ein zweites Bild angehängt. Da wird im Status ein 53 an IN gezeigt, und komt ein 52 raus an OUT. Kann diese 53 dann z.B. 52.9999 sein?

  4. #4
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Das kann daran liegen, dass die angezeigten 53 nicht exakt 53 im internen Format sind sondern vielleicht 52.9999999. Bei TRUNC wird jetzt auf 52 gewandelt, RND behandelt das Ganze richtig. Wenn aber vom Prinzip nur die Nachkommastellen abgeschnitten werden sollen und nicht gerundet, dann kann einfach mit
    Code:
    L MD 4711 // Oder was auch immer
    L 0.00001 // Oder wie groß der tolerierbare Fehler auch ist
    +R
    dieses interne Problem beseitigt werden.
    Geändert von Rainer Hönle (07.01.2008 um 11:18 Uhr) Grund: // Alte Rechtschreibfehler korrigiert und neue dazu gemacht
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  5. Folgender Benutzer sagt Danke zu Rainer Hönle für den nützlichen Beitrag:

    Emilio (07.01.2008)

  6. #5
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von Emilio Beitrag anzeigen
    Ich habe nochmal ein zweites Bild angehängt. Da wird im Status ein 53 an IN gezeigt, und komt ein 52 raus an OUT. Kann diese 53 dann z.B. 52.9999 sein?
    Die Anzeige des Staus zeigt doch die 53 ohne Kommastelle an... wenn im MD200 jetzt sowas wie 52.9999 steht macht die Statusanzeige an der Stelle die Du siehst ein 53 daraus.
    Real werte haben eben eine gewisse Ungenauigkeit zu solchen Effekten führt.
    If you open your Mind too much, your Brain will fall out.

  7. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    Emilio (07.01.2008)

  8. #6
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Das es an der Ungenauigkeit vom Datentyp Real liegt, war ja eher geraten.
    Mit einer anderen Steuerung bekomme ich bei gleicher Funktion als Ergebniss 53 raus.

    Interessant ist das wenn man am MUL_R anstelle von:
    0.53 * 100.0

    53.0 * 1.0

    Verwendet und sich dann das Ergebnis Binär anschaut sieht man das die S7 da unterschiedliche Werte liefert.
    Geändert von zotos (07.01.2008 um 13:34 Uhr)
    If you open your Mind too much, your Brain will fall out.

  9. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Was war die andere Steuerung? Und welche Datenlänge hat dort der Typ Real? Auch 4 Byte oder 8 Byte? Oder wird dort, wie bei PCs in der FPU, bei Rechenoperatinen eine größere Genauigkeit verwendet?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #8
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich habe die Ursprüngliche Berechnung: 0.53 * 100.0 mit der CoDeSys Simulation und der RTE getestet da kommt nach TRUNC 53 raus.

    Bei dem gleichen Test mit Step7 (PLCsim) kam 52 raus (wie Emilio es ja berichtet).

    Die Anzeige der Binär Werte in Step7 nach MUL_R zeigt das dort eine Abweichung stattfindet. Auch wenn die Darstellung als REAL Wert in PLCsim oder als Gleitpunktzahl (Super das ein Programm verschiedene Namen dafür hat) in der Variablentabelle dies nicht vermuten lässt.
    If you open your Mind too much, your Brain will fall out.

Ähnliche Themen

  1. Unterschied EW und PEW
    Von Anonymous im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 12.07.2010, 22:42
  2. Unterschied P und POS
    Von Drain im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 16.04.2009, 13:35
  3. Unterschied MP, OP und TP
    Von Jelly im Forum HMI
    Antworten: 2
    Letzter Beitrag: 11.03.2009, 14:03
  4. Unterschied PN TCP/IP
    Von sailor im Forum Feldbusse
    Antworten: 9
    Letzter Beitrag: 30.05.2008, 16:20
  5. Unterschied SCL und ST
    Von nobug im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 07.03.2008, 10:04

Lesezeichen

Berechtigungen

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