# Wechsel eines Bildes in WinCC flexible bei Fehlermeldung



## brossi_lgs (20 Dezember 2005)

Mahlzeit,

habe folgendes Problem bzw. folgenden Wunsch.

Wenn ich in meinem Programm eine bestimmtest Bit setze (z.B. Netzspannungsausfall), dann soll auf meinem TP270 ein Bild sich öffnen mit der entsprechenden Fehlermeldung (Netzspannungsausfall). 
Jetzt bin ich nicht so tief in der Materie von WinCC flexible2005. Wie kann ich, egal welches Bild gerade geöffnet ist, bei Auftreten meines o.g. Fehlers ein Bild öffnen, welches nach Behebung des Fehlers (Bit = 0) von alleine sich wieder schliesst?

Gruß 
Andreas


----------



## sps-concept (20 Dezember 2005)

*WinCC flex*

Hallo,

wieso benutzt du nicht das Popupfenster bei Störungen? Oder eine Meldezeile?

MfG
André Räppel


----------



## volker (20 Dezember 2005)

solange die cpu läuft, so wie sps-concept das schreibt.

um einen cpu-ausfall anzuzeigen kannst du folgendes script minütlich durch einen wecker  aufrufen. 

```
z_cpu_ausfall = 0
If Right (dt_ag_zeit,8) = z_ag_zeit_gespeichert Then
	z_cpu_ausfall = 1
	Call PtFct.Bildanwahl_fest(PtScn.zz_cpu_ausfall, 0)
End If
z_ag_zeit_gespeichert = Right (dt_ag_zeit,8)
```


----------



## Anonymous (20 Dezember 2005)

Pop-Up Fenster bei Störungen? Dazu finde ich nciht mal was in der Hilfe

Meldefenster: Da habe ich ein Problem damit. Habe ein Bild mit einer Meldeanzeige gebastelt. Jetzt braucht die Meldeanzeige noch eine Meldung. Diese wollte ich in Bitmeldung erzeugen. Jedoch benötige ich dafür eine Variabele im Format Int oder Word. Habe ich aber nicht. Habe nur ein einzelnes Bit. Was mache ich verkehrt?


----------



## sps-concept (20 Dezember 2005)

*WinCC flex*

Hallo,

dann reserviere doch ein Datenwort oder Merkerwort und beschreibe 1 Bit. Willst du erweitern beschreib das nächste. Hast du die Runtime und PLCSIM auf dem Recher? Dann mach mal nen Trockentest.

MfG
André Räppel


----------



## Anonymous (20 Dezember 2005)

Soweit so gut. Habe mir eine Variable erschaffen nud frage dort ein Bit ab. Zur weiteren Verständnis:
Habe ein Bild namens "Störung". In diesem habe ich die Meldeanzeige eingebaut. Dieses Bild soll bei Auftreten des Fehlers, egal in welchem Bild ich mich gerade befinde, erscheinen. 
Was muss ich jetzt noch machen, damit mein Wunsch in Erfüllung geht?


----------



## sps-concept (20 Dezember 2005)

*WinCC flex*

Hallo,

das Bild kannst du ganz normal aus dem Menü aufrufen. Das Popupfenster kommt automatisch. Hast du die Runtime und PLCSIM?

MfG
André Räppel


----------



## Anonymous (22 Dezember 2005)

danke für die Diskussion, hatte gerade genau das gleiche Problem, habe jetzt im Aufgabenplaner einfach folgendes Skript aufgerufen:

If UPSactive<>0 Then
ActivateScreen "0-UPS active", 0	
End If

UPSactive kommt als Bit aus der SPS, das Panel springt dann einfach auf das Bild, wo ein entsprechendes Textfenster plaziert ist. 
Unschön ist nur, das man, wenn das Bit zuückgesetzt ist, die Seite wieder manuell verlassen muss.

Wer also eine elegantere Lösung hat - gerne nochmal posten


----------



## Reblaus (22 Dezember 2005)

Ich würde das nicht so kompliziert machen abgesehen davon ein Skript sei es noch so klein min aufzurufen ist ein bischen ungeschickt das zieht an der Performance!!!
 :twisted: 

Ich würde an die Variable die die FEhlermeldung bringen soll im Punkt Wertänderung folgendes Skript anhängen

If Variable = true then
ActivateScreen "Fehlerbild",0
else
ActivateScreen "anderes BIld",0
end if

so springt man auch automatisch wieder aus dem Bild wenn der Fehler behoben ist!!!
und man ruft das Skript wirklich nur dann auf wenn man denn Fehler bekommt und nicht jede Minute!!!


----------



## seeba (22 Dezember 2005)

Reblaus schrieb:
			
		

> Ich würde das nicht so kompliziert machen abgesehen davon ein Skript sei es noch so klein min aufzurufen ist ein bischen ungeschickt das zieht an der Performance!!!
> :twisted:
> 
> Ich würde an die Variable die die FEhlermeldung bringen soll im Punkt Wertänderung folgendes Skript anhängen
> ...



