Betrag einer Intergerzahl

Bensen83

Level-1
Beiträge
777
Reaktionspunkte
3
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?
 
... 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.
 
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
 
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.
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ABS-Funktion für Ganzzahlen (INT), ohne andere AKKUs zu verändern

Code:
      L     #Test_INT                   // -32768 bis +32767
[COLOR="Blue"]      NEGI                              [/COLOR]// * -1
[COLOR="Blue"]      SPPZ  ABSI                        [/COLOR]// >=0 -> OK, fertig
[COLOR="Blue"]      NEGI                              [/COLOR]// <0! -> nochmal * -1
[COLOR="Blue"]ABSI:[/COLOR] T     #ABS_INT                    // ABS(#Test_INT)
Gruß
Harald
 
so:
Nein wenn ich auf <0 vergeliche ist das verknüpfungsergebnis 0

und so:
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 ...
 
Zurück
Oben