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

Ergebnis 1 bis 10 von 10

Thema: Betrag einer Intergerzahl

  1. #1
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich bekomme von einem Regler eine Integerzahl geschickt, welche die Geschwindigkeit darstellt. Leider bekomme ich auch negative geschwindigkeiten gesendet. Ich möchte nun dem Benutzer nur positive Zahlen darstellen. wie kann ich denn den Betrag der Zahl heraus bekommen?
    Ich kann ja leider nicht auf <0 vergleichen, da eine zahl im Minusbereich ja trotzdem als eine hohe positive Zahl in der SPS ankommt.

    Kann mir jemand helfen?
    Zitieren Zitieren Betrag einer Intergerzahl  

  2. #2
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    Zitat Zitat von Bensen83 Beitrag anzeigen
    ... da eine zahl im Minusbereich ja trotzdem als eine hohe positive Zahl in der SPS ankommt.
    ...
    ähm, ich denke, Du schaust Dir die Zahl im Status an? Je nach Umstand (z.B. Akkuanzeige in AWL) kann es sein, dass S7 Dir die Integer-Zahl als Doubleinteger interpretiert und daher unzutreffend anzeigt. Der Vergleich aber mit >I erfolgt dennoch korrekt.

  3. #3
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Nein wenn ich auf <0 vergeliche ist das verknüpfungsergebnis 0
    Zitieren Zitieren Nein  

  4. #4
    Registriert seit
    16.06.2004
    Beiträge
    60
    Danke
    3
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Hallo,
    auf einen Versuch:

    wandle die Zahl in Real-Format mit: DTR;
    wandle die Real- in eine Absolut-Zahl mit: ABS;
    dann zurück mit: RND;

    mfg
    hb

  5. #5
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Eine Integerzahl kann auf jeden Fall negative Werte annehmen und damit auf kleiner 0 verglichen werden.
    In welchem Bereich kommen die Werte denn vom Regler. Musst du die vielleicht erst noch skalieren.

  6. #6
    Bensen83 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.08.2009
    Beiträge
    776
    Danke
    25
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Hat so nicht hingehauen, habe sie erst in ne Real Zahl gewandel tund dann mal -1 genommen und wieder auf ne Int gerundet
    Zitieren Zitieren Ok  

  7. #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

    Wie wird den genau verglichen (mit welchem Befehl)? Wie wird der Wert in den Akku geladen? Einfach mal die komplette verwendete Programmsequenz hier einstellen. Gibt der Regler wirklich positive und negative Geschwindigkeiten im Bereich -32768-+32767 heraus oder Geschwindigkeiten im Bereich 0-65535? Was steht in der Doku dazu?
    In Real wandeln und zurück ist normalerweise nicht notwendig.
    Rainer Hönle
    DELTA LOGIC GmbH

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

  8. #8
    Jo ist offline Erfahrener Benutzer
    Registriert seit
    05.10.2005
    Beiträge
    115
    Danke
    10
    Erhielt 10 Danke für 9 Beiträge

    Standard

    @Bensen
    Rainer hat wohl den Finger auf der Wunde
    < 0 Abfrage nach ((A1 = 0) UND (A0 = 1))
    funktioniert nur bei Befehlen, die A0 bzw. A1 beeinflussen .
    du brauchst sicherlich <I
    Code:
    L Wert
    L 0
    <I
    ...
    mfG. Jo

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Code:
          L     #Test_INT                   // -32768 bis +32767
          NEGI                              // * -1
          SPPZ  ABSI                        // >=0 -> OK, fertig
          NEGI                              // <0! -> nochmal * -1
    ABSI: T     #ABS_INT                    // ABS(#Test_INT)
    Gruß
    Harald
    Zitieren Zitieren ABS-Funktion für Ganzzahlen (INT), ohne andere AKKUs zu verändern  

  10. #10
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    so:
    Zitat Zitat von Bensen83 Beitrag anzeigen
    Nein wenn ich auf <0 vergeliche ist das verknüpfungsergebnis 0
    und so:
    Zitat Zitat von Bensen83 Beitrag anzeigen
    Hat so nicht hingehauen, habe sie erst in ne Real Zahl gewandel tund dann mal -1 genommen und wieder auf ne Int gerundet
    kommen wir hier nicht weiter. Ich möchte Dich bitten, Dein Problem etwas detaillierter darzustellen. Screenshots sind z.B. dabei sehr hilfreich, etwas ausführlichere Schilderungen auch. Solche Pauschalantworten ala "das geht nicht" bringen nichts ...

  11. Folgende 3 Benutzer sagen Danke zu Perfektionist für den nützlichen Beitrag:

    Günni1977 (11.02.2010),marlob (11.02.2010),PN/DP (10.02.2010)

Ähnliche Themen

  1. Real als Betrag
    Von Wagginator im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 02.08.2011, 22:15
  2. Kopplung einer 317 mit einer IM151 über Profinet
    Von GerhardPtl im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 08.07.2010, 13:52
  3. Antworten: 7
    Letzter Beitrag: 19.03.2008, 21:11
  4. Antworten: 1
    Letzter Beitrag: 10.11.2006, 16:29
  5. Betrag eines Wertes errechnen
    Von Flo im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 17.09.2006, 15:57

Lesezeichen

Berechtigungen

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