# Normierung und Datenwörter.



## Tigerkroete (21 Juni 2006)

Hallo Leute.
Ein Analogausgang soll angesteuert werden. 
Der Maschinenbediener kann Werte von 0-100 (%) in sein Eingabefeld im Touchpanel (TP 177A WinCC Flexible) eingeben, diese werden dann in einem Datenwort gespeichert.

Die Normierung würde ich dann so machen:

```
L   DB1.DBW0    //Bedienerwert im Datenwort
L   100
/R
L   27648
*R
T   PAW 288
```
 
Ich denke und hoffe, dass das soweit richtig ist.

Meine Frage ist mehr, wie mein eingegebener Zahlenwert im Touchpanel im Datenwort gespeichert wird.
Der Bediener gibt ja einen Dezimalwert ein (0-100) und wird nun dieser Dezimalwert als Hexzahl interpretiert ins Datenwort gelesen?
Falls ja, ist das ein Problem? Wie kann ich es ggf. ändern? Wie würdet Ihr es machen?

Vielen Dank und viele Grüße,
Tigerkroete


----------



## MSB (21 Juni 2006)

Also pauschal würde ich den Bediener den Wert als REAL eingeben lassen,
und dann den FC106 (aus der StdLib) benutzen.


Wenn du es aber schon so machen willst dann muss deine Rechnung so sein:

L DB1.DBW0
DTR
L 276.48
*R
Edit: RND
T PAW288


Wie der Zahlenwert in der SPS interpretiert ist egal, jeder Zahlenwert ist ja nur irgendein Bitmuster welches sich als HEX oder DEZ darstellen lässt.

Mfg
Manuel


----------



## plc_tippser (21 Juni 2006)

Kommt drauf an, wie du die Nachkommastellen berücksichtigen willst (Rundungsfehler). Grundsätzlich ist dein Ansatz OK.

Bei MSB wird ein REAL-Wert auf den Ausgang geschrieben, das Signal muss auf irgendeine Art und Weise auf 32Bit Int gewandelt werden. Z.B. RND


pt


----------



## Tigerkroete (21 Juni 2006)

Anscheinden denke ich viel zu kompliziert.
Habe ich das jetzt so richtig verstanden, dass es nach meiner Weise zwar geht, aber es zu Rundungsfehlern kommt, wenn ich durch den Befehl DTR den Wert nicht real mache?

Bin grad ganz durcheinander. Wenn mein Datenwort erstmal im Hex-Format vorliegt, dann darf ich doch nicht einfach durch 100 (dezimal) teilen?!

Sorry, aber kriegs nicht ganz auf die Reihe.


----------



## plc_tippser (21 Juni 2006)

OK, ich habe auch nicht richtig hingeschaut

Angenommen Bediener gibt 2% Soll vor

2 / 100 = 0 (da INT)

Also besser in REAL rechnen. 

Ob du in HEX oder nicht rechnest, gibst du ja vor Bsp. W#16#12 = HEX


pt


----------



## Tigerkroete (21 Juni 2006)

Ok ich gebe es vor, aber es würde so oder so richtig gerechnet?

Und noch eine dumme Frage:
Was muss ich statt W#16#2 eingeben, damit ich dezimal rechne?

Vielen Dank,
Tigerkroete


----------



## plc_tippser (21 Juni 2006)

2 bei INT
L2 bei DINT
2.0 bei REAL

Ansonsten wirst du ja nicht zwischen den Zahlensystemen rumspringen wollen, oder?


----------



## Tigerkroete (21 Juni 2006)

Was würdest Du mir denn Raten? Momentan stehen meine Datenwörter aud "Word". Was soll ich für diesen Fall am ehesten benutzen?

Vielen Dank,
Tigerkroete


----------



## volker (21 Juni 2006)

das musst du schon selbst entscheiden. kommt drauf an wie genau du das haben willst. vorteil bei real wäre, dass der bediener auch 2,5% eingeben könnte.

wenn du mit int arbeitest, multiplzierst du den wert mit 276. das ist eine abweichung von 0,174%

L wert
L 276
*I
T PAW

für real, so wie msb das geschrieben hat


----------



## Tigerkroete (21 Juni 2006)

Vielen Dank ;-)


----------

