TIA Bilder über Variable wechseln

winke

Level-2
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe bei meinem HMI (KTP400 Version 2) 2 Bilder erstellt, einmal das Grundbild, was als Startbild definiert ist und ein zweites Bild.
Das zweite Bild würde ich gerne dann anzeigen, wenn eine Variable auf 1 ist. Die Variable lies ich über einen Merker einer Logo ein.
Sobald die Variable wieder 0 ist, soll das Startbild wieder angezeigt werden.

Hab es schon über die Sichtbarkeit der Bilder und über ein Ereignis direkt in der Variable probiert, funktioniert aber leider nicht.

Hab im Internet gelesen das man es über ein Skript lösen kann, finde den Punkt Skript im Tia Portal aber leider nicht, kann das meine KTP400 das?

Danke schonmal für die Hilfe
 
Es geht recht einfach, du brauchst dafür eine Variable ( nicht BOOL )

Diese Variable stellst du auf Erfassungsart "zyklisch fortlaufend"
An dieser Variable Projektierst du unter "Wertänderung" die Funktion "aktiviere Bild mit Nummer" und gibst bei Nummer deine Variable ein.

Dann wechselst du z.B. die Variable auf 2, WinCC erkennt eine Wertänderung, führt die Funktion "aktiviere Bild mit Nummer" aus und nimmt als gewünschtes Bild die Bildnummer 2.

und über ein Ereignis direkt in der Variable probiert, funktioniert aber leider nicht.
Vermutlich hast du vergessen, die Erfassungsart deiner Variable auf "zyklisch fortlaufend" zu stellen. Wenn du das nicht gemacht hast, dann wird kein Ereignis Wertänderung erkannt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das Problem ist nur, ich habe mehrere HMIs, die sollen wenn der Merker auf der LOGO auf 1 ist alle auf das Bild schalten und das auch wieder machen wenn sie Stromlos waren.
 
ist alle auf das Bild schalten und das auch wieder machen wenn sie Stromlos waren.
Ja mei, Panels starten grundsätzlich im Startbild. Dass sie wieder in das gewünschte Bild zurückgehen dürfte in der Kombination Logo/Basic schwierig werden.

Du könntest in jedem deiner Bilder eine Variable mit der aktuellen Bildnummer beschreiben ( also z.B. bei Bild 2 => Bildaufbau => Setze Wert einer Variable : 2 ) und dann in der Logo auswerten ob das Panel im gewünschten Bild ist. Wenn nein => kurzen Wertwechsel von 2 auf 1 und wieder zurück.

Wobei das halt eher eine Bastellösung ist. Vielleicht hat jemand eine bessere Idee.

