Skript: Taster mit Schaltverhalten (Setzen,Rücksetzen)

cam1704

Level-1
Beiträge
44
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte einen Taster (z.B.Schaltfläche,Bild), der eine ungesetzte Variable setzt oder eine gesetzte Variable zurücksetzt. Deshalb habe ich mir ein Skript geschrieben, was leider nicht vollständig funktioniert.

Dim objTest
Dim i

i=0
Set objTest= SmartTags("test")

If i=0 Then
Select Case objTest
Case 0
SetBit SmartTags("test")
Case 1
ResetBit SmartTags("test")
End Select
i=i+1
End If

Beim Drücken der Schaltfläche wird das Skript gestartet. Ist die interne Variable "test" 0, soll sie 1 gesetzt werden. Ist sie dagegen 1 soll sie 0 gesetzt werden.
Das Skript funktioniert dahingehend, dass beim Drücken die Variable von 0 auf 1 wechselt. Jedoch wird sie beim erneuten Drücken nicht wieder zurück auf 0 gesetzt. Sie bleibt immer 1.

Weiß jemand warum das so ist?

Im Voraus herzlichen Dank
Chris
 
Ich bin zwar sicherlich kein Script-Experte,
ich verstehe auch nicht warum man sowas mit einem Skript macht ...

Aber meiner Meinung nach ist dein IF-Konstrukt falsch / sinnlos.

If i=0 Then
Damit wird der Hauptteil deines Skriptes also nur bearbeitet wenn i 0 ist,
was nur beim ersten durchlauf der Fall sein kann,
weil du i ja am ende inkrementierst.

P.S. Probiers mal mit Einrücken.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

so wie es geschrieben steht, hat alles seine Berechtigung.
Das Skript soll ja nur einmal durchlaufen werden. Stelle man sich vor jemand macht ein Dauerdrücken, so wechselt die Variable ständig von 0 auf 1 und umgekehrt. (Kann sein, dass WinCC flex das automatisch verhindert, aber sicher ist sicher)
Was das Einrücken betrifft, liegt das leider am Forum. Beim Schreiben war alles noch i.O. Nach dem Losschicken aber nicht mehr. Sorry

Durch Zufall habe ich den Fehler gefunden. Und es liegt nicht am Skript. Die Variable wird nicht von 0 auf 1 gesetzt, sondern von 0 auf -1 !!! Keine Ahnung was Siemens sich dabei denkt.
Hat das irgendwie einen Hintergrund?

Gruß
Chris
 
apropos: "ich verstehe auch nicht warum man sowas mit einem Skript macht ..."

Wäre schön wenn du mir sagst, wie ich es anders machen kann. Bin nämlich kein Skript Liebhaber.

Danke
 
Wenn du mir (uns) sagst womit du projektierst, kann ich dir, oder andere,
Kenntnis des Systems vorrausgesetzt, da sicherlich weiterhelfen.


Zu Skript soll nur einmal durchlaufen werden, das dürfte ziemlich Sicher ohnehin nicht der Fall sein.
Du Nullst I am Anfang deines Skripts, was heißt dein IF wird wieder TRUE, habe ich vorhin ganz übersehen.

Im Endeffekt kann dann aber nur mit deinem Case-Konstrukt was nicht passen.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oh habe ich ganz vergessen.
Ich nutze WinCC flexible 2005.

Aber wie schon geschrieben, das Skript geht nun. Das Problem mit den -1 muss am WinCC flex. liegen. Es tritt nämlich auch ohne das Skript auf. Man muss nur in der Simulation den Wert irgendeiner Variablen auf 1 setzen, dann steht beim aktuellen Wert -1 statt 1.
 
...
ich möchte einen Taster (z.B.Schaltfläche,Bild), der eine ungesetzte Variable setzt oder eine gesetzte Variable zurücksetzt.
...
Beim Drücken der Schaltfläche wird das Skript gestartet. Ist die interne Variable "test" 0, soll sie 1 gesetzt werden. Ist sie dagegen 1 soll sie 0 gesetzt werden.
...
Im Voraus herzlichen Dank
Chris

Nimm doch einfach die Funktion "Invertiere BIT"...

Dabei wird bei Klick auf die Taste das Bit invertiert - also genau das was du suchst, oder?
 
Zurück
Oben