Joa aber mit anderes Bild kommste nun nicht zurück zum letzen aufgerufenen Bild!


----------



## Reblaus (22 Dezember 2005)

Dann eben so


If Variable = true then 
ActivateScreen "Fehlerbild",0 
else 
*ActivatePreviousScreen*
end if 

das ist der Befehl für letztes BILD


----------



## volker (22 Dezember 2005)

seeba schrieb:
			
		

> Joa aber mit anderes Bild kommste nun nicht zurück zum letzen aufgerufenen Bild!



wie das bei flex ist weiss ich nicht aber bei protool gibt es 3 möglichkeiten ein bild aus dem script zu wechseln

1. Call PtFct.Bildanwahl_zurück()
2. Call PtFct.Bildanwahl_fest(PtScn.BILDNAME, 0)
3. Call PtFct.Bildanwahl_variabel(PtVar.BILDNUMMER, 0)

ich denke ja mal dass das mit flex auch noch geht.

wenn du mich mit der minute meinst..... :wink: 
solange die cpu läuft, kann man das script natürlich an eine variable binden und das script nur bei bedarf auslösen.

wenn die cpu nicht mehr läuft geht das aber nicht. deshalb die sache mit dem minütlichem wecker der das bild cpu-ausfall aufruft.


----------



## Reblaus (22 Dezember 2005)

Da hast du recht :shock: 
Ich kann natürlich auch nicht einschätzen wie groß das Projekt ist 
Sollte es nicht zu groß sein kann man das auch mal machen!! Aber leider  :evil:  ist WinCC Flexible was Skripte angeht einfach sehr sehr empfindlich deshalb versuche ich möglichst viel ohne zu machen und wenn mit dann nur selten aufrufen!

Außerdem geht man mit dem Minütlichen aufruf ein Risiko ein. denn Skripte sind nieder prior sollte also durch zufall bei einem aufruf des Skriptes mehrere Aktionen ausgeführt werden wird das Skript hinten angestellt. Durch die Minütliche auslösung setzt man die Wahrscheinlichkeit also rauf das ein Fehler unerkannt bleibt! Vorallem wenn man ohne Meldefenster arbeitet sonder nur mit der Meldeanzeige!


----------



## brossi_lgs (23 Dezember 2005)

Die Variante der Reblaus hört scih ja ganz gut an, jedoch hänge ich an der Stelle, der Variabelen unter dem Punkt Wertänderung ein Skript anzuhängen. Finde nicht den entsprechenden Punkt "Skript ausführen". Wie füge ich denn ein Skript unter Wertänderung an?


----------



## brossi_lgs (23 Dezember 2005)

Also:
Habe jetzt eine Variable, ein Skript nach Modell Reblaus und ein Bild. Der Variable habe ich bei Wertänderung das Skript angehängt (habe es gefunden). In dem Skript steht, 

```
If Variable = false then
activatescreen "Bild",0
else
activatepreciousscreen
end if
```

Jetzt habe ich das ganz mal in Runtime starten wollen. Aber das Skript wird nicht wusgeführt, obwohl die Variable null ist. Geht das Testen in Runtime nicht?


----------



## volker (23 Dezember 2005)

eine funktion an eine bool-variable zu binden funktioniert nicht.
zumindest ist das bei protool so.
möglicherweise ist der fehler in flex auch noch nicht behoben.
versuchs mal mit einem byte und grenzwert überschritten.


----------



## brossi_lgs (23 Dezember 2005)

Habe in Step7 die Variable in ein Byte abgeändert. 

Jetzt bin ich in Flex und gehe zur Variable. Dort gebe ich bei Obergrenze eine Konstante ein (0) und bei Eigenschaften->Obergrenze Überschritten lasse ich das Skript aufrufen. Ist diese Vorgehensweise richtig?


----------



## volker (23 Dezember 2005)

vom prinzip ja. nimm als obergrenze aber besser eine 1 und als untergrenze eine 0. wenn die funktion ausgelöst werden soll eine 2 in das byte transen bzw dbx0.1 (ist ja 2 ;-) ) setzen. das byte kannst du am ende des scripts auf 0 setzen. das ist besser als in der steuerung. so kannst du sicher sein, das das script auch aufgerufen wird.


----------



## brossi_lgs (23 Dezember 2005)

Und wenn ich anstatt das Bit 0.1 zu setzen einfach 
	
	



```
= dbx0.1
```
sage, dann müsste das doch dann genauso funktionieren, oder? Wenn meine Bedingung nicht erfüllt ist, dann kein Bild, wenn erfüllt, dann Bild! Sehe ich das richtig?


----------



## volker (23 Dezember 2005)

ja klar. wenns mit dem = lange genug ansteht.


----------



## brossi_lgs (23 Dezember 2005)

Sollte eigentlich, denn die Bedingungen dafür sind

```
O Not-AUS
O Lichtschranke1
O Lichtschranke2
O Endschalter1
O Endschalter2
O Endschalter3
= dbx0.1
```

Schönen tag noch und danke für die Hilfe!!!  

Schönes Fest zudem auch noch!!!


----------

