Format mit 2 Nachkommastellen anzeigen...

Zuviel Werbung?
-> Hier kostenlos registrieren
Beim Datentyp REAL musst du dich nicht selbst um den Exponenten kümmern. Beim Beispiel 22,0 nimmt die SPS entsprechend der Datentypbeschreibung (bin mir grad nicht sicher) 24 Bit für die Mantisse (was dann deine Genauigkeit begrenzt) und die restlichen 8 für den Exponent (der dann dein Komma verschiebt).
 
@astranik:

Ergibt das dann nicht die Zahl 2200?


@Nordischerjung:

Durch die Umwandlung in eine Realzahl bekomme ich sozusagen automatisch die gewünschten Nachkommastellen?
 
Zuletzt bearbeitet:
Moin

Ergibt das dann nicht die Zahl 2200?

ja


Durch die Umwandlung in eine Realzahl bekomme ich sozusagen automatisch meine Kommastelle?

ja, aber nach dem Code 2200.00

vor dem Code 22.00


Die Zahl 22 binär: 10110

hex: 16
oktal: 26
real : 22.0


Wichtig ist doch nur, keine Äpfel mit Birnen zu vergleichen.

Ich suche einfach nach einem Code, der mir die Zahl 22 als 22,00 darstellt - geht das?

Darstellt? im HMI Kommastellen verschieben.

in der SPS?

Code:
L 22
DTR

=22.0(000000000)

LG
 
Hast du dir schon mal die Datentypen angeschaut?

DINT deckt ganze Zahlen von L#-2147483648 bis L#2147483647 ab.

Real ist etwas anspruchsvoller da es sich um Gleitpunktzahlen handelt.
Es geht von ganz großen (Milliarden...) positiven und negativen Zahlen bis ganz kleinen (0,00000...1) positiven und negativen Zahlen.
Obere Grenze: ±3.402823e+38
Untere Grenze: ±1.175 495e-38

Aber die "Darstellung in der SPS" verstehe ich nicht. Willst du das in einer Variablentabelle anzeigen oder als Aktualwert im DB? Oder doch auf einem HMI?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


Hm, worin besteht dann hier der Unterschied zur Umwandlung in eine Realzahl; ich meine, welches andere Ergebnis (im Gegensatz zu 22.0) würde ich denn dann bekommen?

Ein Beispiel:

Sollwert eines Antriebs in 20-100%

Eingabe im Display 80 %

80x ( Faktor Ganzzahl 6 ) = 480 = 48 Hz im FU

Code:
L  #Prozent
L 6
*D
T #zumFU

jetzt möchte ich aber 50 Hz im FU bei 80%

Code:
L  #Prozent //DINT
L  ??? 6.25 ??? //geht nicht  REAL

also

L #Prozent   // 80
DTR  //  80.0    Realzahl mit Realzahl verkuddeln
L 6.25 
*R

TRUNC // oder RND+ , RND- usw.. Ganzahlig runden
T #zumFU


Vielleicht hilft es Dir
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber die "Darstellung in der SPS" verstehe ich nicht. Willst du das in einer Variablentabelle anzeigen oder als Aktualwert im DB? Oder doch auf einem HMI?

Nun, das war eher nur ein "Einfall" von mir - ja, ich wollte mir die Werte als Aktualwert in einem DB ansehen. Im Grunde geht es mir einfach darum, wie ich ein best. Format erzwingen kann.

@Verpolt: Danke für dein Beispiel!

Aber eine Wandlung nach ASCII ist nochmal ganz was anderes, oder?
 
Jep.

In ASCII brauchst du für jede Ziffer ein Byte (Character)
die Ziffer 0 (Nicht die Zahl 0) wird in ASCII mit 30h bzw 48d dargestellt. Ebenso brauchst du für das Komma ein Byte...

Wenn du jetzt deine REAL-Zahl nach ASCII wandeln möchtest musst du dir vorher schon mal Gedanken über die Genauigkeit machen, da du ja den String (Ergebnis-Zeichenkette) in der Länge definieren musst. Ausserdem kannst du damit quasi nicht rechnen.

Beispiel:
L 1
L 1
+I
T ... // Ergibnis = 2

Logisch

wenn du allerdings ASCII-Zeichen hast funktioniert das nicht
L '1' // 31h
L '1' // 31h
+I
T .... // 62h
62h ist aber nicht '2' (ASCII 2) sondern ein 'b' (kleines b). Für Zahlen ist diese Darstellung meistens ungeeignet...

Unter http://www.asciitable.com/ findest du eine ASCII-Tabelle.
 
Zurück
Oben