# Bildwechsel über SPS Variable



## R.K. (25 Oktober 2013)

Guten Tag,

Ich steh gerade unglaublich auf dem Schlauch und weiß nicht mehr so recht weiter. Ich verwende TIA-Portal V12

Ich möchte an nem Comfort Panel Bilder wechseln, über Variablen von einer S7 300 Steuerung. Da immer wenn eine Variable gesetzt wird, mindestens eine weitere zurück gesetzt wird, geht es nicht einfach über ein Ereignis bei Wertänderung an der HMI-Variable, und ich finde keine Möglichkeit ein Ereignis nur beim wechsel von 0 auf 1 aus zu führen.  

Weil es geschickt für noch ein paar andere Sachen ist, wollte ich es über ein Skript lösen. Nur aus irgend einem Grund bekomme ich die Funktion ActivateScreen nicht zum laufen. selbst wenn ich nur die Funktion im Skript habe und es über ne Taste am HMI aufrufe funktioniert es nicht.



Das fertige Skript sah im groben so aus:
oben ne Warteschleife mit einer Sekunde, da es zu kleinen Verzögerungen beim umsetzen der Variablen kommen kann. 


Dim dteWait


dteWait = DateAdd("s", 1, Now())
Do Until (Now() > dteWait)	
Loop




If (SmartTags("test1") = True) Then
	Call ActivateScreen("Bild_1", 0)
End If


If (SmartTags("test2") = True) Then
	Call ActivateScreen("Bild_2", 0)
End If

etc. 





Wie gesagt. auch wenn ich nur 

Call ActivateScreen("Bild_1", 0)

im Skript stehen habe wird das Bild nicht aufgerufen.

was mach ich falsch, und gibt es doch eine Möglichkeit ein Ereignis nur bei Wertänderung von 0 auf 1 aus zu führen (bei den Variablentabellen) ?


----------



## PN/DP (25 Oktober 2013)

R.K. schrieb:


> ich finde keine Möglichkeit ein Ereignis nur beim wechsel von 0 auf 1 aus zu führen.
> [...]
> auch wenn ich nur
> 
> ...



Ich kenne das TIA nicht, doch wahrscheinlich ist der Aufruf des ActivateScreen falsch geschrieben (wieso Call..?) - der korrekte Aufruf sollte aber in der TIA-Hilfe bzw. Handbuch beschrieben sein. Und auch schon einige male hier im Forum..
In WinCC flexible konnte man Systemfunktionen zusammenklicken und dann in den Skript-Editor kopieren - gibt es sowas auch im TIA?

Sobald man mit Skripten 'rummacht wird es essentiell, daß man Fehlermeldungen vom System mitbekommt - erstelle Dir ein Meldefenster oder eine Meldeanzeige, welche auch (oder nur) Meldungen der Meldeklasse "System" anzeigt.

Eine Funktion nur bei 0-1 Wechsel einer Variable ausführen:
Das Ereignis "Obergrenze überschritten" sollte helfen.
Oder direkt am Anfang eines Skriptes (ohne Warteschleifen-Quatsch!) genau die auslösende Variable abfragen ob sie jetzt 1 ist und wenn nicht, dann das Skript gleich wieder beenden. Noch besser: beim Aufruf des Skriptes gleich den Wert der Variable als Parameter mitgeben.

Die ereignis-auslösende Variable muß "zyklisch fortlaufend" gelesen werden.

Für Deinen Zweck besser geeignet ist möglicherweise die Systemfunktion "AktiviereBildMitNummer".

Mehr Informationen liefert die Forumssuche. Das von der SPS gesteuerte Aufrufen von Bildern wurde hier schon mit allen Aspekten 'zigmal behandelt.

Achja: ich hasse dieses Entmündigen des in aller Regel sowieso strohdoofen Bedieners  per ferngesteuerter Bildwechsel
Ich hoffe, Anlagen-HMI-Designer kommen nicht auch noch auf die Idee, STOP-Buttons "intelligent" auszublenden.

