WinCC Daten mit VB Script übergeben

Afromann

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

ich hab in meinem WinCC das Messgerät über Modbus TCP angeschlossen und kann mir darüber jetzt die Werte anzeigen lassen.
Jetzt will ich einige Werte in die SPS übertragen und wollte das mit einem VB Script machen - was soweit auch funktioniert, allerdings nur wenn ich manuell auf einen WinCC Knopf klicke.

Ich will das die Daten laufend übertragen werden und hatte dabei einfach an eine Endlosschleife gedacht, was allerdings nicht funktioniert...habt ihr ne Idee?

Code:

Sub Prozessenergie()


Dim s, I
I=1
While I < 6


Set s = SmartTags("Prozesswirkenergie")
SmartTags("VB_1")= s


Wend
End Sub


So wie es aussieht bleibt er einfach nicht in der Schleife drin....
 
Dein Skript wird vermutlich abgebrochen wegen einem Runtime-Error bei "Set". Siehst Du irgendwo Fehlermeldungen?
Welches WinCC benutzt Du auf welcher Hardware?

Deine "Lösung" ist seeehr ungewöhnlich...
Es ist im allgemeinen überhaupt keine gute Idee, VBS-Skripte längere Zeit oder gar endlos in Schleifen laufen zu lassen.
Warum ist das Meßgerät nicht an der SPS angeschlossen?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das müsstest du in eine globale Aktion packen. Dazu im WinCC Editor über "Global Script" je nach Geschmack den C- oder VBS-Editor öffnen, und dort eine neue globale Aktion anlegen. Bei dieser Aktion stellst du nun eine für dich passende Triggerbedingung ein, bei deren eintreten die Aktion ausgeführt werden soll. Z.B. bei Variablenänderung, oder zyklisch alle 5 Sekunden.

Dann musst du überprüfen, ob die Global Script Runtime mitgestartet wird. Das stellst du in den Projekteigenschaften des Rechners, unter "Anlauf" ein. Dort einen Halen setzen, und die Runtime neu starten.

Edit: Das gilt für WinCC Scada, nicht für WinCCflexible oder WinCC-TIA-Portal.
 
Zuletzt bearbeitet:
Danke schon mal für die Antworten.

Ich kann das Messgerät nicht direkt an die SPS anschließen, da mit hierfür der Kommunikationsbaustein fehlt und über WinCC ging das sehr einfach und Verbindungen.

Ich habe WinCC v13 im Tia Portal und eine 300er CPU...
 
Set s = SmartTags("Prozesswirkenergie")
SmartTags("VB_1")= s

So wie es aussieht bleibt er einfach nicht in der Schleife drin....
Wie von PN/DP schon angedeutet fliegst du mit nem Script-Fehler aus der Schleife bzw. dem ganzen Script raus.
Wenn es laufen würde, sehe nirgends wo eine Abbruchbedingung für die while-Schleife, würde sich die GlobalScriptRuntime aufhängen.

Das "Set s" müsste dabei noch hinhauen, da erzeugst du eine Objekt-Referenz auf das SmartTags-Objekt "Prozesswirkenergie")
In der zweiten Zeile, wo die Zuweisung der erzeugten Referenz erfolgt, wird es wahrscheinlich zum Problem kommen.

Siehe hier zu die Dokus des Smarttags-Objektes:
Handbuch: WinCC V7.2 WinCC: Scripting (VBS schrieb:
1.14.2.20 SmartTags Object

Example 1:
'VBS306
Dim w
w = SmartTags("var1")
w = w + 10
SmartTags("var1") = w

Example 2: Direct reading and writing with object reference
'VBS307
Dim w
Set w = SmartTags("var1")
w.value = w.value + 10
Wähle eine der beiden Varianten oder schreibe einfach direkt: SmartTags("VB_1") = SmartTags("Prozesswirkenergie").
Das mit dem While ist natürlich nichts, folge hier einfach der Anleitung von Thomas.

da mit hierfür der Kommunikationsbaustein fehlt - eine 300er CPU...
Falls Interesse: Modbus-TCP Beispiel von Lars Weiß für S7-300
http://www.sps-forum.de/simatic/40150-modbus-tcp-kommunikation-von-sentron-pac3200.html#post291106
 
Zuletzt bearbeitet:
Zurück
Oben