# [Bildbausteine] Skripte, wie funktioniert das?



## rostiger Nagel (3 Juni 2011)

Hallo, 
hat sich hier schon jemand mal mit den Bildbausteinen und deren Scriptfunktionalität beschäftigt.
Ich möchte mir mit einen Bildbaustein ein "Radio Button" erstellen und diesen innerhalb des BB 
über ein Script Dynamisieren. Irgendwie bekomme ich das Script aber nicht gestartet (glaube ich). 
Hätte da jemand ein paar Brauchbare Tip's für mich?

vielen Dank im Voraus
Helmut

PS. Plattform ist WinCCflexibel 2008 SP2


----------



## rostiger Nagel (3 Juni 2011)

Eine kleinen Schritt bin ich weiter, ich kann jetzt ein Script starten, aber
nicht auf der Weise wie ich möchte. Ich möchte das Script im BB bei Wert-
änderung einer Variabeln durchführen. Wenn ich die Variabel außerhalb des
BB trigger, geht es nicht. Wird Sie innerhalb des BB, zb durch Tastendruck
geändert läuft das Script ab. Besteht eine Möglichkeit das Script durch ein 
Ereignis von außen des BB zu starten?


----------



## Larry Laffer (3 Juni 2011)

Hallo Helmut,
du mußt den BB erstmal autark betrachten. Das Script kann also nur durch eine Variable des BB's selbst getriggert werden.
Du kannst hier aber Property-Variablen anlegen, die du dann bei Verwendung des BB's mit den "wirklichen" Flex-Variablen beschaltest. Diese Property-Variable kannst du dann natürlich auf Wertänderung überprüfen und damit dann das Script starten ...

Gruß
Larry


----------



## rostiger Nagel (3 Juni 2011)

Hallo Larry,
eigentlich habe ich es so gemacht wie du es beschrieben hast, aber das
Script wurde bei Wertänderung nicht gestartet. 

gruß helmut


----------



## Larry Laffer (3 Juni 2011)

Du hast die Variable des BB, die du unter "meine Eigenschaften" angelegt hast auch für extern (mit dem Blitz) freigeschaltet ?
Wenn du den BB auf einer Seite verwendest dann erhälst du dort unter der "Dynamischen Schnittstelle" in der Rubrik "meine Eigenschaften" die Listboxen angeboten in denen du dann deine Flex-Variablen eintreagen kannst ?


----------



## rostiger Nagel (3 Juni 2011)

Jawohl, genauso habe ich es gemacht, aber das Script wird nicht gestartet.
Ich habe sogar extra eine externe Var angelegt.


----------



## Larry Laffer (3 Juni 2011)

... kannst du mal einen Screenshot von der Konfiguration des BB mit der Ansicht der "Eigenschaften" und aufgeklappten Menue's machen ?

Wird die Variable, den sonst weiterhin (für Animation) verwendet oder nur im Script ? Falls du sie nicht für irgendeine Animation im BB verwendest könnte es sein, dass sie gar nicht aktualisiert wird.


----------



## rostiger Nagel (3 Juni 2011)

Screenshot mache ich morgen, bin schon zuhause. Aber die Anbindung ist das script,
wo dann je nach inhalt der Variabeln im Script eine interne BB Variabel auf einen bestimmten
Wert für eine Animation gestellt wird.


----------



## Larry Laffer (3 Juni 2011)

... was ist mit der Aktualisierung ?


----------



## centipede (3 Juni 2011)

Baue mal die Triggervariabel in ein E/A-Feld im Bild (nicht in den BB) ein.

Alternativ kannst du die Triggervariabel auch auf Zyklische Aktualisierung stellen, bei "Aktualisierung bei Verwendung" funktioniert es nicht.

Ich hatte das Problem auch schon einmal. Dachte das Problem gibt es schon nicht mehr.


----------



## Larry Laffer (3 Juni 2011)

Also dazu muß ich sagen, dass den BB von mir, den ich hierfür jetzt mal Referenz genommen habe, die fragliche Variable auch anzeigt. Sie wird allerdings nirgends direkt auf einer Anzeige verwendet und steht auch auf "zyklisch bei Verwendung".

Also nochmal ... Helmut, wie verwendest du die Variable sonst noch ?


----------



## rostiger Nagel (3 Juni 2011)