Harald


----------



## ducati (26 Oktober 2013)

das mit der warteschleife ist grosser käse... in der Zeit laeuft kein anderes script...


----------



## rostiger Nagel (26 Oktober 2013)

Ich hatte gestern eine Unterhaltung mit PN/DP, wir sind zu dem Entschluss 
gekommen das ein automatischer Bildwechsel nach der HHN* verboten ist. 
Warum sollte man einen Anlagenfahrer bzw. Maschinbediener soweit entmündigen,
das er nicht selber Endscheiden kann wann ein Bild angewählt werden sollte.

*HHN - Harald & Helmut Norm


----------



## PN/DP (26 Oktober 2013)

Das Schlimme ist nicht nur das "entmündigen" sondern es kann ja auch gefährlich oder teuer werden: der Bediener möchte eine Schaltfläche bedienen.. der Finger senkt sich zum Touchscreen... in dem Moment wechselt das Bild unter dem bedienentschlossenen Finger und es wird womöglich eine ganz andere Schaltfläche bedient...

Harald


----------



## Thomas_v2.1 (26 Oktober 2013)

Gabs gestern im Runkelkrug nur Suppe, oder wieso war der Tellerrand so hoch dass ihr euch Anwendungsfälle nicht vorstellen konntet bei denen so ein Bildwechsel von der SPS aus sinnvoll ist?

Aber ich werde nächste Woche umgehend einen Termin bei einer Gießerei beantragen, und den Bedienern erklären dass sie nach dem Scannen des Barcodes auf den Tiegeln jetzt erst die Handschuhe ausziehen sollen und am Panel das entsprechende Bild mit den Scannerinformationen aufzurufen. Damit ist dann wenigstens die HHN Norm eingehalten.


----------



## Larry Laffer (26 Oktober 2013)

@Thomas:
Ich weiß gar nicht, ob es auch Suppe gegeben hätte ... in jedem Fall war die Speisekarte "ein wenig" ausgedünnt. Aber damit hat das nichts zu tun ...
Du weißt aber auch schon , dass dein Vergleich "ein ganz klein bißchen" hinkt ... wenn du du ein Barcode-Scannen einen Seitenwechsel ausführst (wenn du das halt in der Anwendung für nötig hältst) dann ist das aus meiner Sicht auch eine bewußte Bedienung und noch kein Widerspruch zur "HHN"-Norm ...
Es ist aber wie immer eine Frage der Sicht ... 8)

Gruß
Larry


----------



## R.K. (28 Oktober 2013)

PN/DP schrieb:


> Ich kenne das TIA nicht, doch wahrscheinlich ist der Aufruf des ActivateScreen falsch geschrieben (wieso Call..?) - der korrekte Aufruf sollte aber in der TIA-Hilfe bzw. Handbuch beschrieben sein. Und auch schon einige male hier im Forum..
> In WinCC flexible konnte man Systemfunktionen zusammenklicken und dann in den Skript-Editor kopieren - gibt es sowas auch im TIA?



Das Call ActivateScreen und die Warteschleife hab ich direkt aus nem Siemens Beispiel Projekt genommen, ich hatte mir nicht so viele Gedanken darüber gemacht dass das so ein großer Mist ist. 





PN/DP schrieb:


> Für Deinen Zweck besser geeignet ist möglicherweise die Systemfunktion "AktiviereBildMitNummer".



In der TIA-Hilfe steht das es die Selbe funktion wäre. 


Die Bilder sollen über ein kleines Bedienpult gewechselt werden, das direkt neben dem HMI ist. zum Wechseln wird ein Schlüsselschalter verwendet. Also das Fehlbedienen auf Grund eines Bildwechsels finde ich dadurch fast ausgeschlossen.


Über die Suche im Forum hatte ich nicht genau das gefunden was ich suche, kann aber sein ich hab die Falschen Stichwörter genommen. 


Danke für Die Antworten.


----------



