# WinCC flexible, ereignissgesteuert bild öffnen



## Lord Cartman (8 September 2010)

Hallo zusammen,

hab momentan ein kleines Problem bei der Visualisierung mit WinnCC flexible. Das ganze läuft auf einer S7-1200 ab mit dem Tia Portal V10.5.
In der HMI Projektierung befinden sich 2 Bilder. Das erste Bild (Startbild) wird nach jedem Neustart angezeigt. Über einen Barcodescanner wird ein Code eingelesen der anschließend hier angezeigt wird. Nachdem dort eine Code erscheint, soll ein neues Bild geöffnet werden, auf dem andere Barcodes eingescannt werden.
Das Problem hierbei ist, das ich zwar über einen Button in das nächste Bild springen kann, jedoch ist das auch möglich, wenn noch kein Code eingelesen wurde.

Hat jemand vlt eine Idee wie man eine Art Bedingung dazu definieren kann?

Bin dankbar über jeden Vorschlag


----------



## Mertin (8 September 2010)

Lass das umschalten des Bildes doch über deine SPS laufen und setze dann einen Merker oder was dir beliebt in eine UND-Verknüpfung vor den Schritt, um das nächste Bild aufzurufen.

Ansonsten gibt es ja gewiss noch irgendwelche Skripts, wobei ich da leider nicht so bewandert bin, die diesen Vorgang innerhalb des TP´s tätigen.


----------



## Larry Laffer (8 September 2010)

... es ist immer schön, wenn man weiß, womit der Andere arbeitet - Bediengerät ?

Aber generell ... dein gescannter Barcode landet doch wohl in einem Eingabefeld. Hier kannst du "bei Wertänderung" z.B. auch das nächste Bild aufrufen ...

Gruß
Larry


----------



## Mertin (8 September 2010)

Die zweite Frage die du uns beantworten solltest wäre die, ob das Bild von alleine wechseln soll, so wie Larry es Vorgeschlagen hat oder ob es zusätzlich noch eine Schaltfläche gibt um auf das nächste Bild zu springen.


----------



## Lord Cartman (9 September 2010)

Zuerst mal danke für die schnelle antworten.
Die Idee mit einer UND verknüpfung kam mir auch schon, nur weis ich nich wie ich das in die Visualisierung reinbringen kann, hab mit WinCC noch nich so viel erfahrung sammeln können.
Ein Merker is dafür schon angelegt, nur wie kann ich den mit dem Bild verknüpfen?



Larry Laffer schrieb:


> ... es ist immer schön, wenn man weiß, womit der Andere arbeitet - Bediengerät ?
> 
> Aber generell ... dein gescannter Barcode landet doch wohl in einem Eingabefeld. Hier kannst du "bei Wertänderung" z.B. auch das nächste Bild aufrufen ...


also die sonstige hard-und software besteht aus einem Barcodescanner vom Typ Motorrola LS3408 und einem Laptop mit WindowsXP.
Der Barcode landet in einem Ausgabefeld,da er die Daten aus einem DB liest und nur ausgeben muss. Theoretisch könnt das Feld auch auf Eingabe/Ausgabe gestellt werden. Wo lässt sich anschließend dann die Funktion "bei Wetränderung" finden? Ich such immer unter Erreignisse und "Aktiviere Bild".

Der Idealfall wäre, wenn das Bild automatisch bei Wertänderung wechselt. Den Button hatte ich nur hinzgefügt, da mir sonst keine andere idee kam das bild überhaupt zu wechseln. wie gesagt: mangelnde erfahrung


----------



## Larry Laffer (9 September 2010)

Hallo,
ich wollte wissen, welches Bediengerät du verwendest - liest du die Beiträge nicht richtig ?

Das Ereignis geht IMMER von von der Quelle aus und nicht von dem Ziel ... es wird also von der Variablen (die an dem Eingabefeld hängt) ausgelößt ...

Gruß
Larry


----------



## Lord Cartman (9 September 2010)

Moin,
falls du mit Bediengerät das Panel meinst, dann handelt es sich hierbei um das KTP400. Die SPS ist die 1211.


----------



## Sinix (9 September 2010)

Lord Cartman schrieb:


> Theoretisch könnt das Feld auch auf Eingabe/Ausgabe gestellt werden. Wo lässt sich anschließend dann die Funktion "bei Wetränderung" finden? Ich such immer unter Erreignisse und "Aktiviere Bild".
> 
> Der Idealfall wäre, wenn das Bild automatisch bei Wertänderung wechselt. Den Button hatte ich nur hinzgefügt, da mir sonst keine andere idee kam das bild überhaupt zu wechseln. wie gesagt: mangelnde erfahrung



Idealfall sollte doch funktionieren:

HMI >> 
HMI-Variablen >> 
"Barcodevariable" anklicken >> 
im Eigenschaftsfenster "Ereignisse" >> 
Wertänderung >> 
unter Funktion hinzufügen "AktiviereBild"


----------



## Lord Cartman (9 September 2010)

Supi, das wars schon. Hatte vorher immer in der grafischen Programmierung versucht das Ereigniss zuzuweisen, was ja nich ging.
Auf die Idee in den HMI-Variablen was zuweisen zu können bin ich leider nich gekommen.

Vielen Dank


----------



## Lord Cartman (14 September 2010)

