# Real zahl umwandeln in Decimal zahl mit 4 stellen!!



## PhSch105 (17 Juli 2012)

Hallo alle zusammen

bin echt am verzweifeln...

hab eine s7et200s und ein Beijer HMI Display

Mein Problemm

ich will eigendlich nur meinen Scalierten real wert auf dem display in decimal anzeigen lassen>
Z.b.Scale=5,558543 > MD200 > HMI Display (int16, int32, Float) > 5,55 

nur zeigt der mir alles an nur nicht das was ich will!!
Da kommt z.b. bei einem scalierten wert von 7.998887 das raus 19192415425,00

Am display kann ich nur auswählen zwischen ganzal, decimal, hex... und kann dann das komma setzen.

hat mir vileicht jemand einen Tip?


----------



## Verpolt (17 Juli 2012)

Nimm im Display "Float" und skalier erstmal nix. Dann dürfte dein Wert als Realzahl angezeigt werden


----------



## PhSch105 (17 Juli 2012)

ja das hab ich alles schon probiert da kommt dann so was raus 64054500000000 bei einem wert von eigendlich 7,998222


----------



## Lupo (17 Juli 2012)

PhSch105 schrieb:


> hab eine s7et200s und ein Beijer HMI Display



Was hast du denn genau für eine Steuerung (nur so aus Interesse).
Kann es vielleicht sein, dass die HMI, die du da verwendest (ich kenne die nicht), mit dem S7_Real nichts anfangen kann oder die Byte-Reihenfolge davon verdreht ?


----------



## PhSch105 (17 Juli 2012)

Also 
Ich benutz TIA V11
Hab eine S7 ET 200 S
Und Ein IX T10A von Bejer 
Verbunden über Profinet

Was das display macht weis ich nicht 
weil alle anderen zahlen/werte kommen eigendlich richtig an (nur halt als ganzzahl z.b. 8 oder 88..)
nur irgend ein problem gibts mit dem komma

Weis auch nicht obs das da am display bringt wen ich im sag er sol das komma an zweiter stelle oder so machen
weil normalerweise sag doch die sps vo das komma ist!

gibts eine möglichkeit die real zahl so zu wandeln das man sie in ein anderes format bekommt mit komma?

Weil ich brauch nur 0.00-10.00


----------



## vollmi (17 Juli 2012)

Es gibt kein anderes Format ausser Real mit Komma.
Aber du könntest den Realwert laden mit 100 multiplizieren und dann in Integer wandeln.

Also 
      L     #wert    // als 32Bit Real/Float
      L     1.000000e+002
      *R    
      RND   
      T     #neuerwert // als 32Bit Ganzzahl

Im Display dann neuerwert laden als 32Bit Integer und Komma zwei stellen nach links schieben.

mfg René


----------



## PhSch105 (17 Juli 2012)

das wird nicht viel bringen dann steht nacher bei scaliertem wert 7.998888 > RND > 8 > *R = 800

ist auch so habs grad ausprobiert...

also irgend was stinkt da gewaltig so was pobliges und ich bekomms nicht hin 

hab auch schon mehrmals den MD gewechselt


----------



## vollmi (17 Juli 2012)

Die Reihenfolge hast du jetzt falsch beschrieben aber 800 wäre ja auch korrekt darum nehme ich an die Operationen hast du in der richtigen Reihenfolge durchgeführt.

 oder willst du 799 anzeigen? dann wäre RND- die Operation der Wahl
Dir sind die regeln des Rundens bekannt?


----------



## PhSch105 (18 Juli 2012)

? 
Die regeln des rundens ... was gibts dann den für regeln, wen man rundet rundet man!

ja hab ich falsch beschrieben!

hab grad nochmal getestet und jetzt zeigt er mir zumindest mal den wert an also bei 7.55555 hab ich nacher 750
nur wen ich am display das komma setzen will macht er das nicht.

wie bekomm ich jetzt in die 750 das komma rein (7,50)?


----------



## vollmi (18 Juli 2012)

PhSch105 schrieb:


> Die regeln des rundens ... was gibts dann den für regeln, wen man rundet rundet man!



Man rundet nicht einfach man entscheidet auch wie gerundet werden soll. 
Zur nächstgelegenen Zahl? Das macht RND
Zur Tieferen Zahl? Das macht RND-
Oder doch lieber zur höheren? Das macht dann RND+

Da bei deiner Zahl 799.8888 die 8 weggestrichen wurde war die nächste Zahl eben 800. 

Wie das Dezimalzeichen verschoben wird kann ich dir aber nicht sagen. Kenne das Display eben nicht.

Wie kommst du jetzt von 7.55555 auf 750? Da musst du ja erst multiplizieren, dann ABrunden nach INT und nochmal multiplizieren

mfG René


----------



## PhSch105 (18 Juli 2012)

danke für den kleinen lergang...

Ich hab das bei mir jetzt so drinnen:

      L    MD220 (scallierter wert 7.998855)
      L     100.0
      *R
      RND-
      T    MD230 (gehender wert Display 799)

Am display kann ich auswählen zwischen Ganzzahl und Decimalzahl, bei decimal kann ich ein komma einbinden.
wen ich das so setzt das es nach der sieben steht (7,99) zeigt er mir nacher aber immer noch 799 an.

aber egal das sollte reichen, mach einfach ne andere einheit draus.
obwohl es schöner wäre mit komma 

Nochmals Danke an alle


----------



## volker (18 Juli 2012)

mir wäre das nicht egal. 
bei darstellung: dezimal
bei darstellungsformat: 99999
dezimalkomma verschieben: 2


----------



## Rafikus (18 Juli 2012)

Hallo,
könntest Du vielleicht ein Screenshot von der Eingabemaske einfügen, wo Du die Kommastelle eintragen kannst? Ein Bild sagt mehr als tausend Worte.

Rafikus


----------



## PhSch105 (18 Juli 2012)

oman also die lösung ist=

man speichert den scallierten wert nicht im MD sondern diereckt im DB und stellt den wert auf Float 
dann wird der wert im Display auch mit komma angezeigt....

>>

Scallierung (5.555555) > DB43.DBD0 (real) >Display > Floate > Decimal und komma an 2 stelle und auf 4 stellen begrenzen > Anzeige= 5.55


Trotz dem noch mal danke an alle


----------



## Verpolt (18 Juli 2012)

PhSch105 schrieb:


> oman also die lösung ist=
> 
> man speichert den scallierten wert nicht im MD sondern diereckt im DB und stellt den wert auf Float
> dann wird der wert im Display auch mit komma angezeigt....



Hat aber nix mit MD oder DBD zu tun. ist beides 32bit lang


----------



## PhSch105 (18 Juli 2012)

Keine anung warums da jetzt geht aber haupsache ist das es geht...


----------



## vollmi (18 Juli 2012)

Ist das für dich befriedigend wenn es irgendwie geht aber du nicht weisst warum?


----------



## Verpolt (18 Juli 2012)

vollmi schrieb:


> Ist das für dich befriedigend wenn es irgendwie geht aber du nicht weisst warum?



Spätestens am Service-Telefon kommt so was als "Screwball" zurück


----------



## PhSch105 (18 Juli 2012)

ne  befriedigend ist das sicher nicht aber wäre schön wen du es mir vileicht erklären könntest 

für mich muss der wert grad nur stimmen weil die anderen process fasen davon abhängen und ich e schon so gut wie keine zeit mehr hab 

Bin e nur froh das es so weit schon alles läuft,
ich hatte 2007 eine schulung auf die s7300 und Step7 5.4
seit dem wahr ich so gut wie nicht mehr in der Programmierung unterwegs und jetzt schmeist mich mein chef ins kalte wasser 
mit der begründung das ich vor 5 jahren eine schulung hatte und ich ja alles können müsste ....


----------



## Verpolt (18 Juli 2012)

Hattest du das MD in der Symbolik als "Real" (=Gleitkomma,Float) deklariert.


----------



## PhSch105 (18 Juli 2012)

ja hatte ich


----------

