WinCC VBS Tags umverdrahten

tarzipan7

Level-2
Beiträge
103
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

ich habe diese Funktion gefunden :

Sub Toggle_Bit(tag, bit_num)

Dim oTag

Set oTag = HMIRuntime.Tags(tag)

If oTag.Read And (2^bit_num) Then
'Bit is True so reset it to False
oTag.Write(oTag.Read() And Not (2^bit_num))
Else
'Bit is False so set it True
oTag.Write(oTag.Read() Or (2^bit_num))
End If

End Sub

Wenn ich diese mit einem Button verwende und diesen kopiere, sind die verwendeten Variablen nicht mit Umverdrahten zu erreichen.
Da muss ich immer in die "Ereignis" rein und alles ändern.
Ist das auch anders möglich, so das Umverdrahten geht?

Danke und Gruss
 
In diesem umständlichen Skript werden doch gar keine Tags verwendet, die man umverdrahten könnte? Der Tagname wird an das Skript übergeben.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

eigentlich habe ich es so vorgesehen:

Dim objTag

Set objTag = HMIRuntime.Tags("dbBmpSta_Word")
objTag.Read
objTag.Value = (objTag.Value Xor 1)
objTag.Write

Das sollte Bit0 im Wort toggeln.

aber das funktioniert nur wenn der Button 2mal gedrückt wird.
Habe keine Ahnung warum..........

Gruss
 
Wird das Skript beim ersten Mal auch ausgeführt? Mach mal irgendeine Testausgabe rein.
Hast Du auf die selbe Variable "dbBmpSta_Word" noch weitere Zuweisungen bei Ereignissen? Vielleicht überschreiben oder "überholen" sich Write-Zugriffe. Vielleicht sollte besser eine TagWait-Funktion verwendet werden (ich habe gerade nicht im Kopf, ob/wie das bei VBS funktioniert)

Harald
 
Ich habe es jetzt so gelöst:

links drücken:
Dim objTag
Set objTag = HMIRuntime.Tags("dbBmpSta_Word")
objTag.Write(objTag.Read Or(2^0))

links loslassen:
Dim objTag
Set objTag = HMIRuntime.Tags("dbBmpSta_Word")
objTag.Write(objTag.Read Xor(2^0))

und das geht so in Verbindung mit der SPS.
Habe nicht herausgefunden, warum das Einfache Toggeln im Word nicht ging.

Danke für die Hilfe
Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe nicht herausgefunden, warum das Einfache Toggeln im Word nicht ging.
Ich habe noch nicht herausgefunden, wann bzw. wodurch ausgelöst und wie oft Dein Code in den verschiedenen von Dir gezeigten Varianten ausgeführt wird.
Irgendwo ist mit Sicherheit der Wurm drin - nach wie vor - aber wo?

Das Toggeln von Bits mit XOR ist eigentlich kein Problem, auch nicht das Setzen und Rücksetzen in Deinem Beitag #1.
Zum Problem wird es erst, wenn das Toggeln mehrfach ausgelöst wird durch ein vermeintlich einmaliges Ereignis.
Ich würde mal zum Testen eine ZählVariable einbauen, die bei jedem Durchlauf des Codes um 1 erhöht wird.
Ich kann mir einfach nicht vorstellen, dass das Problem in dem Code steckt. Es muss damit zu tun haben, wie viele Durchläufe durch einen TastenDruck ausgelöst werden.
 
Im Moment brauche ich das "Toggeln" im Word nicht mehr, aber hätte schon gerne eine Funktion gehabt, bei welcher die Variablen mit umverdrahten, gesetzt werden können. Bei vielen Buttons ist es schon aufwendig jeden immer zu öffnen und anzupassen.

Mit der Version von heute Morgen funktioniert es, in der SPS ist folgender Code:

#woRTrig := #wiCmd AND NOT #wsAux0;
#woFTrig := #wsAux0 AND NOT #wiCmd;
#wsAux0 := #wiCmd;

So brauche ich im weiteren Programm nur die Flanken.
 
Zurück
Oben