WinCC Runtime Start VB-Script verhindern

Move

Level-2
Beiträge
510
Reaktionspunkte
58
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

habe da mal wieder ein Problem.
Habe in WinCC sieben verschiedene VB-Scripte hinterlegt, die
alle S7-Variablen getriggert sind.
Die Scripte schreiben WinCC-Variablen Richtung Excel, läuft alles soweit.
Das Problem, starte ich die WinCC-Runtime werden alle Scripte gleichzeitg ausgeführt,
somit kommt natürlich "Müll" zusammen.
Wie kann ich das verhindern, ich denke da an Variable setzen und solange diese
gesetzt ist, wird kein Script ausgeführt.
Leider fehlt mir hier die richtige Syntax dazu, da ich nicht der VB-Experte bin:confused:

Gruß
Move
 
Wie wäre es mit einem

IF NOT SmartTag("..Script-Freigabe-Bit..") THEN EXIT SUB/FUNCTION

vor deinen VBA-Script? Das Freigabebit setzt du verzögert nach Runtime-Start in der SPS.
Den Runtime-Start kann man mit Verbindungen/Bereichszeiger/Koordinierung überwachen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, danke für den Tip,

die Exit-Funktion funktioniert super, leider
unabhängig vom Status meiner Variable.
Oder anders gesagt, die Variablenabfrage ob null oder eins
funzt irgendwie nicht. (Variable ist auf jeden Fall eins)
Gruß
Move
 
Du solltest die Variable mit einer Steuerungsanbindung machen und auf Ständig lesen stellen.

Oder

Eine interne Variable nehmen und diese auf True setzen, wenn du es zulässt das die Scripte abgearbeitet
werden sollen.
 
Hi,

die Variable ist an einer Steuerung gebunden, ist ein Bit im DB.
Wo stelle ich den das ständige lesen ein?

Gruß
Move
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ändere mal das Ganze zu

Code:
IF NOT [U]CBOOL([/U]SmartTag("..Script-Freigabe-Bit..")[U])[/U] THEN EXIT SUB/FUNCTION

Das Problem liegt in der unterschiedlichen Definition von Bool zwischen Siemens und VB. Bei Siemens ist das ein Bit, das 0 und 1 annehmen kann. Bei Vb ist das ein integer der 0=False und -1=true annimmt.
 
Hi asci25,

habe es mal umgesetzt, aber gleiches Problem.
Das Script läuft nicht mehr, da die Abfrage
ob Variable Frg_VBS = 1 ist nicht funktioniert.

Gruß
Move
Option Explicit
Function action
' WinCC Werte lesen und nach Excel schreiben

'If Not SmartTag("Frg_VBS") Then Exit Function // erste Variante

If Not CBool(SmartTag("Frg_VBS")) Then Exit Function // zweite Variante

Dim excel, wbActive, wsActive
'Create an Excel-Application object
Set excel = CreateObject("Excel.Application")
excel.Visible = 0

etc.....
 
Wenn ich solche eigenartigen Probleme habe, die sich scheinbar nicht auflösen lassen, dann baue ich mir Test-Zeilen ein, mit denen ich Verarbeitungszustände teste.

Man könnte z.B. als erstes Schreiben:

Code:
MsgBox( CStr(CBool(SmartTag("Frg_VBS"))))

oder wenn Du die echte WinCC hast, geht auch

Code:
HMIRuntime.Trace CStr(CBool(SmartTag("Frg_VBS"))) & vbCrLf

und das Ganze mit der apdiag.exe oder der GDC-Diagnose betrachten.
Was hast Du dann für eine Ausgabe?
 
Zurück
Oben