Der richtige Weg wäre aus meiner Sicht per Steuerungsauftrag ( also du wertest aus, das Panel 3 ist im Bild 1 statt 2 und startest einen Steuerungsauftrag "Bildwechsel" auf 2. Aber das gibt es für die Logo vermutlich nicht.
 
Das HMI fragt ja, in meinem Fall im Sekundenabstand, die Variablen der Logo ab. Würde es gehen, dass man einen kleinen Skript schreibt der, nach jeder Abfrage des Merkers, das passende Bild anzeigt?


If Merker 1 = 0 Then
Bild 1 anzeigen
Else
Bild 2 anzeigen
End If
 
Aber du könntest es mal so probieren:
Im Startbild in den Eigenschaften unter "Bild aufgebaut" die Funktion "Aktiviere Bild mit Nummer" einfügen mit deiner Variable welche die Bildnummer enthält. Das könnte vielleicht funktionieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das Problem ist nur, ich habe mehrere HMIs, die sollen wenn der Merker auf der LOGO auf 1 ist alle auf das Bild schalten und das auch wieder machen wenn sie Stromlos waren.
Das ist doch kein Problem. Wenn das HMI eingeschaltet wird, dann startet es mit dem Startbild. Und sobald die HMI-Verbindung zur Logo aufgebaut ist, stellt es fest, dass die Variable 1 ist und löst das Ereignis "Wertänderung" aus, sprich es wechselt zu Bild 2.
 
Und sobald die HMI-Verbindung zur Logo aufgebaut ist, stellt es fest, dass die Variable 1 ist und löst das Ereignis "Wertänderung" aus, sprich es wechselt zu Bild 2.
Da bin ich mir gar nicht mal so sicher ob das so ist. Laut Hilfe muss eine Wertänderung SPS seitig ( oder durch Bedienereingabe ) stattfinden ( so als ob sich das Panel bei der Funktion Wertwechsel den aktuellen SPS-Status holt und als Altwert speichert ). So lese ich das zumindest raus, getestet habe ich es nicht.

Die Wertänderung einer Variablen wird von der Steuerung ausgelöst oder vom Benutzer, z. B. wenn er einen neuen Wert eingibt. Wenn sich eine Systemfunktion den Wert ändert, wird kein Ereignis ausgegeben.
Quelle

Wäre das überhaupt gut, wenn beim Reboot des Panels die interne Variable vom Panel auf 0 steht, die SPS die Variable auf 1 steht und das Panel dies als Wertänderung interpretiert ( obwohl vielleicht seit Stunden / Tagen keine Wertänderung stattgefunden hat ). Dann würden ja u.U. sämtliche Funktionen mit Wertänderungen bei einem Panelstart auslösen ( bei SPS-Variablen die gerade nicht den Wert 0 haben ) obwohl sich nichts geändert hat.
 
Zuletzt bearbeitet:
Und sobald die HMI-Verbindung zur Logo aufgebaut ist, stellt es fest, dass die Variable 1 ist und löst das Ereignis "Wertänderung" aus, sprich es wechselt zu Bild 2.
Da bin ich mir gar nicht mal so sicher ob das so ist.
Das ist so. Bin mir ganz sicher. Und ich finde, das ist auch richtig so. Selbst wenn die Werte im HMI in einem Archiv gespeichert werden, weiß die WinCC Runtime beim Start nicht, was vorher war, insbesondere nicht, was war, während die Runtime nicht lief.

Wäre das überhaupt gut, wenn beim Reboot des Panels die interne Variable vom Panel auf 0 steht, die SPS die Variable auf 1 steht und das Panel dies als Wertänderung interpretiert ( obwohl vielleicht seit Stunden / Tagen keine Wertänderung stattgefunden hat ). Dann würden ja u.U. sämtliche Funktionen mit Wertänderungen bei einem Panelstart auslösen
genau so ist es. Wenn z.B. bei Bitmeldungen Reaktionen beim Ereignis "Kommen" projektiert sind, dann werden die beim Runtime-Start (wieder) ausgelöst, wenn die Trigger-Bits schon 1 sind.

HMI-Variablen mit PLC Anbindung haben Panel-interne Kopien, die auf dem Panel angezeigt werden und einen Initialwert haben (den man auch auf <> 0 projektieren kann). Im Aktualisierungszyklus der Variablen vergleicht die WinCC Runtime den gerade von der PLC geholten Wert mit der internen Kopie und kopiert dann die neuen Werte in die internen Kopien, und wenn ein Unterschied war, dann wird das Ereignis "Wertänderung" ausgelöst.

Ich nutze diese Verhalten "schon immer" seit WinCC flexible, um ein (einmaliges) Ereignis "Runtime neu gestartet und Bedienbereit" zu haben, mit Hilfe eines/des AlwaysTrue-Merkers der PLC. Die HMI-Variable hat den Startwert 0, und wenn die HMI-Verbindung zur PLC das erste mal aufgebaut wird und der aktuelle Wert 1 gelesen wird, dann gibt es ein Ereignis "Wertänderung".
Konkret: auf dem Start/Info-Bild habe ich einen blinkenden Text "... warte auf Verbindung zur SPS xyz ...", der nur sichtbar ist, wenn die HMI-Variable = 0 ist, und bei der (einmaligen) Wertänderung ist ein Bildwechsel zum Home/Übersichtsbild des Panels. Wenn der Bildwechsel beim Runtime-Start nicht kommt und das "... warte auf Verbindung ..." ewig angezeigt bleibt, dann ist was nicht in Ordnung mit der HMI-Verbindung. Und das Beste: dafür braucht man kein Skript.

PS: das sieht dann z.B. so aus wie in dem angehängten Bild eines Start/Info-Bildes
 

Anhänge

  • 01_Info_Start.png
    01_Info_Start.png
    36 KB · Aufrufe: 3
Zuletzt bearbeitet:
Danke für die vielen Antworten.
Wenn ich unter dem Startbild auf Ereignisse - Aufgebaut gehe, gibt es die Funktion Bilder - AtiviereBildMitNummer nicht...
 
Wenn ich unter dem Startbild auf Ereignisse - Aufgebaut gehe, gibt es die Funktion Bilder - AtiviereBildMitNummer nicht...
Versuche doch einmal Haralds Weg:
Das ist doch kein Problem. Wenn das HMI eingeschaltet wird, dann startet es mit dem Startbild. Und sobald die HMI-Verbindung zur Logo aufgebaut ist, stellt es fest, dass die Variable 1 ist und löst das Ereignis "Wertänderung" aus, sprich es wechselt zu Bild 2.
 
Zuletzt bearbeitet:
Wenn ich unter dem Startbild auf Ereignisse - Aufgebaut gehe, gibt es die Funktion Bilder - AtiviereBildMitNummer nicht...
Das ist das falsche Ereignis. Du musst die Bildumschaltung beim Ereignis "Wertänderung" deiner Bildumschaltungs-Steuervariable projektieren.

Weil das Basic Panel keine Skripte kann, kann man bei Variablen allerdings keine Unterscheidung zwischen Wertänderung zu 1 und zu 0 machen. Da kann man aber "AktiviereBildMitNummer" verwenden, damit man verschiedene Bilder aktivieren kann.

Alternative Möglichkeiten:
  • Ereignisse "Kommen" und "Gehen" von Bitmeldungen verwenden
    Da kann man für Kommen (Bit wird 1) und Gehen (Bit wird 0) getrennte Reaktionen festlegen. "AktiviereBild" und "AktiviereBildMitNummer" verfügbar
    Am besten für diese Meldung(en) eine eigene Meldeklasse "Bildumschaltung" ohne Quittierung projektieren.
  • mit Wertänderung von 2 Variablen arbeiten
    die eine Variable steuert Umschaltung zu Bild 1 und die Andere die Umschaltung zu Bild 2
    Grundzustand: beide Variablen = 0
    Umschaltung zu Bild 1: Variable2 = 0 und 1,5 Sekunden später Variable1 = 1 schalten
    Umschaltung zu Bild 2: Variable1 = 0 und 1,5 Sekunden später Variable2 = 1 schalten
 
Kannst Du nicht eine Variable projektieren, die die Soll-Bild-Nummer enthält? Dann einfach dort die Wertänderung mit "AktiviereBildMitNummer" -> "SollBildNummer" projektieren.
Habe es, weil ich gerade nix anderes zu tun habe :) , simuliert. Das funktioniert einwandfrei, wie von PN/DP #11 gepostet. Grundbild (mega) kurz aufgeschaltet, danach wird das "gewünschte Bild" aufgeschaltet. Dort, wo du das Bit setzt, einfach die Variable "IchWillDiesesBildAufschalten"(Soll-Bild-Nummer) auf die gewünschte Nummer setzen.
Mit S7-1200 simuliert, aber eine Logo kann wohl auch (hoff ich)einen INT übertragen...
 
Kannst Du nicht eine Variable projektieren, die die Soll-Bild-Nummer enthält? Dann einfach dort die Wertänderung mit "AktiviereBildMitNummer" -> "SollBildNummer" projektieren.
Das war auch schon der allererste Vorschlag von DeltaMikeAir in Beitrag #2
Dann hat der Fragesteller in Beitrag #13 geschrieben, dass es die Funktion "AktiviereBildMitNummer" beim Ereignis nicht gibt - das war aber beim falschen Ereignis.
Also eigentlich müsste der Fragesteller einfach nur konzentriert den Vorschlag umsetzen und Tada!
 
Zurück
Oben