TIA Bildnamen eines Popup-Bildes an VB-Script übergeben und aufrufen

Mecha2211

Level-2
Beiträge
249
Reaktionspunkte
47
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

gibt es irgendeine Möglichkeit, einem VB-Script in TIA V15.1 für Comfort-Panels den Bildnamen eines Popup-Bildes zu übergeben, und diesen dann in "showPopupScreen" zu verwenden um dieses Bild zu öffnen?

Wenn ich einen Parameter mit ByRef oder ByVal nehme, gehts nicht, eine interne Variable geht auch nicht...

Ich möchte Popups abhängig von der steigenden Flanke einer PLC-Variablen öffnen, aber nicht wenn die Flanke fällt.
Leider gibts in TIA WinCC als Ereignis nur ChangeOfValue..deswegen der leidliche Umweg über Scripting.

Immer her mit Ideen,
zur Lösung der Fragestellung oder ein Workaround, mir gleich :)
 
Moin,
ich rufe mein Skript einfach bei Wertänderung der entsprechenden Variable auf (bei Bool sind das ja beide Flanken). Im Skript selbst prüfe ich dann ab, ob die Wertänderung auf True (wäre eine Steigende Flanke = zeige Popup) oder False (wäre eine fallende Flanke = schließe Popup) stattfand.
Code:
Sub Restart()
If SmartTags("RestartTrigger") Then
	ShowPopupScreen "Restart", 151, 157, hmiOn, hmiAnimationOff, hmiMedium
Else
	ShowPopupScreen "Restart", 151, 157, hmiOff, hmiAnimationOff, hmiMedium
End If


End Sub
So recht verstehe ich die Frage aber nicht :confused::p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte Popups abhängig von der steigenden Flanke einer PLC-Variablen öffnen, aber nicht wenn die Flanke fällt.
Leider gibts in TIA WinCC als Ereignis nur ChangeOfValue..deswegen der leidliche Umweg über Scripting.
Du könntest in der Funktionsliste das Popup öffnen und als weitere Funktion die auslösende Variable zurücksetzen.

Harald
 
Du könntest in der Funktionsliste das Popup öffnen und als weitere Funktion die auslösende Variable zurücksetzen.
:confused:
Das löst IMHO allerdings auch das Ereignis Wertänderung der betreffenden Variable aus und löst daher doch nicht das Problem, oder?



@Mecha2312,

gibt es irgendeine Möglichkeit, einem VB-Script in TIA V15.1 für Comfort-Panels den Bildnamen eines Popup-Bildes zu übergeben, und diesen dann in "showPopupScreen" zu verwenden um dieses Bild zu öffnen?

Wenn ich einen Parameter mit ByRef oder ByVal nehme, gehts nicht, eine interne Variable geht auch nicht...
Anscheinend kann der Name des gewünschten Popups nicht als Variable übergeben werden.
Ich behelfe mir in diesen Fällen mit SELECT (und für die Wertänderung mit einem Enable-Eingang):
Code:
Sub vbPopupOpen(ByVal Enable, ByVal PopupNr)
'


    If Enable = 0 Then Exit Sub                                                            ' For bool var event "value change", just execute at raising edge
    
    
    
    Const X_POS = 240, Y_POS = 200                                                         ' Position popups
    
    Select PopupNr
        Case 1
            ShowPopupScreen "Popup1", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 1
        Case 2
            ShowPopupScreen "Popup2", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 2
        Case 1
            ShowPopupScreen "Popup3", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 3
    End Select

End Sub
Bei Enable übergebe ich als HMI-Variable die Variable, deren Wertänderung überwacht wird.
Bei FALSE wird das Script gleich in der 1. Zeile abgebrochen.
Ansonsten wird mit der PopupNr das gewünschte Popup selektiert.
 
Zuletzt bearbeitet:
PS:
Du könntest auch den Namen als String an die Funktion übergeben und dann mit SELECT danach auswählen :
Code:
Sub vbPopupOpen(ByVal Enable, ByVal PopupName)
'


    If Enable = 0 Then Exit Sub                                                            ' For bool var event "value change", just execute at raising edge
    
    
    
    Const X_POS = 240, Y_POS = 200                                                         ' Position popups
    
    Select PopupName
        Case "Popup1"
            ShowPopupScreen "Popup1", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 1
        Case "Popup2"
            ShowPopupScreen "Popup2", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 2
        Case "Popup3"
            ShowPopupScreen "Popup3", X_POS, Y_POS, hmiOn, hmiAnimationOff, hmiFast        ' Open popup 3
    End Select
End Sub
Aber letztlich macht es nur den Aufruf der Funktion gegenüber der 1. Version aufwendiger.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused:
Das löst IMHO allerdings auch das Ereignis Wertänderung der betreffenden Variable aus und löst daher doch nicht das Problem, oder?

Da hast Du Recht.

Danke für Deinen Vorschlag.
Das ist dann aber nur für bekannte Popups gültig und muss für neue auch angepasst werden.
Schade, ich dachte, man hätte über den Namen irgendwie arbeiten können.
 
Sicher? Hast Du es mal ausprobiert? (ich habe keine Erfahrung mit TIA V15)
Ich meine, dass ich das schon durchprobiert habe. Ist aber schon eine ganze Weile her.

Prinzipiell treten aber meiner Erfahrung nach alle Ereignisse unabhängig vom Auslöser auf.
Also egal, ob sie von der SPS oder der Funktionsliste bzw. einem Script im HMI verursacht werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde es ausprobieren - Was könnte passieren?
A) das Rücksetzen der Variable durch das HMI löst kein Ereignis "Wertänderung" aus ---> alles gut :D
B) das Rücksetzen der Variable durch das HMI löst ein Ereignis "Wertänderung" aus ---> "ShowPopupScreen" wird nach der Variablen-Aktualisierungszeit ein zweites Mal aufgerufen. Was passiert, wenn ein bereits geöffnetes Popup gleich nochmal geöffnet wird? Sieht man das irgendwie, ob das Popup einmal oder zweimal geöffnet wird?

Harald
 
Was passiert, wenn ein bereits geöffnetes Popup gleich nochmal geöffnet wird? Sieht man das irgendwie, ob das Popup einmal oder zweimal geöffnet wird?
Das kommt u.a. darauf an, was man bei den Öffnen- und Schließen-Events des Popups so programmiert hat.

Ganz sicher kommt nämlich erst das Öffnen-Event des 2. Popups und anschließend das Schließen-Event des 1. Popups. Auch wenn es das gleiche Popup ist. Da bin ich neulich selber erst drüber gestolpert, weil ich den gleichen Gedanken mit 2x Öffnen hatte.

PS:
Man müsste also u.U. in der Funktionsliste erst das Popup schließén und dann neu öffnen.
Und es bedingt natürlich, dass die SPS-Variable auch sofort zurück gesetzt werden darf.
 
Zuletzt bearbeitet:
Zurück
Oben