WinCC - Problem mit Variablenpräfix

soundmachine123

Level-1
Beiträge
102
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

mein problem ist etwas verzwickt aber ich versuche es so gut wie möglich zu beschreiben.
Ich habe insgesamt im Feld 20 gleich aufgebaute ET200 Baugruppen mit 15 8er Eingangsmodulen udn 15 8er Ausgangsmodulen.

Nun möchte ich auf WinCC ALLE Eingänge und Ausgänge farblich visualisieren
Hierzu hatte ich mir folgendes ausgedacht:
Ich lege eine Maske an in der ein "Strang" einer Remote I/O abgebildet ist.
Hier habe ich dann also insgesamt 15*8 viereckige Kästechen eingepflegt mit einem Farbumschlag über einen Dynamikdialog.
Als Variable dieses Dynamikdialogs habe ich immer nur die Postfixvariable eines Structes angebunden.
Zum Verständnis:
- Ich habe einen Structurtyp angelegt mit insgesamt 15 Byte Inhalt. Für jede RIO rufe ich also dann eine Instanz dieses Strukturtyps auf. Sieht folgendermaßen aus:
RIO_1_E.0 EW0
RIO_1_E.1 EW1
...

Angebunden an ein "Kästchen" innerhalb des Bildfensters ist dann nur noch z.B. die Variable '.0' Bit 4.

Im Aufruf des Bildfensters ist ein Skript hinterlegt welches dann den Variablenpräfix setzt. Also Taster mit Namen "Eingänge RIO1" setzt einen Präfix "RIO_1_E"

Skript ist folgendes:

Dim testbild
set testbild = ScreenItems("sys_win_EA")
testbild.picturename("Popup_EA")
testbild.visible = true
testbild.TagPrefix = "RIO_1_E"



NUN ZU MEINEM PROBLEM:
Rufe ich diese Sache das erste mal auf Nachdem ich die Auswahlseite geöffnet habe sind alle E/As 0. Erst nach dem zweiten Öffnen des Bildfebnsters funktioniert die Sache einwandfrei. Ist das Bildfenster das erste mal geöffnet und alle E/As sind 0, so genügt auch ein nochmaliges klicken auf den jeweiligen Button zum öffnen des Bildfensters, ab dann werden alle E/A Zustände folgerichtig angezeigt.

Was kann ich hier bloß falsch machen?

P.S: Verwende des OS Projekt Editor mit Picture Tree Manager

Bin für jede Hilfe dankbar
 
Die Lösung lautet:
Code:
Dim testbild
 set testbild = ScreenItems("sys_win_EA")
 testbild.picturename("Popup_EA")
