WinCC 7.2 VBS Aufrufe

Krumnix

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

Ich habe ein VB-Script geschrieben, mit dem ich in mehreren Bildfenstern die jeweiligen Bilder lade.
Da ich 5 verschiedene Bilder-Typen habe, habe ich das Script für diese 5 Typen angepasst, sprich,
das Script gibt es 5 Mal jeweils mit kleinen Änderungen.
Diese rufe ich immer dann auf, wenn ein Button zum Bildwechsel gedrückt wird.
Das funktioniert alles super.

Nun wollte ich eine weitere Funktion umsetzen die in jedem Script genutzt werden sollte.
Also dachte ich mir, schreibe ich eine neue SUB und rufe diese in jedem der anderen Scripte auf.

Hier habe ich aber ein Problem. Das Script wird nicht aufgerufen. D.H. er läuft in dem Bildaufrufscript
solagen durch, bis er zum Aufruf des neuen Scriptes kommt. Dann geht nix mehr.
Selbst wenn ich in dem neuen Script nur ein Trace schreibe, kommt nix.

Weiß einer warum?

-> Button drücken -> Aufruf globales VBS "Lade_Bild_xy" -> Aufruf UnterSUB "Lese_Benutzer" <---- Funktioniert nicht mehr!
 
Wenn die Untersub nicht durchläuft sollte im Diagfenster zumindest eine Fehlermeldung erscheinen.
PS. Was meinst Du mit "geht nix mehr"? Hängt sich VBS komplett auf?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ja das komische, es wird nix angezeigt im apDiag. Keine Meldung, nix.
Ich habe vor dem Aufruf ein HMIRuntime.Trace und nach dem Aufruf.
Im apDiag erscheint der 1. Trace der 2. nicht mehr.
Die Bearbeitung der anderen VBS bleibt für ca. 5s stehn. Das sehe ich daran, das alle Farbumschläge für ca. diese Zeit keine Änderung mehr haben.
Danach läuft alles normal weiter.
Wenn ich den Aufruf aber auskommentiere, dann läuft es weiter....

Code:
HMIRuntime.Trace "Aufruf neue Funktion" & vbCrLf
Lese_Benutzer
HMIRuntime.Trace "Nutzer gelesen" & vbCrLf

Lese_Benutzer:
Code:
HMIRuntime.Trace "Test!" & vbCrLf
 
Provoziere doch mal eine Fehlermeldung. Ich hatte schon den Fall, dass apdiag keine Fehler mehr angezeigt hat.
 
Hab ich schon gemacht. Wenn ich einen Tippfehler bei dem Aufruf der Sub mache, kommt "Variable nicht deklariert".
Kann es sein, das man bei globalen Aufrufen keine Unterprogramme aufrufen kann oder darf?
Wo kann ich die Veschachtelungstiefe für VBS erfahren?
 
Evtl. doofe Frage:
Hast du das Projekt zwischendurch mal gestoppt und geschlossen?
Ich habe die Erfahrung gemacht, das VBS in WinCC sich komisch verhält, wenn man bei laufender Runtime rumprogrammiert und speichert.
Nach Projekt schließen war dann meist alles wieder sauber.

Gruß,
Tuffi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jepp. Auch auf einen anderen Server überspielt, um das ggf. auszuschließen.
Komischerweise auch das gleiche Verhalten.
Alles was im direkten Script ausgeführt werden soll, funktioniert. Egal welches Sub ich daraus aufrufen will, funktioniert nicht.
 
Globaler Aufruf? Das wär dann eine Aktion! Hast Du nicht gesagt es sei eine Sub?
 

Anhänge

  • Script.JPG
    Script.JPG
    45,4 KB · Aufrufe: 22
Zuletzt bearbeitet:
Ja, eine Sub, kein Function.
Die Subs liegen in unterschiedlichen Dateien. Ich will die Sub Lese_Benutzer ja in mehreren anderen Sub verwenden.
 
Hallo,

ja die Scripte bei WinCC sind manchmal ein bisschen komisch in Ihrem Verhalten.
Aber versuch mal ein Public vor die Sub zusetzen.

Public Sub Test()
...

end sub
 
Ähm, das ist jetzt nicht der Ernst von Siemens. Ich habs gefunden, aber es ist sowas von bescheuert.
In allen Bildern, wo ich das Hauptscript per Button aufrufe, muss ich dieses im Designer öffnen und wieder abspeichern.
Erst dann funktioniert das.
D.H. sobald ich ein neues Script schreibe, das ich als Unterscript in einem bestehenden Script aufrufe, muss ich
alle Scripte oder Bilder, in denen das schon bestehende Script verarbeitet wird, nochmalig zusätzlich neu speichern.

Lustigerweise steht das auch genauso im Handbuch von Siemens drin.
Aber einen Sinn dahinter ist mir noch nicht ganz klar, war aber die Lösung des Problems!!!
 
Zuletzt bearbeitet:
Zurück
Oben