Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: WinCC Runtime Start VB-Script verhindern

  1. #1
    Registriert seit
    30.01.2009
    Beiträge
    442
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard


    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

    Gruß
    Move
    Zitieren Zitieren WinCC Runtime Start VB-Script verhindern  

  2. #2
    Registriert seit
    13.09.2011
    Ort
    Dresden
    Beiträge
    51
    Danke
    15
    Erhielt 12 Danke für 11 Beiträge

    Standard

    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.
    // Alles was du hast, hat irgendwann dich. (Tyler Durden)

  3. #3
    Move ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.01.2009
    Beiträge
    442
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    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

  4. #4
    Registriert seit
    13.10.2007
    Beiträge
    12.064
    Danke
    2.793
    Erhielt 3.288 Danke für 2.168 Beiträge

    Standard

    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.

  5. #5
    Move ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.01.2009
    Beiträge
    442
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    Hi,

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

    Gruß
    Move

  6. #6
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard

    Ändere mal das Ganze zu

    Code:
    IF NOT CBOOL(SmartTag("..Script-Freigabe-Bit..")) 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.

  7. #7
    Move ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.01.2009
    Beiträge
    442
    Danke
    25
    Erhielt 48 Danke für 44 Beiträge

    Standard

    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.....

  8. #8
    Registriert seit
    20.02.2008
    Beiträge
    332
    Danke
    16
    Erhielt 40 Danke für 37 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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?

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 19.04.2011, 11:54
  2. Antworten: 1
    Letzter Beitrag: 01.10.2009, 09:27
  3. Antworten: 1
    Letzter Beitrag: 03.07.2007, 08:25
  4. Antworten: 4
    Letzter Beitrag: 06.02.2006, 15:16
  5. Antworten: 2
    Letzter Beitrag: 27.01.2006, 19:31

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •