WinCC WinCC V7.5 - 32-bit Zahl (Float) dynamisch anzeigen

bayernburn

Level-1
Beiträge
38
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Forums Mitglieder.

Ich habe ein WinCC V6.2 System auf WinCC V7.5 migriert.
In meinem Projekt gibt es auch eine Sinaut Verbindung mit vielen Pumpstationen (knapp 30 an der Zahl).
Ich lese nun von diesen Pumpstationen die diversen Parameter in das WinCC V7.5.
Das bedeutet, dass alle Parameter und die entsprechenden Werte in externen Variablen (ST7 Kanal) vorhanden sind. Einige Parameter sind als INT, andere als REAL (Float) verfügbar
Da die Pumpstationen alle ident aufgebaut sind, habe ich mir ein Bild erstellt, indem die Parameter dynamisch angezeigt werden (nennen wir es einfach: Parameterbild).
D.h. klicke ich auf eine Pumpstation, werden die Daten über ein C-Skript gelesen und in interne Variablen geschrieben.
Diese internen Variablen sind im Parameterbild hinterlegt und zeigen die Werte dann an.
Im alten V6 System, ging das Lesen/Schreiben dieser Parameter ohne Probleme. Bei den INT Parametern funktioniert das Alles nach wie vor.
Nur bei den Real Variablen habe ich so meine Probleme, da diese im E/A Feld eine Unmenge von 0 (Nullen) anzeigt.
Um dies besser zu veranschaulichen, hier meine Vorgehensweise (anhand einer Variablen):

ST7 Kanal
Variable: PS_328_PARA_Level_TH_HH Gleitkommazahl 64-Bit (wird von Sinaut immer so angelegt, auch wenn sich intern eine 32-Bit Zahl befindet)
Wert: 2.53

Interne Variable:
WetWell_Level_TH_HH Textvariable 16-Bit Zeichensatz

Beim Aufruf des Bildes wird ein C-Skript ausgeführt, welches folgende Aktion durchführt:
char TMP1[99], TMP2[99];
char PS_XXX_REAL_Level_TH_HH [99] = "_Level_TH_HH";

strcpy(TMP1,"PS_");
strcat(TMP1,"328");
strcat(TMP1,PS_XXX_REAL_Level_TH_HH);
strcpy(PS_XXX_REAL_Level_TH_HH,TMP1);

SetTagCharWait("WetWell_Level_TH_HH",PS_XXX_REAL_Level_TH_HH);

Durch dieses Skript wird erreicht, dass der richtige Variablenname (in diesem Fall "PS_328_PARA_Level_TH_HH " in WetWell_Level_TH_HH geschrieben wird.


Das entsprechende E/A Feld im Parameterbild, habe ich wie folgt konfiguriert:
Ausgabe/Eingabe --> Statik: 0,00000 --> Ausgabewert --> Dynamik: WetWell_Level_TH_HH --> Aktualisierung: Bei Änderung --> Indirekt: Ja (angehackt)
Datenformat --> Statik: Dezimal
Ausgabeformat --> Statik: s9999,99

Nun bekomme ich hier aber 6 Nachkommastellen angezeigt, obwohl ich nur 2 eingestellt habe.

Kann mir dazu jemand eine Lösung anbieten?

Vielen Dank!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

nein, das Ausgabeformat wird wie oben beschrieben eingestellt.

Dieses Verhalten sollte im Prinzip sehr leicht nachvollziehbar sein, wenn man die oben genannten Variablen anlegt, sowie das E/A Feld in ein Bild gibt und das Skript auf einen Button im Bild legt.
Oder hat jemand dieses Verhalten nicht?!
 
Dieses Verhalten sollte im Prinzip sehr leicht nachvollziehbar sein, wenn man die oben genannten Variablen anlegt, sowie das E/A Feld in ein Bild gibt und das Skript auf einen Button im Bild legt.
Oder hat jemand dieses Verhalten nicht?!
Möglicherweise, für Leute die WinCC Professional V7.5 haben, und Lust haben, in einem Testprojekt Deine Variablen anzulegen...
Ich habe WinCC V7.2 und wenn ich da Ausgabeformat: Statik s9999,99 einstelle, dann zeigt das EA-Feld auch "+0,00"
Das Skript, wie Du es (auszugsweise?) gezeigt hast, hat mit den zu vielen Nachkommastellen nichts zu tun.


Beim Aufruf des Bildes wird ein C-Skript ausgeführt, welches folgende Aktion durchführt:
char TMP1[99], TMP2[99];
char PS_XXX_REAL_Level_TH_HH [99] = "_Level_TH_HH";

strcpy(TMP1,"PS_");
strcat(TMP1,"328");
strcat(TMP1,PS_XXX_REAL_Level_TH_HH);
strcpy(PS_XXX_REAL_Level_TH_HH,TMP1);

SetTagCharWait("WetWell_Level_TH_HH",PS_XXX_REAL_Level_TH_HH);

Durch dieses Skript wird erreicht, dass der richtige Variablenname (in diesem Fall "PS_328_PARA_Level_TH_HH " in WetWell_Level_TH_HH geschrieben wird.
Das stimmt so nicht. Es wird eine Zeichenkette "PS_328_Level_TH_HH" zusammengebastelt und der Variable WetWell_Level_TH_HH zugewiesen.
Wie sieht das Skript wirklich aus?
Wird im EA-Feld der richtige Wert angezeigt? (+2,53 bzw. +2,530000)


Bei den INT Parametern funktioniert das Alles nach wie vor.
Was meinst Du damit? Werden bei INT Parametern im EA-Feld Nachkommastellen angezeigt?
Sind da womöglich 2 EA-Felder übereinander und die werden (je nach INT oder REAL Parameter?) sichtbar/unsichtbar geschaltet? Hast Du alle Ebenen sichtbar geschaltet?
Ist das ein aus dem WinCC V6.2 Projekt migriertes Bild bzw. EA-Feld oder hast Du das Parameterbild komplett neu angelegt?

Wo die WinCC Runtime jetzt läuft: welches Dezimaltrennzeichen ist in dem Windows eingestellt?

Harald
 
Zurück
Oben