WinCC V7 Dezimalstelle verschieben

golfsiew

Level-1
Beiträge
36
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte z.B. den Wert der Ausentemperatur von einer S7 317 einlesen.
Dieser Wert steht im DB 1 Wort 20 als 47 für 4,7 °C.
Wie kann ich den Wert in WinCC umrechnen, das z.B. für die 47 eine 4,7 erscheint??? Habe schon ein Script geschrieben in dem ich die 47 durch 10 teile. Da kommt dann 4 raus. Die Nachkommastelle wurde weggelassen. Bei einer negative Zahl kommt 0 raus.

Vielen Dank im vorraus.
 
Hallo,
ich weiß jetzt nicht, on WinCC eine "lineare Skalierung" kann. Das wäre eventuell ein Ansatz.
Ansonsten solltest du bei deiner Division den Variablentyp berücksichtigen. Wenn deine 47 ein INT sind (und das nehme ich stark an), dann ergibt das bei der Division durch 10 dann 4. Der Variablentyp für den umgerechneten Wert muß dann natürlich ein REAL sein. Dann funktioniert das auch in dem Script.
Diese Division mit der anschließenden Übermittlung des umgerechneten Wertes kannst du natürlich genausogut in der SPS machen - vielleicht hättest du dann den Fehler auch schneller bemerkt ... ;)

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok, die Zahl ist im INT Format als vorzeichenbehaftetes 16bit Zahl.
ich bräuchte also REAL vorzeichenbehaftete 32 bit Zahl mit Nachkommastelle. Es in der SPS zu ändern ist kein Problem. Ich Visualisiere mit WinCC eine Gebäudeleittechnik, wo ich mir die Daten von einer Fremd SPS hole und wollte deswegen nicht auf diese irgendetwas hin und her rechnen. Probiere aber das mit dem skalieren.
Vielen Dank...schönes Wochenende.
 
Hi,
mit der Skalierung und Nachkommastelle ist bei WinCC etwas konfus.

Du legst eine Variable vom Typ 32-Bit Float an.
Dann gibt es bei Formatanpassung eine Möglichkeit wie "FloatToWord", ich kann das im Moment nicht nachschauen.
Danach noch die Skalierung aktivieren, und bei Prozess z.B. 0-100 und bei Variable 0-10 einstellen. Somit hast du im WinCC aus deiner SPS Integervariable eine Gleitpunktvariable mit einer Nachkommastelle im WinCC gemacht

Gruß
Thomas
 
Zuletzt bearbeitet:
Habe schon ein Script geschrieben in dem ich die 47 durch 10 teile. Da kommt dann 4 raus. Die Nachkommastelle wurde weggelassen. Bei einer negative Zahl kommt 0 raus.

Hallo,

hast du mal versucht in diesem Script statt durch 10 durch 10.0 zu teilen?
Also ungefähr so

float xy = 0;
xy = intvariable / 10.0;

Sollte eigentlich funktionieren.

Gruß Dirk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich möchte z.B. den Wert der Ausentemperatur von einer S7 317 einlesen.
Dieser Wert steht im DB 1 Wort 20 als 47 für 4,7 °C.
Wie kann ich den Wert in WinCC umrechnen, das z.B. für die 47 eine 4,7 erscheint???

Siehe die folgenden Siemens-FAQ:

WORD-Prozesswert mit Nachkommastellen in WinCC darstellen

FRAGE:
Wie kann ich einen WORD-Wert aus der CPU in WinCC mit zwei Nachkommastellen darstellen?

ANTWORT:
Sie haben in der CPU eine Variable vom Typ "WORD" abgelegt und möchten diesen Wert in WinCC mit zwei Nachkommastellen darstellen. Führen Sie dazu die folgenden Schritte aus:
  1. Legen Sie eine Variable vom Typ "Gleitkommazahl 32 Bit IEEE 745" im WinCC-Variablenhaushalt an.
  2. Stellen Sie unter Formanpassung "FloatToUnsignedWord" ein.
    Mit diesen Schritten wird der WORD-Wert von 2 Bytes auf 4 Bytes erweitert und es wird eine Konvertierung der Festkommazahl in eine Gleitpunktzahl vorgenommen.
  3. Aktivieren Sie die lineare Skalierung. Tragen Sie in den entsprechenden Feldern die folgenden Werte ein.
    "Wertebereich Prozeß" > "Wert1" > "0"
    "Wertebereich Prozeß" > "Wert2" > "1000"
    "Wertebereich Variable" > "Wert1" > "0"
    "Wertebereich Variable" > "Wert2" > "10"
    Durch diesem Schritt legen Sie die Anzahl der Nachkommastellen fest. Wenn Sie drei Nachkommastellen benötigen, dann ändern Sie den "Wert2" von 1000 in 10000.
ID9396564 WORD-Prozesswert mit Nachkommastellen in WinCC darstellen

Gruß Kai
 
wichtig wäre vieleicht noch zu sagen das im EA Feld die Nachkommastelle auch eingetragen ist z.B. 99,99 bzw s99,99 fürs vorzeichen
 
Zurück
Oben