[COLOR=#ff0000]testbild.TagPrefix = "RIO_1_E"[/COLOR]
testbild.visible = true
Der Variablen-Prefix eines Fenster wird nur beim Aufruf aktualisiert oder wenn man es ein zweites mal Visible setzt.
Das heißt: Präfix vorher setzen!
Das erklärt dann auch das von dir genannte Problem.
 
Hallo Leute,
Erst nach dem zweiten Öffnen des Bildfebnsters funktioniert die Sache einwandfrei.
Bin für jede Hilfe dankbar
Hmm...:sm25:

Ich bin mir eigentlich ziemlich sicher das es irgendwo daran liegen müsste...
schon mal versucht das Fenster zuerst definitiv auf Visible=false zu setzen?

also:
testbild.visible = false
testbild.TagPrefix = "RIO_1_E"
testbild.visible = true

Ergibt sich beim ersten setzen des Fensterobjekts vielleicht ein Fehler? Sagt die Global-Sctipt-Diagnose was?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Geile Sache...

sieht ganz gut aus...bei einem kleinen Beopsiel funktionierts schonmal...werds gleich mal im feld umsetzen und melde mich dann nochmal...

Super,

das wusste ich jetzt auch nocht nicht, dass esexplitit auf false gesetzt werden muss wenn man den Präfix setzt.

Aber super schonmal, vielen Dank. Hat mir sehr gehlfen.

Ich melde mich wenn ichs im Feld komplett umgesetzt habe und es funzt.
 
Geile Sache...
das wusste ich jetzt auch nocht nicht, dass esexplitit auf false gesetzt werden muss wenn man den Präfix setzt.
Ob es jetzt explizit sein muss oder ob es hier noch einen anderen Grund gibt kann ich dir nicht genau sagen.

Was ich weiß ist, das Präfixe bei aktiven Bildfenstern nicht dynamisch übernommen werden und das Bildfenster daher neu aufgeblendet werden muss.
Wen du noch was zu dem Thema raus findest wäre ich durchaus interessiert.
 
Hallo RONIN,

also ich hab jetzt im Feld überall implementiert und es funktioniert soweit wirklich gut.
Das vorherige explizite .visible = false ist allerdings nötig, sonst hat man keine Chance, warum auch immer.
Was mir in diesem Zusammenhang allerdings aufgefallen ist ist folgendes. Wenn ich die dienende Seite (also die Grudnseite auf der sich der Button für den Aufruf des Bildfensters befindet) neu öffne, dann ist es mit dem alten Skript (ohne.visible = false) nötig das Bildfenster 2 mal zu öffnen bis Vartiablen angezeigt werden. Habe ich innerhalb dieser Seite allerdings das Bildfenster schonmal geöffnet, so gehts beim ersten mal. Ob das mal wieder so eine Eigenart von WinCC ist oder etwas was sich logisch erklären lässt vermag ich nicht zu sgen aber vielleicht kannst du mit dieser Information eine explizitere Diagnose stellen.

Ich hätte daneben aber schon wieder ein neues Phänomen welches mir heute Morgen aufgefallen ist. In dem Bildfenster selbst habe ich einige Dynamikdialoge die über den im Skript zugewisenen Variablenpräfix Elemente sichtbar/unsichtbar schalten, die Elemente sind standardmäßig auf visible FALSE gesetzt und werden durch den Dynamikdialog sichbar geschaltet. All das geschieht nach dem Öffnen des Bildfensters aber erst wenn ein MOUSEOVER über das Bildfenster erfolgt, ansonsten bleiben die Elemente unsichtbar. Es ist auch wirklich nur ein MOUSEOVER nötig, das Bildfenster muss nicht im Vordergrund aktiviert sein (also Rahmen muss nicht dunkelblau werden)
Hast du ne Idee woran das jetzt schon wieder liegen könnte?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mir in diesem Zusammenhang allerdings aufgefallen ist ist folgendes. Wenn ich die dienende Seite (also die Grudnseite auf der sich der Button für den Aufruf des Bildfensters befindet) neu öffne, dann ist es mit dem alten Skript (ohne.visible = false) nötig das Bildfenster 2 mal zu öffnen bis Vartiablen angezeigt werden. Habe ich innerhalb dieser Seite allerdings das Bildfenster schonmal geöffnet, so gehts beim ersten mal. Ob das mal wieder so eine Eigenart von WinCC ist oder etwas was sich logisch erklären lässt vermag ich nicht zu sgen aber vielleicht kannst du mit dieser Information eine explizitere Diagnose stellen.
Sorry. Selbst nach mehrfachem lesen komm ich nicht dahinter wo der Unterschied zu deinem Ursprungsproblem liegt.

Ich hätte daneben aber schon wieder ein neues Phänomen welches mir heute Morgen aufgefallen ist. In dem Bildfenster selbst habe ich einige Dynamikdialoge die über den im Skript zugewisenen Variablenpräfix Elemente sichtbar/unsichtbar schalten, die Elemente sind standardmäßig auf visible FALSE gesetzt und werden durch den Dynamikdialog sichbar geschaltet. All das geschieht nach dem Öffnen des Bildfensters aber erst wenn ein MOUSEOVER über das Bildfenster erfolgt, ansonsten bleiben die Elemente unsichtbar. Es ist auch wirklich nur ein MOUSEOVER nötig, das Bildfenster muss nicht im Vordergrund aktiviert sein (also Rahmen muss nicht dunkelblau werden)
Das wäre ja ganz was neues. WinCC und MouseOver-Funktionalitäten... :rolleyes:
Ne ernsthaft, habe ich noch nie gesehen. Wie werden den deine Dynamiken getriggert?
Von welcher WinCC-Version bzw. SP sprechen wir den hier?

Vielleicht kannst du uns ja mal ein kleines Beispiel für dieses Verhalten hochladen.
 
Hi...

Beispiel versuche ich heute Abend mal per Fernwartung zu erfassen.

Habs aber wieder ausprobiert und es ist genau wie geshcildert. Das Bildfenster geht auf und es wird nichts angezeigt. Nach Mouseover innerhalb einer Sekunde alles da.
Einen Trigger für den Dynamikdiaglog habe ich garnicht definiert, kann mE nach auch nicht definiert werden, beim Dynamikdialog handlet WinCC das doch von selbst oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
kannte ich noch nicht. Bestätigt aber sehr schön was ich so im Hinterkopf wusste - Dass das Bild neu aufgeschlagen werden muss.

Der TE und ich waren bei Variante 2. Der Link bestätigt aber die Vermutung dass man zuerst unsichtbar und dann sichtbar schalten muss.

Variante 1 erscheint einfacher. Man könnte dort aich sowas wie SetPictureName( GetPictureName ( ) ) schreiben.

via Mobile.
 
Zurück
Oben