Also nochmal:
Ich habe eine Eigenschaft angelegt "Trigger", hier den "Blitz" scharf geschaltet
und da ein Ereigniss bei Wertänderung das Script angebunden. 
Im Script selber Stelle ich eine lokale BB Variabel, in abhängigkeit von der
Eigenschaft "Trigger".
An der Schnittstelle des BB habe ich dann an der Eigenschaft "Trigger" eine 
Variabel angelegt, die dann über eine Button auf der Oberfläche invertiere. 

Jetzt habe ich innerhalb des BB eine Taste angelegt, wo ich die Propertie "Trigger"
invertiere, damit wird dann das Script ausgeführt.

Die variabel wird zZ nur zum Aufruf des Script und im Script selber genutzt.

Die variabel die ich angebunden habe ist auf Verwendung gestellt nicht auf zyklisch 
fortlaufend. Eine weitere Frage dazu wäre, wenn ich eine interne nehmen würde
( was ich eigentlich möchte ), geht das auch nicht?


----------



## Larry Laffer (3 Juni 2011)

Man liest und beantwortet manchmal, was man so möchte ... 


Larry Laffer schrieb:


> Wird die Variable, den sonst weiterhin (für Animation) verwendet oder nur im Script ? Falls du sie nicht für irgendeine Animation im BB verwendest könnte es sein, dass sie gar nicht aktualisiert wird.


 
Mein "Nochmal" bezog sich auf die Animation ... und das hast du immer noch nicht beabtwortet. Ich könnte mir vorstellen, dass bei einem BB der Querschluß von der Scriptverwendung zum Aktualisieren NICHT gemacht wird.

Wenn das Folgende allerdings die Antwort war dann würde ich vorschlagen entweder das mit der Aktualisierung (zyklisch fortlaufend) oder das mit der Animation mal zu versuchen.


Helmut_von_der_Reparatur schrieb:


> Die variabel wird zZ nur zum Aufruf des Script und im Script selber genutzt.


 
Ob eine BB-interne Variable auch ein Script (bei Wertänderung) aufrufen kann habe ich noch nicht ausprobiert. Ich könnte mir gut vorstellen, dass hier auch wieder die "Loop-Breaker"-Philosophie zieht - weiß es aber nicht. Aber das kannst du doch leicht ausprobieren ... Allerdings ... wie bekommst du dann das Ergebnis deines BB's wieder nach "draussen" ?


----------



## rostiger Nagel (3 Juni 2011)

Larry Laffer schrieb:


> Mein "Nochmal" bezog sich auf die Animation ... und das hast du immer noch nicht beabtwortet. Ich könnte mir vorstellen, dass bei einem BB der Querschluß von der Scriptverwendung zum Aktualisieren NICHT gemacht wird.
> 
> Wenn das Folgende allerdings die Antwort war dann würde ich vorschlagen entweder das mit der Aktualisierung (zyklisch fortlaufend) oder das mit der Animation mal zu versuchen.



Larry ich habe doch schon zweimal geantwortet 
Die Anbindung ist das Script, sonst nichts. Aber ich werde die zwei Varianten
Morgen mal versuchen, Änderung der Aktualisierung oder Anbindung an etwas
anderen wie nur das Script. 



Larry Laffer schrieb:


> Ob eine BB-interne Variable auch ein Script (bei Wertänderung) aufrufen kann habe ich noch nicht ausprobiert. Ich könnte mir gut vorstellen, dass hier auch wieder die "Loop-Breaker"-Philosophie zieht - weiß es aber nicht. Aber das kannst du doch leicht ausprobieren ... Allerdings ... wie bekommst du dann das Ergebnis deines BB's wieder nach "draussen" ?



Neh es soll keine Scriptinterne Variabel sein, auf die der BB reagieren soll. Es
soll eine Globale interne Variabel allgemein von flex sein, die dann über die
Schnittstelle das Script aufruft.


----------



## rostiger Nagel (4 Juni 2011)

So nach einigen Rumgefummel, habe ich es doch hinbekommen und sieht 
als Beispiel wie folgt aus:




Die Bildbausteine sind aber sehr.....sehr schlecht in der Hilfe Dokumentiert,
das meiste bekommt mann nur durch "try and Error" heraus.
Mit den script Aufruf, habe ich jetzt so gelöst das ich eine Globale Bool
Variabel mit Steuerungsanbindung habe, die ich bei Ereignisse im BB in-
vertiere, das Script wird bei Wertänderung diese Variabel aufgerufen.

