WinCC - Variablen per Skript erstellen

Dim Farbe, MeineVar

HmiRuntime.Screens("Bild_2").BackColor = BgCol

Select Case meineVar
Case 0
BgCol =RGB(255,0,0)'rot
Case 1
BgCol =RGB(0,0,255)'blau
End Select

ist nicht richtig..?
Ich habe immer noch das gleiche Problem
 
Heisst dein Bild "Bild 2"?.mach doch if /else.Durch welches Ereignis rufst du das Script auf?
Du hast doch eine boolsche Variable?

Wenn du eine Integer Variable nimmst kannst du einen Wert reinschreiben(0 oder 1) und ein Datenänderungsscript aufrufen dann kannst du
das Script so übernehmen von Ronin.Mit deinen Variablen natürlich.

Wenn du auf das aktuell geöffnete Bild zugreifen willst nimmst du ActiveScreen statt "Bild 2".
Siehe die Postings vorne dran.:D
 
Bevor Du meineVar abfragst mußt Du an meineVar was zuweisen. Wenn nicht dann bleibt meineVar auf 0.

Code:
Dim farbe, meineVar

[COLOR="#FF0000"]meineVar = ...?[/COLOR]  [COLOR="#006400"]'<-- meineVar muß einen Wert erhalten (0 oder 1)[/COLOR]

Select Case  meineVar
  Case 0:  HmiRuntime.Screens("Bild_2").BackColor = RGB(255,0,0) 'rot
  Case 1:  HmiRuntime.Screens("Bild_2").BackColor = RGB(0,0,255) 'blau
End Select

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte ich in meinem Beitrag schon beantwortet.
Nun, sofern du nichts bei "meineVar" nichts anderes gescriptet hast ist das Verhalte klar da meineVar in
deinem Schnipsel nirgenst zuwiesen wird und immer 0 ist.

1. Kriegt deine Lokale-Skrip-Variable "MeineVar" nirgenst einen Wert zugewiesen.
2. Weist du bei dem Schnipsel jetzt schon eine Farbe zu bevor die sie mit dem Case ausgewählt hast.

Versuch mal das, dann weißt du was ich meine.
Code:
Dim BgCol, MeineVar

MeineVar = 1      'Hier weisen wir jetzt 1 zu, wo du den Wert später herbekommst musst du selber wissen

 Select Case meineVar     'An der Stelle sucher wir nach der Farbe die zu unserer 1 passt --- blau
     Case 0 
          BgCol =RGB(255,0,0)'rot
 Case 1 
         BgCol =RGB(0,0,255)'blau
 End Select

HmiRuntime.Screens("Bild_2").BackColor = BgCol    'jetzt am Schluss weisen sie wir zu
 
Zuletzt bearbeitet:
Weil ichs jetzt erst gerade vorne gelesen habe.
Wenn deine "MeineVar" in der Variablentabelle außerhalb des Skriptd existiert (HMI-Tag), dann deklariere sie bitte nicht nochmal neu als Lokalvariable mit Dim.

Das erzeugt eine Lokalvariable im Skript, dann wird auf die und nicht den HMI-Tag zugegriffen.

Schmeiß bitte das Dim MeineVar raus. Dann kann sein dass du MeineVar im Skript neu eintippen musst, damit sie so orange wie bei mir im screenshot dargestellt wird. Das ist das Zeichen dafür dass auf die HMI-Variable aus der Variablentabelle zugegriffen wird.
 
Zuletzt bearbeitet:
Weil ichs jetzt erst gerade vorne gelesen habe.
Wenn deine "MeineVar" in der Variablentabelle außerhalb des Skriptd existiert (HMI-Tag), dann deklariere sie bitte nicht nochmal neu als Lokalvariable mit Dim.

Das erzeugt eine Lokalvariable im Skript, dann wird auf die und nicht den HMI-Tag zugegriffen.


Schmeiß bitte das Dim MeineVar raus. Dann kann sein dass du MeineVar im Skript neu eintippen musst, damit sie so orange wie bei mir im screenshot dargestellt wird. Das ist das Zeichen dafür dass auf die HMI-Variable aus der Variablentabelle zugegriffen wird.




wenn ich dim meineVar rausschmisse,dann gibt es ein Fehlermeldung
und kann man nicht Runtime
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Wenn Worte versagen....

Hier Grafisch:
attachment.php


Testprojekt (auch mit Variante wo man nur RGB dem Skript übergeben muss):
Anhang anzeigen Projekt_1_1.zip
 

Anhänge

  • WinCCFlex_SkriptBgCol2_1.jpg
    WinCCFlex_SkriptBgCol2_1.jpg
    242,1 KB · Aufrufe: 55
Zuletzt bearbeitet:
Hallo,

ich möchte in WinCC ein Skript erstellen um eine Variable mit eine Zahl zu multiplizieren.
SmartTags("Variable1")(0)= (SmartTags("Variable2")(0))*0,04
SmartTags("Variable1")(1)= (SmartTags("Variable2")(1))*0,04
...................
SmartTags("Variable1")(15)= (SmartTags("Variable2")(15))*0,04

in der Ausgabe sollte die (Variable2)*0,04 angezeigt werden.

Ich weiß nicht, wo und genau wie ich machen muss damit das klappt.

Danke für die Hilfe
 
Du bist immer noch in WinCC flexible?

Deine "Variable1" und "Variable2" sind Arrays. Ich meine, Du mußt zunächst die Umrechnung auf ein Skript-internes temp_Array machen und danach das temp_Array auf das Array "Variable1" ausgeben.

Etwa so (ungetestet):
Code:
Dim temp_Array(), i

For i = 0 To 15
  temp_Array(i) = SmartTags("Variable2")(i) * 0.04
Next

SmartTags("Variable1") = temp_Array

Zur Anzeige müßtest Du ein oder mehrere EA-Feld(er) für Variable1[0] ... Variable1[15] machen.

Harald
 
Zurück
Oben