Muss leider noch eine Frage hinterherlegen:

Ich wollts jetzt so machen, dass die CPU nach einem Neustart automatisch wieder in das erste Bild wechselt. Das Panel zeigt nach dem Neustart ja immernoch das zweite Bild, in das wir vorher gesprungen sind.

Dachte mir dafür in einem Anlauf OB100 ein Merker zu setzen und bei dessen Wertänderung wieder das startbild aufrufen zu lassen.
Das Panel ruft bei Neustart das Startbild zwar auf, jedoch kommt kurz darauf wieder sofort das zweite Bild. Der notwendige Merker um das zweite Bild zu setzen, ist nach dem Neustart aber noch '0'.

*Nachdem die HMI-Projektierung erneut geladen wurde, erscheint zwar auch das Startbild, wirft aber "unnötigen" Aufwand auf.


Bin wieder über jede Idee dankbar


----------



## Mertin (14 September 2010)

Wahrscheinlich lese ich falsch, aber wie setzt du das Bild am Anfang denn?

Hast du einen Bereichszeiger angelegt in einem Db (oder dergleichen) und rufst dann in deinem SPS Programm darüber ein neues Bild auf.

Oder

Fragst du in deinen Variablen ab ob der Bit "0" oder "1" ist und setzt demnach das neue Bild?

Evtl. Wird das "Startbild" ja nur für die Sekunden aufgerufen wie der Wert 1 ist und nicht dauerhaft.


----------



## Lord Cartman (15 September 2010)

also das Bild wird gesetzt, indem der HMI-Variablen ein ereigniss bei wertänderung zugewiesen wird. 
Also zweite variante^^

das startbild erhält dauerhaft den wert '1', da das bit erst gesetzt wird, wenn der anwender einen barcode abscannt.


----------



## Larry Laffer (15 September 2010)

... ich weiß nicht, was du dir da zurecht gebastelt hast ... aber eine Wertänderung ist nicht nur "von 0 -> 1" sondern auch "von 1 -> 0" ...!!!
Vielleicht liegt es ja da dran ...

Gruß
Larry


----------



## rostiger Nagel (15 September 2010)

nimm doch nur eine Variabel für die Bildansteuerung. Da nimmst du dann 
eine INT Varariabel. Da schreibst du dann die Bild Nr. rein die du aufrufen
möchtest und machst in Flex bei dieser Variabeln die Funktion "Bildaufruf
mit Bild Nr.", diese Nr ist dann gleichzeitig deine Variabel.
So hast du den Vorteil das du da keine überschneidung bekomst, da nur
eine wertänderung durchgeführt wird.


----------



## Lord Cartman (16 September 2010)

Stimmt, gute idee mit den Bildnummern.
Versuch ich direkt ma


----------



## Lord Cartman (16 September 2010)

Helmut_von_der_Reparatur schrieb:


> Da schreibst du dann die Bild Nr. rein die du aufrufen möchtest und machst in Flex bei dieser Variabeln die Funktion "Bildaufruf mit Bild Nr.", diese Nr ist dann gleichzeitig deine Variabel.


 
Hab jetz mal ein Netzwerk erstellt was 3 verschiedene Integer generiert. Die Werte werden auch wie geplant erzeugt und ggf geändert.
Unter den HMI-Variablen hab ich dann dieser Variable das ereigniss "AktiviereBildMitNummer" zugefügt. Als Bildnummer wird die obige integer-variable eingefügt.
Die integer werte die generiert werden entsprechen auch den bildnummern die aufgerufen werden soll, trotzdem tut sich beim durchlauf anschließend nichts.

Muss man vlt noch in den bildern selber die variable mit einbinden oder sonstige einstellungen vornehmen?


----------



## rostiger Nagel (16 September 2010)

nein du must bei den Eigenschaften der Variabel in Flexibel 
den Triggerpunkt auf ständig lesen stellen.


----------



## Lord Cartman (16 September 2010)

ma ne dumme frage: wo findet sich diese einstellung?


----------



## rostiger Nagel (16 September 2010)

.....hier.....


----------



## Lord Cartman (16 September 2010)

Ach dort. Da hatte ich schon "Zyklisch im Betrieb". Die Einstellung bringt ja aber nur was wenn die variable auch in dem bild verwendet wird (ist aber nicht der fall). 
Mit Zyklisch fortlaufend gehts endlich 

Vielen Dank für die Hilfe


----------



## geza (16 September 2010)

Lord Cartman schrieb:


> ma ne dumme frage: wo findet sich diese einstellung?


 Hallo,
Du markierst die Variable in der Variablenliste. Im Register "Allgemein" steht Erfassungsart. Auf "Zyklisch fortlaufend" stellen. Gleich darunter ist der Erfassungszyklus mit dem Du bestimmen kannst, wie oft die Variable Aktualisiert werden muß.

Gruß: Geza


----------



## Lord Cartman (16 September 2010)

ok, habs mitlerweile gefunden und erfolgreich getestet


----------



## Verpolt (16 September 2010)

Hallo,

Anbei mal ein Beispiel der Bildauswahl über Steuerungsauftrag 51

Auftragsfach anlegen -> im DB 

Auftragsfach in WinCC flex aktivieren -> Bereichszeiger

Auftrag anstoßen im Programm




Grüße


----------