## Sinix (28 Oktober 2013)

@R.K. ... funktioniert das jetzt? Dachte noch daran, dass das Skript ja auch irgendwo mal aufgerufen werden muss

@HNN ... Wie sieht es mit dem Fall aus: Ein Vorarbeiter hat eine passwort geschützte Bildschrimseite aufgerufen und hier Parameter eingestellt.
             Damit nicht unberechtigte Bediener hier rumfuhrwerken wird nach 10min automatisch ausgeloggt und ferngesteuert auf
             das Hauptmenü gewechselt.

Gruß MK


----------



## R.K. (28 Oktober 2013)

Im großen und ganzen funktioniert es jetzt. 

Es stimmt das das Call vor ActivateScreen falsch ist... warum auch immer es dann in dem Beispielprojekt von Siemens drin war. Die Warteschleife hab ich ganz weggelassen. Mal übertragen und sehen ob es durch die Verzögerung zu Fehlern kommt. Falls es so ist kann man ja noch schnell eine reinschreiben. 

Und, wie ich finde, interessanter weise habe ich bemerkt , dass das Ereignis bei Wertänderung bei internen Variablen nur ausgelöst wird wenn es über ein EA Feld eingegeben wird.

Nochmals Danke an Alle.

Gruß 
Ralf


----------



## Sinix (30 Oktober 2013)

Hallo Ralf



R.K. schrieb:


> Und, wie ich finde, interessanter weise habe ich bemerkt , dass das Ereignis bei Wertänderung bei internen Variablen nur ausgelöst wird wenn es über ein EA Feld eingegeben wird.



Das liegt an der Erfassungsart (zyklisch bei Verwendung). Wenn du hier "zyklisch fortlaufend" einstellst, dann sollte es auch bei Änderung ohne EA-Feld funktionieren.

Gruß Mäuseklavier


----------



## R.K. (30 Oktober 2013)

Variable war auf Zyklisch fortlaufend.


----------



## Larry Laffer (30 Oktober 2013)

@MK:
nicht bei _*internen Variablen *_- bei denen wird die Wertänderung nicht von sich aus erfasst, damit es nicht zu Endlos-Schleifen im Scriptteil deiner Visu kommt ...

Gruß
Larry


----------



## IBFS (30 Oktober 2013)

PN/DP schrieb:


> Das Schlimme ist nicht nur das "entmündigen" sondern es kann ja auch gefährlich oder teuer werden:
> der Bediener möchte eine Schaltfläche bedienen.. der Finger senkt sich zum Touchscreen... in dem Moment wechselt das Bild
> unter dem bedienentschlossenen Finger und es wird womöglich eine ganz andere Schaltfläche bedient...
> Harald



Also bitte, da unterschätzt du die anderen Programmierer aber. Typischerweise wird 
mit A51 ein wichtiges Hinweisbild aufgeblendet auf dem keine kritischen Tasten sind.  
Zum Beispiel - "Wartungszähler erreicht".  Die zugehörige Schaltfläche kann entweder
per SPS zeitverzögert wirken oder man legt die Tasten in diesen Bildern in Bereiche, wo
in den restlichen Bilder bestimmt keine Tasten sind.
Etwas den Kopf einschalten muss man schon, wenn man solche Funktionen nutzt.
Daher halte ich die HHN in ihrer vorgebrachten Absolutheit für Unsinn.


----------



## rostiger Nagel (30 Oktober 2013)

IBFS schrieb:


> Daher halte ich die HHN in ihrer vorgebrachten Absolutheit für Unsinn.



eher im gegenteil, derjenige der es nicht schaft eine solche Funktion wie einen 
automaischen Bildwechsel zu *Parametrieren*, sollte so etwas auch nicht 
projektieren! Damit ist jetzt nicht der spätere Maschinenbediener gemeint sondern
der Projekteur. Oder möchtest du dich in ein Flugzeug setzen wo der Pilot die 
Stewardessen fragt, wo der Startknopf ist.


----------

