WinCC Geänderte Objekt Eigenschaften in WinCC RT Advanced v15.1 bei Seitenwechsel beibehalten

RosiBro

Level-1
Beiträge
54
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich möchte gerne Objekteigenschaften dynamisch über ein VBScript verändern. Konkret geht es um die Bedienbarkeit von Schaltflächen, die sich aber auf unterschiedlichen Bildern befinden. Diesen soll, wenn ein emergency Switch aktiviert ist, die Bedienbarkeit entzogen werden. Und wenn er nicht aktiviert ist, sollen sie Bedienbar sein.

Gespeichert wird der Zustand des Emergency Switches in einer PLC-Variablen. Der Button befindet sich in der Vorlage für alle Bilder (ist also auf allen Seiten sichtbar).

Wenn sich der Zustand des Switches (Eigenschaften -> Ereignisse -> Wertänderungen) ändert oder wenn ich eine neue Seite lade (Eigenschaften -> Ereignisse -> aufgebaut) soll also das Skript aufgerufen werden und der Zustand des Switches ausgelesen und die Bedienbarkeit gesteuert werden.

Das Script sieht aus dem Kopf (habe es gerade nicht vor mir liegen)
Code:
Sub Bedienbarkeit()

Dim operable

operable = Not Smarttags(“emergencySwitch”)

‘Buttons on screen1
Set objButton1 = HmiRuntime.Screens(“Screen1”).screenItems(“Button1”)
objButton1.Enable = operable

Set objButton2 = HmiRuntime.Screens(“Screen1”).screenItems(“Button2”)
objButton2.enable = operable

‘Buttons on screen2
Set objButton3 = HmiRuntime.Screens(“Screen2”).screenItems(“Button3”)
objButton3.enable = operable


Set objButton4 = HmiRuntime.Screens(“Screen2”).screenItems(“Button4”)
objButton4.enable = operable

End Sub


Die Probleme:

1. Die Aktualisierung beim Seitenwechsel funktioniert nicht. Wenn die Knöpfe einen vom Ausgangszustand veränderten Wert haben, verlieren sie ihn nach dem Seitenwechsel. Das obige Vorgehen entspricht allerdings dem im Siemens Support beschriebenen:

