WinCC Unified SelectCase in WinCC Unified

Wolfgang14

Level-1
Beiträge
175
Reaktionspunkte
5
Hast Du da nicht einige Tippfehler in deinem Script?
ScreeName
ActivateScrrn


Außerdem sind meiner Meinung nach Zeichenfolgenausdruck, der durchsucht werden soll und Zeichenfolge, nach der gesucht wird vertauscht.
Zudem gibt die InStr Funktion einen Positionswert, wo die gefundene Zeichenfolge beginnt zurück.
Ich frage da immer auf >0 ab.
Ob da eine einfache Abfrage ( False / True ) funktioniert ??
 
Zuletzt bearbeitet:
gehe im Script mit der rechten Maustaste auf snippets/Logik, dann passt wenigstens die syntax.
ich würde die Snippets auch benutzen um tags zu lesen/schreiben.
nix für ungut, aber dass da oben ist nicht mal im entfernt verwandt mit javascript
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hier werden gerade VBA und JavaScript verwechselt. Die WinCC Unified unterstützen kein VBA mehr, das war alles die anderen WinCC Versionen.
Du musst den gesamten Syntax in deinem Beispiel anpassen.

Da muss man sich leider etwas umgewöhnen, im ersten Moment scheint WinCC Unified viele nette Features verloren zu haben, aber umso mehr man damit arbeitet, gewöhnt man sich an das Faceplate gehabe mit JavaScripts usw. und merkt, dass es doch weit umfangreicher wird als die vorherigen Versionen.

Für JavaScript kann ich dir folgendes Dokument empfehlen:

Ebenfalls wichtig ist das dementsprechende ObjectModel:


Edit:
Könnte dann eventuell bei dir so aussehen. Ist aber ungetestet.

1657007627058.png
 
Zuletzt bearbeitet:
Hallo,

hier werden gerade VBA und JavaScript verwechselt. Die WinCC Unified unterstützen kein VBA mehr, das war alles die anderen WinCC Versionen.
Du musst den gesamten Syntax in deinem Beispiel anpassen.

Da muss man sich leider etwas umgewöhnen, im ersten Moment scheint WinCC Unified viele nette Features verloren zu haben, aber umso mehr man damit arbeitet, gewöhnt man sich an das Faceplate gehabe mit JavaScripts usw. und merkt, dass es doch weit umfangreicher wird als die vorherigen Versionen.

Für JavaScript kann ich dir folgendes Dokument empfehlen:

Ebenfalls wichtig ist das dementsprechende ObjectModel:


Edit:
Könnte dann eventuell bei dir so aussehen. Ist aber ungetestet.

Anhang anzeigen 62138
Mist du hast recht, das habe ich komplett durcheinander gehauen :rolleyes:.
Stimmt bei den älteren Panels war es noch VBA.
ich werde mir die verlinkten Links mal anschauen.

Deinen Vorschlag hab ich mal getestet scheint auch Fehlerfrei zu sein. Habe nur noch eine dumme Frage welches wäre denn jetzt meine Suchvariable die ich in meinem E/A Feld hinterlegen muss ?
 
Mist du hast recht, das habe ich komplett durcheinander gehauen :rolleyes:.
Stimmt bei den älteren Panels war es noch VBA.
ich werde mir die verlinkten Links mal anschauen.

Deinen Vorschlag hab ich mal getestet scheint auch Fehlerfrei zu sein. Habe nur noch eine dumme Frage welches wäre denn jetzt meine Suchvariable die ich in meinem E/A Feld hinterlegen muss ?

Ich bin mir jetzt nicht sicher was genau du meinst :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja die Frage war dumm, ich dachte : Ich lege mir im Header ein E/A Feld als "Suchfeld" an und benötige dafür eine Variable welche im Script auftauchen muss. Ich hatte nicht daran gedacht das Script als Ereignis zu verknüpfen. Dann brauch ich auch keine Variable.

Ich habe jetzt nur das Problem das egal was ich eingebe Also ob 813P001 oder 813P002 es wird mir immer das Bild Brunnen1 geöffnet anstatt bei 813P002 das Bild Brunnen2Unbenannt.JPG
 
Du musst die CompareName1 und CompareName2 Variable natürlich mit unterschiedlichen Strings füttern.
Momentan hast du ja bei beiden denselben Wert zugewiesen.

Dadurch ist die erste Bedingung dann auch immer erfüllt und es öffnet sich Brunnen 1.
 