Das Script direkt aufrufen, z.b. bei Wertänderung des Eingabefeldes 
funktioniert nicht. Eine Globale interne HMI Variabel zu nutzen funktioniert
nicht.

Vorsicht ist auch geboten wenn etwas am BB geändert wird, z.b. die Schnittstelle
nach außen. Am besten ist es den BB aus der oberfläche zu löschen und 
dann eben wieder neu reinzuziehen.
Das gleiche gilt auch mal eben per "drag and drop" zu kopieren, haut auch
nicht hin, besser neu aus der Biblothek ziehen.

Eigentlich sind die BB eine super sache, vom Gedanken her, aber das ganze
ist von Siemens, mal wieder schlecht und Lieblos ausgeführt.


----------



## centipede (4 Juni 2011)

Also sind die Probleme immer noch die selben, entspricht ja eigentlich dem was ich geschrieben habe.
Das mit dem Kopieren funktioniert manchmal, manchmal auch wieder nicht.
Hat dann den Effekt, dass einige BBs funktionieren, andere wieder nicht.
Hatte damals ein Projekt mit Förderketten, Weichen und Stoppern. Alles als BB realisiert. Kamen dann Riesenprobleme mit der Anzahl der laufenden Scripte auf dem Panel.
Problem war, dass nicht nur die Scripte bearbeitet werden, die auf dem Bild sichtbar sind, sondern immer alle Scripte im Hintergrunde bearbeitet werden, und dafür gibt es Grenzen.
Musste extra ein größeres Panel verbaut werden.
Ich gebe dir Recht die Idee mit den BB ist gut, aber äußerst schlecht realisiert.


----------



## daschris (4 Juni 2011)

hi
ja das sind die probleme die es schon immer bei den bb gibt. das mit dem aufruf bei aenderung geht schon allerdings muss die variable im bb verwendet werden ...und scripte zaehlen da leider nicht. ich verbinde das tag einfach mit einen ea feld und verstecke es im bb...das geht bei mir immer. 

und das mit dem kopieren geht aber mittlerweile ganz gut da es die funktion "instanz aktualisieren" gibt...danach sollte es gehen 

klingt zwar komisch ist aber so


----------



## Larry Laffer (6 Juni 2011)

Hallo Helmut,


Helmut_von_der_Reparatur schrieb:


> Mit den script Aufruf, habe ich jetzt so gelöst das ich eine Globale Bool
> Variabel mit Steuerungsanbindung habe, die ich bei Ereignisse im BB in-
> vertiere, das Script wird bei Wertänderung diese Variabel aufgerufen.


Mich würde es hier einmal interessieren, warum es bei diesem Objekt sinnvoll sein könnte, ohne eine Steuerungs-Variable zu arbeiten.
Außerdem ... wieso muß das Script unbedingt an der "Wert-Änderung" hängen ? Du mußt da doch Schaltflächen (ggf. unsichtbare) drin haben, die etwas machen. Warum rufen die dann nicht das Script auf ?



Helmut_von_der_Reparatur schrieb:


> Das Script direkt aufrufen, z.b. bei Wertänderung des Eingabefeldes
> funktioniert nicht. Eine Globale interne HMI Variabel zu nutzen funktioniert
> nicht.


Das sollte doch auch allgemein bekannt sein (die Loop-Breaker-Geschichte). Ich miente da aber auch etwas anderes ... du kannst ja auch noch BB-Variablen (nicht Script-Variablen) erzeugen. Da vermute ich das mit dem Loop-Breaker nur - weiß es aber nicht ...

Gruß
Larry


----------



## rostiger Nagel (6 Juni 2011)

Hallo Larry,
alleine der Tastendruck reicht mir nicht aus, ich verabeite im Script, wie
die Dartstellung sein soll, dieses muss dann natürlich erfolgen, bevor der
Bediener eine Taste getätigt hat. Jetzt habe ich eine Globale Variabel, die 
schon einmal beim Bildaufschlag Triggern kann.

Mit dem Loopbreacker war mir bekannt, es hätte ja sein können das es bei
BB anders gehandhabt wird.

gruß Helmut


----------

