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

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

Thema: Wer spinnt hier?

  1. #1
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    SCL in TIA13: Ich will einen real-Wert auf ein QW schreiben.
    Bei:
    Code:
    #Output_1 := FLOOR(#r);
    unterstreicht der Editor das gelb und sagt: Das Vorzeichen oder die Genauigkeit des Werts können verloren gehen.
    Das bin ich leid und probiere mal, welche "Spezialversionen" von FLOOR das Zeug kennt:
    Code:
    #Output_1 := FLOOR_WORD(#r);
    Jetzt kriege ich keine Warnungen, sondern 2 richtige Fehler:
    1.Der Datentyp 'Word' ist als Rückgabewert für die Funktion 'FLOOR_WORD' nicht zulässig.
    2.Eine implizite Konvertierung von Datentyp 'Real' nach 'Undef' ist nicht möglich.
    Ich hätte ja Verständnis dafür, wenn es kein FLOOR_WORD gäbe, aber offensichtlich wird der Funktionsname ja so akzeptiert. Wenn es
    die Funktion aber gibt, was zum Teufel gibt sie dann zurück?
    Und wo tritt der zweite Fehler auf? Klick darauf verweist ins Innere der Klammer. Dort wird also der Datentyp Undef erwartet...

    Mal sehen, was das Zeug noch drauf hat...
    Code:
    #Output_1 := FLOOR_BOOL(#r);
    "Der Datentyp 'Bool' ist als Rückgabewert für die Funktion 'FLOOR_BOOL' nicht zulässig."
    Code:
    #Output_1 := FLOOR_BROT(#r);
    Code:
    #Output_1 := FLOOR_BOOL(#r);
    "Der Operand FLOOR_BROT ist nicht definiert."
    Also FLOOR_BOOL() ist wie FLOOR_WORD eine wohlbekannte Funktion, liefert aber kein verwertbares Ergebnis.

    Solch ein Verhalten des Compilers würde ausserhalb der Siemens- oder TIA-Welt m.E. niemand hinnehmen!!
    Zitieren Zitieren Wer spinnt hier?  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Hallo Thomas,
    da ich selber (noch) nicht mit TIA arbeite : welche Aufgabe genau hat der Befehl "FLOOR" ?

    Gruß
    Larry

  3. #3
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    ach Larry - ein bisschen google hat noch keinem geschadet

    Floor/Ceil heisst in den meisten Sprachen/Standardlibs - Auf "Ganzahl" Auf/Abrunden - aber als Fließkomma belassen - floor (2.3) => 2.0

  4. #4
    Registriert seit
    03.07.2006
    Beiträge
    1.725
    Danke
    515
    Erhielt 303 Danke für 223 Beiträge

    Standard

    "CEIL": Rundung zur nächst größeren ganzen Zahl,
    "FLOOR": Rundung zur nächst kleineren ganzen Zahl,
    "ROUND": Rundung zur nächsten ganzen Zahl,
    "TRUNC": Ohne Rundung.

  5. Folgender Benutzer sagt Danke zu UniMog für den nützlichen Beitrag:

    Münchnerjunge (25.11.2014)

  6. #5
    Registriert seit
    16.03.2006
    Ort
    Franken
    Beiträge
    3.797
    Danke
    30
    Erhielt 917 Danke für 798 Beiträge

    Standard

    Zitat Zitat von LowLevelMahn Beitrag anzeigen
    ach Larry - ein bisschen google hat noch keinem geschadet

    Floor/Ceil heisst in den meisten Sprachen/Standardlibs - Auf "Ganzahl" Auf/Abrunden - aber als Fließkomma belassen - floor (2.3) => 2.0
    nicht ganz, wenn es ne Fließkomma bleiben soll dann musst du FLOOR_REAL nehmen, ansonsten wird es ne Ganzzahl

    Interessanter wäre für welche CPU das Program da eigentlich ist , FLOOR unterscheidet sich zwischen S7-x00 und S7-1x00
    Geändert von ChristophD (18.11.2014 um 07:57 Uhr)

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von LowLevelMahn Beitrag anzeigen
    ach Larry - ein bisschen google hat noch keinem geschadet
    tut mir leid - ich wußte nicht, dass ich nicht auch mal was fragen darf ...

    Zitat Zitat von LowLevelMahn Beitrag anzeigen
    Floor/Ceil heisst in den meisten Sprachen/Standardlibs - Auf "Ganzahl" Auf/Abrunden - aber als Fließkomma belassen - floor (2.3) => 2.0
    ROUND und TRUNC kenne ich als Befehle - FLOOR und CEIL (Fußboden und Decke) hatte ich bislang noch nicht ... ich kenne aber auch scheinbar nicht "die meißten Sprachen" bzw. die "Standard-Libs"

    So kommt es dann halt zu der Frage ... und stimmt ... ich wollte lieber rückfragen als googeln ...

    Gruß
    Larry

  8. #7
    Registriert seit
    29.01.2007
    Ort
    Sandkrug
    Beiträge
    147
    Danke
    7
    Erhielt 36 Danke für 25 Beiträge

    Standard

    Aus dem S7-Basic-Handbuch S. 2556 (mit meinen Ergänzungen):

    1. FLOOR liefert bezüglich der Ausgangszahl die nächst kleinere Ganzzahl (geht auf dem Zahlenstrahl also immer nach links bis zur nächsten Ganzzahl).
    Auch die Zahl 5.0 ist in diesem Sinne eine Ganzzahl.
    x := FLOOR (5.67 ---> 5
    x := FLOOR (-5.67 --> -6
    2. Wird FLOOR in dieser Form verwendet, ist das Ergebnis der Rückgabe eine Ganzzahl im DINT-Format !!!
    3. Der FLOOR-Befehl kann auch in einer erweiterten Form verwendet werden:

    x := FLOOR_Datentyp (Ausdruck)


    - Ausdruck ist logischerweise immer eine Gleitpunktzahl (S7 kennt REAL und LREAL), das Format braucht nicht explizit angegeben zu werden.
    - Datentyp ist das Format, in dem der abgerundete Ausdruck zurückgegeben wird (Ganzzahl oder wieder Gleitpunktzahl)
    x := FLOOR_LREAL(5.67 ---> 5.000000000000000, x muss dabei einen LREAL-Wert aufnehmen können, sonst gibt es eben Fehler.
    x := FLOOR_SINT (-5.67 ---> -6, x muss für einen SINT-Wert aufnahmebereit sein. x als Byte zu vereinbaren scheint nicht auszureichen !

    S7-TIA kennt eine fast unüberschaubare Fülle an Datentypen. Laut Handbuch sind es genau 104 (Wahnsinn!!!).
    Das Rückgabeformat von FLOOR_xxxxx kann also eine Gleitpunktzahl (Format REAL oder LREAL) oder eine Ganzzahl sein. Für Ganzzahlen gibt es (lt. Handbuch genau 8 Typen).
    BOOL,BYTE, WORD, DWORD und LWORD gehören nicht dazu !
    Der Ansatz von Siemens in diesem Zusammenhang ist nicht schlecht, diese Datentypen werden nämlich als Bitfolgen bezeichnet, leider steht aber über der Tabelle auch der Begriff Binärzahlen und das muss man falsch nennen.
    In einem Handbuch mit 4971 Seiten kann das schon mal vorkommen.
    Soweit aus meiner Sicht zur Klarstellung.
    Meine Aussagen kann ich leider nicht praktisch testen, weil ich mir S7-TIA-Portal mangels Hardware nur theoretisch erschließen kann.
    Deshalb bitte nicht erschlagen, wenn meine Aussagen nicht stimmen sollten.
    Schönen Abend noch!

    eNDe

  9. #8
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von ChristophD Beitrag anzeigen
    Interessanter wäre für welche CPU das Program da eigentlich ist , FLOOR unterscheidet sich zwischen S7-x00 und S7-1x00
    Für eine 1214. Ich würde nicht TIA nehmen, wenn ich nicht müßte.
    Zitat Zitat von eNDe Beitrag anzeigen
    Für Ganzzahlen gibt es (lt. Handbuch genau 8 Typen).
    BOOL,BYTE, WORD, DWORD und LWORD gehören nicht dazu !
    eNDe
    Ok, mag ja sein. Aber erstens muß man ständig numerische Werte auf QWs schreiben, QWs sind immer Words. Es sollte dafür auch eine Art geben, wie man das macht, ohne Warnungen zu erzeugen. Vielleicht ist die mir ja entgangen...
    Zweitens: Wenn Word kein numerischer Datentyp ist, dann sollte es halt kein FLOOR_WORD geben. Dann sollte es wie jeder andere nicht existierende Bezeichner behandelt werden.
    Geändert von Zottel (18.11.2014 um 16:26 Uhr)

  10. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Für eine 1214. Ich würde nicht TIA nehmen, wenn ich nicht müßte.

    Ok, mag ja sein. Aber erstens muß man ständig numerische Werte auf QWs schreiben, QWs sind immer Words. Es sollte dafür auch eine Art geben, wie man das macht, ohne Warnungen zu erzeugen. Vielleicht ist die mir ja entgangen...
    Zweitens: Wenn Word kein numerischer Datentyp ist, dann sollte es halt kein FLOOR_WORD geben. Dann sollte es wie jeder andere nicht existierende Bezeichner behandelt werden.
    Du verlangst einfach zu viel von Siemens.
    Wir können doch schon froh sein, dass sie SPS sich nicht mehr verrechnen, wie das noch bis vor Kurzem bei Gleitpunkt-Konstanten der Fall war.
    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

  11. #10
    Registriert seit
    16.03.2006
    Ort
    Franken
    Beiträge
    3.797
    Danke
    30
    Erhielt 917 Danke für 798 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    welchen Datentyp hat Output_1 bei Dir?
    Wenn ich Output_1 als word definiere und die Funktion FLOOR_USINT verwende dann kommen bei mir keine Warnungen und keine Fehler.
    Geändert von ChristophD (18.11.2014 um 18:12 Uhr)

  12. Folgender Benutzer sagt Danke zu ChristophD für den nützlichen Beitrag:

    Zottel (18.11.2014)

Ähnliche Themen

  1. KL3064 spinnt
    Von Zottel im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 30.04.2013, 11:07
  2. Antworten: 31
    Letzter Beitrag: 09.09.2011, 23:02
  3. Analogeingang spinnt
    Von Nost im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.11.2010, 14:16
  4. DB spinnt ?
    Von Power_Pete im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.03.2010, 16:55
  5. Macht hier auch wer Rufbereitschaft?
    Von Zefix im Forum Stammtisch
    Antworten: 33
    Letzter Beitrag: 13.06.2008, 21:47

Lesezeichen

Berechtigungen

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