... nix für ungut, aber dass da oben ist nicht mal im entfernt verwandt mit javascript
Vorbehaltlich der Frage, ob hier überhaupt VBA bzw. eigentlich VBS gefragt ist ...
Hast Du da nicht einige Tippfehler in deinem Script?
Ja, die 3 verschiedenen Schreibweisen des recht übersichtlichen Begriffs 'Screen', nämlich mit den Varianten 'Scrren' und 'Scree' sind schon sehr auffällig.
Meines Wissens werden in keiner ProgrammierSprache solche Variationen toleriert bzw. als gleichbedeutend angesehen. In dieser Beziehung ist ganz allgemein beim Programmieren ein Bisschen mehr Präzision erforderlich!
Außerdem sind meiner Meinung nach Zeichenfolgenausdruck, der durchsucht werden soll und Zeichenfolge, nach der gesucht wird vertauscht.
In VBA bzw. VBS passt die Reihenfolge der Parameter. Zuerst der String, in dem gesucht wird, dann der String, nach dem gesucht wird.
Genau umgekehrt ist es z.B. bei den ExcelTabellenblattFunktionen 'Suchen' und 'Finden'.
Zudem gibt die InStr Funktion einen Positionswert, wo die gefundene Zeichenfolge beginnt zurück.
Ich frage da immer auf >0 ab.
Ob da eine einfache Abfrage ( False / True ) funktioniert ??
In VBA und vermutlich auch in VBS funktioniert das. Ist der abgefragte Wert <>0, so wird das als True gedeutet, ohne dass unpassende DatenTypen bemeckert werden.
Übrigens hat in VBA True den Wert -1 im Gegensatz zu 1 in manchen anderen Sprachen.
Ich bin mir jetzt nicht sicher was genau du meinst :)
Komisch, ich bin mir sicher, dass ich nicht weiss, was er meint ... ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst die CompareName1 und CompareName2 Variable natürlich mit unterschiedlichen Strings füttern.
Momentan hast du ja bei beiden denselben Wert zugewiesen.

Dadurch ist die erste Bedingung dann auch immer erfüllt und es öffnet sich Brunnen 1.
Wie genau meinst du das mit unterschiedlichen Strings füttern ? ^^
 
Ich muss @Heinileini recht geben, bei der Programmierung etwas mehr Präzision wäre super ;).

1657021993282.png

Eventuell musst du etwas genauer schauen.
Es wird im Endeffekt in die Variable "ScreenName" der Name des aktuellen Bildes abgefragt. Dieser wird vermutlich immer gleich sein.

In der "CompareName1" wird dein langer String gespeichert, dieser wird in der ersten If-Bedingung abgefragt und überprüft ob dein aktueller Bildname aus der Variable "ScreenName" in deiner Variable "CompareName1" enthalten ist, ist dies der Fall, dann wird das Bild Brunnen 1 geöffnet.

Dasselbe passiert in der else-if-Bedingung, nur dass dort auf "CompareName2" geachtet wird.
Wenn die beiden Variablen "CompareName1" und "CompareName2" gleich sind, dann zieht immer die erste If-Bedingung.

Für mich stellt sich eher die Frage, willst du auf den aktuellen Bildnamen prüfen ober auf den Namen bzw. Inhalt deines E/A-Felds??
 
ich möchte darauf prüfen was in meinem E/A Feld steht also wenn ich dort 813P001 eingebe soll er mir Brunnen1 öffnen gebe ich zum Beispiel 813P002 ein dann soll sich die Seite Brunnen2 öffnen.
Später würde ich das dann erweitern wollen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich möchte darauf prüfen was in meinem E/A Feld steht also wenn ich dort 813P001 eingebe soll er mir Brunnen1 öffnen gebe ich zum Beispiel 813P002 ein dann soll sich die Seite Brunnen2 öffnen.
Später würde ich das dann erweitern wollen
Aber jetzt prüfst du den Bildername, nicht den Wert der E/A Feldes.
 
Sie sind aber nicht gleich.
In einer IF-ELSIF..."Kette" zieht immer die erste Bedingung, die erfüllt ist.
Dankesehr, über die Präzision aufgeregt und gleich selbst verlesen. Die Strings sind natürlich unterschiedlich :)

Wie gesagt prüfst du momentan den Bildnamen.
Um den Wert aus dem EA-Feld zu nehmen könntest du folgendes versuchen:

Ersetzt HMIRuntime.UI.ActiveScreen.DisplayName mit item.ProcessValue.

Mfg
 
So ist das leider ganz falsch. Falls du noch mehrere Sachen brauchst wäre es gut wenn du dich etwas mit JavaScript beschäftigst, ansonsten wird das sehr schwierig werden.

Du willst der Variable ScreenName den Wert des E/A-Feldes zuweisen und nicht dem E/A-Feld den Wert "strBildname".

Somit musst du deine Zeile:

item.ProcessValue = "strBildname";

einfach ersetzen mit:

let ScreenName = item.ProcessValue;
 
So ist das leider ganz falsch. Falls du noch mehrere Sachen brauchst wäre es gut wenn du dich etwas mit JavaScript beschäftigst, ansonsten wird das sehr schwierig werden.

Du willst der Variable ScreenName den Wert des E/A-Feldes zuweisen und nicht dem E/A-Feld den Wert "strBildname".

Somit musst du deine Zeile:

item.ProcessValue = "strBildname";

einfach ersetzen mit:

let ScreenName = item.ProcessValue;
Ja ich werde jetzt anfangen mich etwas genauer damit zu beschäftigen :).
Danke für die Hilfe jetzt funktioniert es
 
Zurück
Oben