2. Was noch ein Hinweis darauf sein könnte, worin der Fehler liegen könnte: das Verhalten der Knöpfe ist genau invertiert. D.h. Wenn
Code:
Smarttags(“emergencySwitch”) = True
, also der Notschalter aktiviert ist, ist ebenfalls
Code:
enable = True
. Wobei es ja genau andersherum sein sollte (deswegen das
Code:
Not
im Script. Nehme ich das allerdings weg, ist das Verhalten genau andersherum.


Irgendwie stehe ich auf dem Schlauch und weiß nicht, wo ich suchen soll.
Projektiert ist das Ganze in TIA Portal v15.1. Laufen tut es auf einem Open Controller der ersten Generation WinCC RT Advanced v15.1

Danke für eure Hilfe.
 
Ich möchte gerne Objekteigenschaften dynamisch über ein VBScript verändern. Konkret geht es um die Bedienbarkeit von Schaltflächen, die sich aber auf unterschiedlichen Bildern befinden. Diesen soll, wenn ein emergency Switch aktiviert ist, die Bedienbarkeit entzogen werden. Und wenn er nicht aktiviert ist, sollen sie Bedienbar sein.
Hallo

Ich habe jetzt gerade kein TIA zur Verfügung, doch bei der Animation der Bedienbarkeit kann man doch projektieren, daß ein Objekt bedienbar ist, wenn eine Variable = 0 ist, oder wenn eine Variable = 1 ist (oder wenn eine numerische Variable irgendweche Werte hat). Für das invertieren der Bedingung brauchst Du kein Skript.

Animiere die Bedienbarkeit der Buttons ganz normal über HMI-Variablen. Die HMI-Variablen "überleben" die Bildwechsel, und nach Bildwechsel werden die Buttons "ganz von alleine"/ganz ohne Skripte erneut korrekt animiert. Die WinCC Advanced RT ist nicht dafür gemacht, alles mögliche mit Skripten zu realisieren. Wenn die Abhängigkeiten für Deine Animationen für das HMI zu komplex werden, dann mache die Verknüpfungen ganz in der SPS und weise das Ergebnis für jedes HMI-Objekt einer eigenen HMI-Variable zu.

Warum willst/musst Du die Bedienbarkeit von Buttons animieren/einschränken? Im SPS-Programm musst Du doch sowieso die Button-Bits mit Bedingungen verknüpfen, so daß ein zur Unzeit gedrückter Button im Fall der Fälle einfach nichts bewirkt. Zusätzliche aufwendige Bedien-Verriegelungen im HMI sind meiner Meinung unnötiger Luxus. "Richtige" Hardware-Bedienbuttons können auch nicht unsichtbar oder unbedienbar gemacht werden.

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir machen das auch über Variablen, in Abhängigkeit des eingeloggten Benutzers bzw. der Benutzergruppe. Da braucht es kein Script.

@PN/DP
Es ist schonn ein Vorteil, wenn man von vornherein sehen kann, ob der Button bedienbar ist oder nicht. Das kann man auch über Farben symbolisieren, die man von der SPS aus je nach benutzergruppe vorgibt. Aber ist schon aufwendig, deshalb mache ich das nicht immer. Wenn nciht Bedienbar, geht ja zumindest das Passwortfenster auf.
 
Warum willst/musst Du die Bedienbarkeit von Buttons animieren/einschränken? Im SPS-Programm musst Du doch sowieso die Button-Bits mit Bedingungen verknüpfen, so daß ein zur Unzeit gedrückter Button im Fall der Fälle einfach nichts bewirkt. Zusätzliche aufwendige Bedien-Verriegelungen im HMI sind meiner Meinung unnötiger Luxus. "Richtige" Hardware-Bedienbuttons können auch nicht unsichtbar oder unbedienbar gemacht werden.
Hallo Harald,

das Problem ist dann aber, dass die Bediener anfangen, wild auf den (allen?) Schaltflächen rumzudrücken, weil sie keine Rückmeldung erhalten, WARUM die gewünschte Funktion nicht verfügbar ist.
Klar könnte man dies dann über Statusrückmeldevariablen aus der Steuerung realisieren, dies bedeutet dann aber wieder die Projektierung von Meldungen, zusätzlichen Variablen o.ä. Dann doch lieber gleich im HMI quasi an der Quelle abgefangen und behandelt.

Stichwort "ausgrauen", wenn nicht bedienbar
Genauso mache ich das an vielen Stellen, ist ja nicht erst seit gestern auch quasi ein Standard bei Betriebssystemen und Desktop-SW.
Häufig -gerade wenn ich dem Bediener komplexe Zusammenhänge zu einer Funktion erläutern muss/möchte- lasse ich eine Schaltfläche auch "enabled", zeige aber bei Betätigung ein Popup mit Hinweisen an.

Das Problem bei WinCC Adv./Comfort/Basic ist aber, dass es ein simples "enabled = false" nicht gibt! Man muss umständlich mit Hilfsgrafiken, Gestaltung und Sichtbarkeit hantieren.


Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey ihr alle,
Danke euch für die guten Beiträge. Irgendwie hatte ich den Animationsbereich vergessen.
Habe es jetzt dort - wie von euch vorgeschlagen - inklusive Ausgrauens umgesetzt. :)

Danke euch auch für eure inhaltliche Diskussion und Beiträge, was ihr wie warum umsetzt. Ich bin ja nicht vom Fach, deswegen finde ich es immer spannend, wenn ihr da eure Erfahrungen und Ansichten teilt. Danke dafür!
 
Zurück
Oben