WinCC VB-Script für "ZeigePopUpBild" erstellen.

Krümi

Level-1
Beiträge
18
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich stehe vor einem vielleicht schon bekannten Problem in WinCC Runtime Advanced.
Ich möchte die SystemFunktion "ZeigePopUpBild" mit einem bestimmten Bit aus meiner StatusVariable (Datentyp INT bzw. Dint) meiner Maschiene (SPS) anstoßen.
Ich möchte erreichen: Wenn Bit 4 aus meiner StatusVariable (VarStatus.%X4) = True, dann Zeige PopUp Bild. .... Soweit ich weis, ist dies nur über den Umweg eins Scripts möglich.

Danke für eure Hilfreichen Vorschläge.
(Wäre nett, wenn Ihr diese mit Beispielen für VB-Script-Anfänger belegen könntet)
 
Moin,

Code:
ShowPopupScreen"NAMEPOPUP",280,78,hmiOn,hmiAnimationOff,hmiFast

Das script einfach auf die Wertänderung der Variablen legen... fertig! ggf. noch ne Abfrage auf den Status falls Du es nur bei TRUE oder nur bei FALSE anzeigen willst.
Nicht vergessen die Variable auf zyklisch fortlaufend zu stellen ;)

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, danke für deine Antwort.
Ja, soweit war mir das schon klar. Aber mal einfach formuliert stecken ja in meiner (Status)Variable bis zu 32 einzelne Bit. Wenn ich nun die Wertänderung der ganzen Variable abfrage, wird mir doch sicher das PopUp bei der Änderung jedes der einzelnen Bits eingeblendet. Möchte das PopUp ja nur einblenden, wenn Bit 4 = TRUE. ... Kannst Du mir außerdem noch verraten wie ich mit VB auf TRUE oder FALSE abfrage!?

Danke!
Sebastian
 
Kannst Du mir außerdem noch verraten wie ich mit VB auf TRUE oder FALSE abfrage!?
mit "If <ausdruck> Then ..." oder "If Not <ausdruck> Then ..." :cool:


Möchte das PopUp ja nur einblenden, wenn Bit 4 = TRUE.
Code:
If myVar AND 16 Then  [COLOR="#008000"]' 16 = &H10 entspricht Bit .4[/COLOR]
    ShowPopupScreen"NAMEPOPUP",280,78,hmiOn,hmiAnimationOff,hmiFast
End If
Genaugenommen wird hier aber nicht das Kommen (0-->1) des Bits .4 ausgewertet (dazu müßte sich das Skript den vorherigen Wert von myVar gemerkt haben), sondern die Änderung irgendeines Bits in myVar wird das Skript aufrufen, und wenn dabei das Bit .4 TRUE ist, dann wird ShowPopupScreen ausgeführt. Am einfachsten wird es, wenn das Bit auf eine separate Bool-Variable gelegt wird.

Harald
 
Code:
If myVar AND 16 Then  [COLOR=#008000]' 16 = &H10 entspricht Bit .4[/COLOR]
    ShowPopupScreen"NAMEPOPUP",280,78,hmiOn,hmiAnimationOff,hmiFast
End If
Genaugenommen wird hier aber nicht das Kommen (0-->1) des Bits .4 ausgewertet (dazu müßte sich das Skript den vorherigen Wert von myVar gemerkt haben), sondern die Änderung irgendeines Bits in myVar wird das Skript aufrufen, und wenn dabei das Bit .4 TRUE ist, dann wird ShowPopupScreen ausgeführt. Am einfachsten wird es, wenn das Bit auf eine separate Bool-Variable gelegt wird.

Harald[/QUOTE]

Entschuldige, ist wirklich bisschen Neuland für mich: wie und wo steckt in dieser zeile das Bit .4? "If myVar AND 16 Then ' 16 = &H10 entspricht Bit .4" Wie wird das in VB Übersetzt bzw. umgerechnet? Nur zum Verständniss.

Du würdest also das Bit seperat mit der Runtime kommunizieren? Hab eben mehrere solcher PopUp`s einzublenden. Mal schaun wie ich das noch lösen kann.

Danke,
Sebastian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Bit .4 wird "ausmaskiert": der Wert von myVar wird mit der Bitmaske 000...00010000 (= 10 hex = 16 dez) bitweise UND-verknüpft. Wenn das Ergebnis ungleich 0 ist (also mindestens 1 Bit 1 ist), dann ist der Ausdruck wahr, wenn 0 rauskommt, dann ist der Ausdruck falsch.

Wenn Du dafür sorgst, daß in myVar immer höchstens nur 1 Bit 1 ist, dann kannst Du die Bitabfrage so einfach machen, weil dann das Bit, was 1 ist, gleichzeitig das Bit mit der 0-1-Flanke ist.

myVar kannst Du dem Skript beim Aufruf gleich mit übergeben oder im Skript als SmartTags("myVar") abfragen.

Harald
 
Zurück
Oben