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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: SCL Berechnung wird auf Vielfaches von 20 gerundet?

  1. #1
    Registriert seit
    07.05.2013
    Beiträge
    41
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe eine Frage zu einer Berechnung in SCL.
    Der Quellcode lautet

    di_GearIn := REAL_TO_DINT(r_Grad_pro_Takt * 1000.0 * (1.0 - r_GearFaktor));

    r_Grad_pro_Takt ist fest auf 360.0
    Der r_GearFaktor ist laut Onlineansicht 3.897116e-004, dieser ändert sich (aber in dem Bereich bleibt er, also sehr klein)

    Wenn ich das ausrechne komme ich auf 359859,703824
    Siemens kommt auf 359860

    Mit ist bekannt das ich scheinbar bei einer Real-Berechnung nur 6 Dezimalstellen zur Verfügung habe.
    Aber warum rundet Siemens das Ergebnis zu geschätzen 90% auf ein Vielfaches von 20?
    Denn ich bekommen als Endwert der Zahl zu 90% Werte 00, 20, 40, 60, 80.
    Und nein, einen solchen Wert ausgerechnet wäre ien absoluter Zufall, das kann eigentlich kaum passieren (Logischerweise nur in 5% der Fälle)
    Nur sehr selten ist dieser Wert mal z.B. 16 oder 41, also deutlich genauer.

    Kann mir das jemand erklären?

    Danke!
    Zitieren Zitieren SCL Berechnung wird auf Vielfaches von 20 gerundet?  

  2. #2
    Registriert seit
    27.07.2012
    Ort
    AUT
    Beiträge
    480
    Danke
    84
    Erhielt 160 Danke für 90 Beiträge

    Standard

    Wieso denkst du es wird immer auch ein Vielfaches von 20 auferundet? Wenn du auf 359859,703824 kommst und S7 auf 359860 ist das ja nur auf die nächste Ganzzahl aufgerundet?
    Regards NRNT

  3. #3
    Registriert seit
    07.05.2013
    Beiträge
    41
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Korrekt, war ein unglückliches Beispiel, aber das einzige zu dem ich konkrete Daten per Screenshot hatte.
    Warum ich das denke?
    Ganz einfach, weill ich es beobachten kann im SCL.
    Beispielwerte die ich sehen kann
    359860
    359820
    359880
    359920
    359900
    359940
    359820
    359840
    359860
    359880

    Und dann, ganz selten mal sowas wie 359841

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Ich sags mal mit der Step7-Hilfe:

    REAL_TO_DINT
    Runden des IEEE-REAL-Wertes auf DINT.
    Wenn der Wert kleiner als -2_147_483_648 oder größer als 2_147_483_647 ist, dann wird die OK-Variable gleich FALSE gesetzt.


    DINT ist ja nun mal eine Zahl ohne Komma, also was soll Step7 da machen --> Komma abschneiden und entsprechend runden.

    Ich meine, das liegt eher Wert deines Input und/oder der ausgeführten Umrechnung.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.269
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Deine Tabelle:

    Interessant wäre mal der Input-Wert, der Gera-Faktor und der dazu passende Output-Wert.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    Registriert seit
    27.07.2012
    Ort
    AUT
    Beiträge
    480
    Danke
    84
    Erhielt 160 Danke für 90 Beiträge

    Standard

    Nunja wahrscheinlich ein Genauigkeitsthema. Wiki sagt ohne Vorzeichen bin ich bei einem 32bit REAL auf 7-8 signifikante Stellen (http://de.wikipedia.org/wiki/Datentyp) afaik unsigned. Bei FORTRAN(jaja ich hab keine andere Referenz auf die Schnelle gefunden: http://www2.informatik.uni-halle.de/...he/ftn623.html) schreiben sie bei signed 6 Stellen.
    Regards NRNT

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Wo kommt denn r_GearFaktor (die einzige Variable in der Berechnung) her? Von einem Analogeingang? Welche Auflösung hat der?
    Möglicherweise ist r_GearFaktor ja schon "gequantelt".

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    07.05.2013
    Beiträge
    41
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi, der r_GearFaktor komt aus einer anderen Berechnung von zwei Real-Werten.

    r_GearFaktor:= (r_Ausgleich / REAL_TO_DINT((r_AVGof20_DM) * 10));

    r_Ausgleich ist ein Real-Wert zwischen 0 und 20, ohne Werte hinter dem Komma (wird so belegt)
    r_AVGof20_DM ist ein Real-Wert mit 3 beliebigen Stellen hinter dem Komma, kommt aus dem FB433 MC_MeasuringInput (T-CPU)

    Kann ein Problem hier das casten REAL_TO_DINT der zweiten Real-Variable sein? Denn Sinn macht das für mich nciht, scheint eine Leiche meines Vorgängers zu sein.

    Danke, Daniel

  9. #9
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    677
    Danke
    22
    Erhielt 144 Danke für 136 Beiträge

    Standard

    Die rundungfehler sitz in(1.0 - 3.897116e-004) sie beilage
    Seihe auch die hilfe in Step7 bei das format REAL.
    Hier ein link nach Siemens support : http://support.automation.siemens.co...ard&viewreg=WW

    Real.JPG
    Gruss,

    Joop

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich kann Dein Problem nicht nachvollziehen.
    Irgendwas muß mit Deinem r_GearFaktor nicht stimmen.
    Von r_GearFaktor haben wegen der angesprochenen REAL-Auflösung zwar nur die ersten 2 bis 3 Ziffern 3.89xxxxe-004 Einfluß auf das Ergebnis, doch es können auch "unrunde" Ergebnisse 359861, 359862, 359863 ... 359869 'rauskommen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 106
    Letzter Beitrag: 22.07.2014, 22:12
  2. Berechnung SCL ; WORD oder INT
    Von toto45 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 16.11.2011, 11:41
  3. CASE-Anweisung von SCL auf KOP
    Von adonismensch im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 25.09.2009, 12:41
  4. Konverter von SCL auf AWL
    Von nourdine im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 18.09.2008, 13:48
  5. Antworten: 1
    Letzter Beitrag: 23.09.2005, 13:56

Lesezeichen

Berechtigungen

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