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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: WinCC, VBS, 500ms Trigger, Abarbeitung nur einmal, auch wenn Trigger 2-3 Mal kommt

  1. #1
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Hab ein VB-Script, das alle 500ms in einem Ordner auf der Festplatte nach
    einer Datei sucht. Ist diese vorhanden, soll sie ausgelesen werden und
    dann gelöscht werden.

    Das Problem ist, das in den 500ms das ganze noch nicht erledigt ist, und
    der Trigger wieder startet.
    So wird die Datei 2mal ausgelesen, bis sie gelöscht wurde.

    Wie kann ich es erreichen, das Laufzeittechnisch das ganze so möglich ist,
    dass das Script das im Trigger-Script aufgerufen wird, nur einmal startet,
    bis die Datei gelöscht wurde und erst dann wieder frei gibt.

    Einen "Merker", der beim Aufruf des Trigger-Scripts gesetzt wird, wenn die
    Datei gefunden wurde und erst rückgesetzt wird, wenn das 2. Script zum
    Auslesen und löschen fertig ist, funktioniert leider nicht.
    Irgendwie wird die Datei doch 2mal gelesen.

    Irgendwer eine Idee?
    Danke
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN
    Zitieren Zitieren WinCC, VBS, 500ms Trigger, Abarbeitung nur einmal, auch wenn Trigger 2-3 Mal kommt  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Ist der Merker statisch (also mit Gedächtnis) bzw. global oder nur innerhalb einer Funktion?
    Wie wird auf den Merker reagiert?
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.624
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    VBS ist nicht geeignet zyklische Aufgaben in schnellen takt zu bearbeiten.
    Es gibt ein Puffer von 20 Skripte. Wenn diese Puffer überlauft ist es schluss.

    Du konntest eventuell die Verknüpfung das es schon gestartet ist, in eine weitere Skript steuern. Dann rufts du von diese Skript das Skript mit lesen und löschen.

    Besser wäre wenn du z.b. von der SPS steuert das das Skript nur einmal gerufen wird, und das Skript meldet zurück das es fertig ist. Erst dann kann es wieder gestartet werden. Dann kannst du auch eine Zeitüberwachung programmieren, und evtl. ein Störmeldung ausgeben wenn etwas nicht klappt mit den Skript.
    Jesper M. Pedersen

  4. #4
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Wie immer bei sowas, darf ich nur die Visu anfassen. Von der SPS habe ich
    kein Projekt zur Verfügung.
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  5. #5
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    Wie immer bei sowas, darf ich nur die Visu anfassen. Von der SPS habe ich
    kein Projekt zur Verfügung.
    Was ist mit Rainers Frage?
    Zitat Zitat von Rainer Hönle Beitrag anzeigen
    Ist der Merker statisch (also mit Gedächtnis) bzw. global oder nur innerhalb einer Funktion?
    Wie wird auf den Merker reagiert?

  6. #6
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.624
    Danke
    377
    Erhielt 801 Danke für 642 Beiträge

    Standard

    Diese Funktionalität sollte möglich sein.
    Einen "Merker", der beim Aufruf des Trigger-Scripts gesetzt wird, wenn die Datei gefunden wurde und erst rückgesetzt wird, wenn das 2. Script zum Auslesen und löschen fertig ist, funktioniert leider nicht.
    Irgendwie wird die Datei doch 2mal gelesen.
    Zeig uns dein Code.
    Jesper M. Pedersen

  7. #7
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Der "Merker" ist in der Variablen-Liste im WinCC erstellt worden.
    Jedes Script hat also Zugriff drauf.

    Das Startscript ist mit einem Trigger von 500ms versehn.
    In diesem wird einfach nur überrpüft, ob eine Datei vorhanden ist.

    [PHP]If Neue_Datei then
    --> Versuchsweise ohne Erfolg: If Not Am_Lesen then
    Datei_Auslesen()
    --> End If
    End If
    [/PHP]

    Das 2. Script, das dann aufgerufen wird, liest die Datei ein und löscht sie dann.
    Beim Start des Script steht in der ersten Reihe
    Am_Lesen = true

    Am Ende des Scripts steht
    Am_Lesen = false

    Das wars schon.
    Trotzdem wird die Datei 2mal ausgelesen und der Inhalt 2mal verarbeitet.
    Ist zwar der Gleiche, aber stört im Prozess schon.
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    @Krumnix:
    Was ist denn genau der Trigger für dein Script ?
    Bool-Variable und die "bei Wert-Änderung" ?
    Hast du berücksichtigt, dass eine Wertändrung die Ändereung der Variablen von 0 - > 1 und genauso auch das Rückfallen von 1 -> 0 ist ?
    Wenn nicht dann schreib doch in den Kopf des Scriptes einfach mal mit rein, dass es nur bearbeitet werden soll wenn der Trigger = true ist ... also vielleicht so :
    Code:
    if myTrigger then
     
     ... hier dein Code
     
     
    end if
    ... ganz sauber werden wirst du so aber auch nicht. Der Vorschlag von Jesper ist hier schon den zuverlässigste Weg ... (es geht halt nichts über einen Handshake)

    Gruß
    Larry

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zusatz :
    Wie speicherst du dir denn das "Am_Lesen" und wo weisst du es zu ?

  10. #10
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Trigger für das Script sind 500ms. Also ein Zeitwert.
    Keine Variable, keine Änderung. Wird einfach alle 500ms aufgerufen.

    Variable ist eine Interne Variable.
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

Ähnliche Themen

  1. Trigger-BIT von HSC (INC-Encoder)
    Von Rauchegger im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 03.11.2011, 13:51
  2. trigger zur wertabfrage / OPC
    Von Arcon im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 21.05.2010, 11:34
  3. WinCC Trigger ändern
    Von Farinin im Forum HMI
    Antworten: 5
    Letzter Beitrag: 02.03.2009, 08:23
  4. Antworten: 3
    Letzter Beitrag: 28.04.2008, 09:03
  5. WinCC Trigger global verändern
    Von Rengel im Forum HMI
    Antworten: 7
    Letzter Beitrag: 17.06.2005, 15:52

Lesezeichen

Berechtigungen

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