WinCC Flex Variable in VB setzen und in SPS übertragen

Krumnix

Level-3
Beiträge
1.457
Reaktionspunkte
190
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo.

Möchte gerne eine Variable vom Typ Bool in einem VB-Script auf
True oder False setzen und dann an die SPS übertragen.

Jedoch kommt der Wert in der SPS nicht an.

Laut Siemens sollte die Version:
Set xyz = SmartTags("hhdjh")

xyz = false

funktionieren.

Jedoch passiert da nix.

Das Bit, wird in der SPS im Moment nirgends gesetzt oder rückgesetzt,
deswegen kann ich das erstmal ausklammern.

Muss ich da noch einen Befehl dabei setzen, wie bei WinCC?
Und welcher ist das?

Danke
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich sag jetzt mal nix dazu, aber ich denke, das sollte man schon
voraussetzen, das ich das Script auch ausführe.....

Schließlich werden alle Berechnung in dem Script abgearbeitet,
nur das ich der SPS dann sagen will, ich bin fertig mit der Berechung,
das geht NICHT.....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ResetBit muss ich morgen mal testen, danke.
Kannte ich noch nicht.

Aber mal eine kleine Info zu dem ganzen Ablauf, damit es ggf.
einfacher zu verstehn ist oder ich woanders einen Denkfehler hab.

In der SPS wird nach einer bestimmten Bedingung ein Bit gesetzt (S).
Das setzen erfolgt über eine positive Flanke (P).

|--U e1.0---U m3.1----(P)----(S M5.7)

Im WinCC Flex hab ich ein Scirpt laufen, das per do loop until läuft und
mit einer Taste gestartet wird.

Wenn der M5.7 eins hat, wird in der Schleife eine Berechnung gemacht.
Ist die Berechnung beendet, soll der Merker auf Null gesetzt werden,
damit eine neue Berechnung bei den nächsten Bedingungen gestartet
werden kann.

Das Berechnen läuft super, das sie erst mit dem Merker auf eins startet
auch, nur das am Ende der nicht auf Null gesetzt wird, das ist Ungünstig,
weil ja dann die Berechung im Zyklus der do loop Schleife erfolgt, was nicht
sein sollte.

Aber ggf. ist es mit dem einem Befehl schon gelöst.

Danke für die Info

Gruß
 
Code:
Set xyz = SmartTags("hhdjh")
xyz = false
Set SmartTags("hhdjh") = xyz

Funktioniert nicht.
Merkert er ganz böse.

Aber für alle, die auch mal das Problem haben oder ein sogenanntes
Globales Script für WinCC Flex haben wollen:

1. Das Script muss beim ersten Aufruf gestartet werden.
Global laufende Scripte gibt es ja nicht.

2. In dem Script sollte eine do loop until Schleife programmiert werden,
die endweder immer auf True steht oder durch eine Bedingung beendet
werden kann. Das ist egal. Jedoch muss nach dem Beenden das Script
wieder angestoßen werden.

3. Das Script muss eine Sub sein.

4. Um im Script Varibalen in der SPS zu setzen oder was auch immer
in "Echtzeit" in der SPS verändern, muss die Bedingung in eine
FUNCTION.
Bedeutet, das wenn man einen Merker rücksetzen möchte, geht das
nur in einer Funktion.

5. Die Funktion dann im "Globalen Script" aufrufen. Da nur beim Beenden
eines Scriptes alle Veränderungen auch an die SPS "weitergereicht" werden.

6. Die Zuweisung in der Funktion für eine Variable, die in die SPS
übertragen werden soll MUSS folgenderweise lauten:

SmartTags("Variablen_Name") = Neuer Wert

Damit konnte ich dann mein Problem lösen.

Hat mich die ganze Nacht wach gehalten ^^

Alle anderen Vorschläge haben leider NICHT funktioniert
 
Zuviel Werbung?
-> Hier kostenlos registrieren
doch das muss gehen.
ist evtl von der syntax her nicht ganz korrekt.
habe jetzt kein wccf zur hand nur protool.

unter protool klappt folgendes
Code:
[SIZE=2][COLOR=#0000ff]
Dim[/COLOR][/SIZE][SIZE=2] temp_var
[/SIZE][SIZE=2][COLOR=#ff0000]steuerung_var[/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#0000ff]false
[/COLOR][/SIZE][SIZE=2][/SIZE][SIZE=2][COLOR=#008000]'oder
[/COLOR][/SIZE][SIZE=2]temp_var = [/SIZE][SIZE=2][COLOR=#ff0000]steuerung_var
[/COLOR][/SIZE][SIZE=2]temp_var = [/SIZE][SIZE=2][COLOR=#0000ff]false
[/COLOR][/SIZE][SIZE=2][COLOR=#ff0000]steuerung_var[/COLOR][/SIZE][SIZE=2] = temp_var
[/SIZE]
 
habs doch zur hand. dachte ich hätte das hier nicht installiert.:confused:

so siehts in wccf aus.
Code:
Dim temp_var
SmartTags("steuerug_var") = False
'oder
temp_var = SmartTags("steuerug_var")
temp_var = False
SmartTags("steuerug_var") = temp_var
 
Ja, hab ich ja oben geschrieben ;)

Der 2. Vorschlag hieß aber "Set SmartTags("xy") = VarBB"

Und das Set funktioniert so nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Richtig...

wie soll das funktionieren?
du weist der temporären variablen xyz den false zu obwohl du hhdjh auf false setzen willst

Set xyz = SmartTags("hhdjh")
xyz = false
Set SmartTags("hhdjh") = xyz

kürzer wäre es natürlich so :ROFLMAO:
hhdjh = false



Nei, das wäre da schon richtig.
mit Set weist man xyz einen verweis auf die variable zu.
also von der syntax wäre was er machen will schon richtig!

und
Set SmartTags("hhdjh") = xyz
wäre von der syntax her falsch, deshalb mekert er auch.

also normalerweise sollte bei einer änderung von xyz auch der wert von hhdjh geändert werden, da es aber nicht funktioniert, scheint das von siemens nicht implementiert zu sein!!
 
Zurück
Oben