bayernburn
Level-1
- Beiträge
- 38
- Reaktionspunkte
- 0
-> 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!!
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!!