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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 41

Thema: Archivierung Zeitgesteuert aktivieren

  1. #1
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Frage


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich will in einer Anlage die Archivierung für die Zeit von Wartungsarbeiten unterbrechen. Ganz genau geht es um ein Meldearchiv in einem MP277. Dafür habe ich mir zwei Button geschaffen. Button 1 stoppt die Archivierung und setzt ein Bit (M_Stopp_Archiv) und Button 2 startet die Archivierung und setzt das Bit (M_Stopp_Archiv) zurück. Soweit scheint das auch zu Funktionieren.
    Jetzt das Problem:
    Über das Bit (M_Stopp_Archiv) starte ich einen S5Timer der mir nach Ablauf automatisch die Archivierung wieder starten soll. Den Befehl „StarteArchivierung“ kann ich ja aber nicht direkt aus dem Netzwerk aufrufen. Also habe ich mir ein Scrip geschrieben in dem ich den Zustand von M_Stopp_Archiv Abfrage und entsprechen das Archivieren starte oder stoppe. Das Script wird aber nicht aufgerufen. Ich habe gelesen, dass es nur geht wenn das Bit durch direkte Eingabe vom User geändert wird.
    Wie kann ich jetzt aber realisieren, dass nach Ablauf des S5Timers oder zumindest nach einer Zeit die Archivierung automatisch wieder gestartet wird?
    Hintergrund: Das Archiv wird zur Fehlererfassung herangezogen. Im Falle von Wartungsarbeiten entstehen viele Fehlermeldungen die aber durch die Arbeiten und nicht im „normalen“ Ablauf der Steuerung entstehen. Diese sollen nicht mit Protokoliert werden um die Fehlerquote nicht zu verfälschen. Sollte am Ende der Wartungsarbeiten aber vergessen werden die Archivierung wieder zu aktivieren soll dies nach einer Zeit ich automatisch geschehen. Am liebsten hätte ich noch eine Textausgabe am HMI aber das lässt sich sicher auch über das Meldefenster realisieren.

    Danke für jeden Hinweis.
    Uli:
    PS: Bitte möglichst einfach beschreiben da ich TIA V12 und die Programmierung mir gerade erst beibringe.
    Zitieren Zitieren Archivierung Zeitgesteuert aktivieren  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.120
    Danke
    389
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Stell bei der Variable die Erfassungsart von "Zyklisch bei Verwendung" auf "Zyklisch" um.

    Dann wird die Variable immer erfasst, und du kannst dann bei Wertänderung dein Script ausführen.

    Grüße

    Marcel
    Stell Dir vor es geht, und keiner kriegts hin!

  3. #3
    Uli001 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Marcel,

    cih hatte die auf "Zyklisch fortlaufend" oder so stehen. Das hat aber nichts gebracht. Kann aber am Dienstag noch mal schauen. Bin morgen im Außendienst unterwegs und werde sich nicht dazu kommen.

    Danke

    Uli

  4. #4
    Uli001 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    also, mein Ausflug ist doch ausgefallen. Habe inzwischen sehen können, dass der Aufruf vom Script funktioniert. Habe in dem Script

    Code:
    If (M_Stopp_Archiv=1 And M_Stopp_Archiv_Old=0) Then
        StopLogging hmiAlarmLog, "STQ_Archiv"
    '    HmiRuntime.Trace("Stopp Logging")    
    '    ShowSystemAlarm("Stopp Logging")
        ActivateScreen "BG 04",0
    ElseIf (M_Stopp_Archiv=0 And M_Stopp_Archiv_Old=1) Then
        StartLogging hmiAlarmLog, "STQ_Archiv"
    '    HmiRuntime.Trace("Start Logging")    
    '    ShowSystemAlarm("Start Logging")
        ActivateScreen "BG 05",0
    Else
    
    End If
    M_Stopp_Archiv_Old=M_Stopp_Archiv
    Ich rufe die Bilder nur auf um zu sehen ob der Zweig des Programmcodes auch durchlaufen wird. Leider wird aber immer nur der ELSE-Zweig durchlaufen. Stimmt was mit der letzten Zuweisung nicht? Beider Variablen werden gleich eingelesen.

    VG Uli

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.330 Danke für 2.689 Beiträge

    Standard

    Wodurch wird Dein Script aufgerufen?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Uli001 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Harald,

    ich verwende das Ereignis "Wertänderung" der HMI-Variable M_Stopp_Archiv. Kann das sein, dass dieses Ereignis jedes Mal beim Zyklischen einlesen ausgelöst wird? Ich habe das Gefühl, dass mein Script permanent aufgerufen wird. Wenn ich z.B. in den Else-Zweig die Darstellung eines Bildes implementiere erscheint dies immer wieder OHNE das ich den Butten der M_Stopp_Archiv auf High setzt betätige. z.Z. setzte ich den Wert für M_Stopp_archiv über ein Button auf 1 und über einen Timer wieder auf 0 Der Teil läuft auch. Nur bei einem Timer von 300s wird das Bild viel häufiger aufgerufen was nicht sein dürfte. Das Script wird ja "eigentlich" nur beim loslassen des Buttons und nach dem Ablauf des Timers aufgerufen.


    VG Uli

  7. #7
    Registriert seit
    17.02.2009
    Ort
    Niederrhein
    Beiträge
    86
    Danke
    10
    Erhielt 8 Danke für 7 Beiträge

    Standard

    Ich bin jetzt auch nicht der Sripting-Spezi
    aber muss die letzte Anweisung nicht genau anders herum lauten?

    Code:
    falsch:
    M_Stopp_Archiv_Old = M_Stopp_Archiv
    
    richtig:
    M_Stopp_Archiv = M_Stopp_Archiv_Old
    Ich würde das Sript auch in zwei einzelne If-Abfragen gliedern
    Code:
    If (M_Stopp_Archiv=1 And M_Stopp_Archiv_Old=0) Then
        StopLogging hmiAlarmLog, "STQ_Archiv"
    '    HmiRuntime.Trace("Stopp Logging")    
    '    ShowSystemAlarm("Stopp Logging")
        ActivateScreen "BG 04",0
    End If
    
    If (M_Stopp_Archiv=0 And M_Stopp_Archiv_Old=1) Then
        StartLogging hmiAlarmLog, "STQ_Archiv"
    '    HmiRuntime.Trace("Start Logging")    
    '    ShowSystemAlarm("Start Logging")
        ActivateScreen "BG 05",0
    End If
    
    M_Stopp_Archiv = M_Stopp_Archiv_Old
    Gruß ukofumo
    Geändert von ukofumo (22.01.2015 um 18:44 Uhr)
    Gruß ukofumo

    Es ist vollkommen egal, wie oft man im Leben hinfällt. Es ist nur wichtig, wie oft man wieder aufsteht.

  8. #8
    Registriert seit
    04.01.2015
    Beiträge
    64
    Danke
    0
    Erhielt 18 Danke für 17 Beiträge

    Standard

    Ich weiss jetzt nicht welche Programmiersprache hier verwendet wird.

    Ist es aber schon richtig das der Vergleich in der IF Anweisung (x=y) und die Zuweisung (VariableOld = Varialbe) gleich aussehen ?

    lg Günther

  9. #9
    Uli001 ist offline Benutzer
    Themenstarter
    Registriert seit
    08.01.2015
    Ort
    Leipzig
    Beiträge
    37
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Guten Morgen

    @ukofumo
    Also wenn ich von meinen Kenntnissen in VBA (Visual Basic for Applications) welches in Excel, Access und Co verwendet wird, ausgehe bin ich mit der Zuweisung richtig. Ich werde aber sowohl die Zuweisung als auch die Aufsplittung der IF-Funktion testen. Ich bin aber immer noch irritiert warum das Script permanent aufgerufen wird. Eigentlich soll das nur bei Wertänderung von „M_Stopp_Archiv“ erfolgen. Na ich gehe gleich an die Anlage und teste weiter.

    @roger34
    Die Scriptsprache müsste ein abgewandeltes Visual Basic sein. Leider habe ich hier noch keinen Debugger finden können wie ich es bei z.B. Excel habe. Ich habe das jetzt mal in Word nachgebaut und erhalte genau das Verhalten wie ich es erwartet habe. Da es bei einer SPS meist nur um 0 oder 1 (H oder L) geht kannst du die Zuweisung sicher auch anders machen:
    Code:
     If (M_Stopp_Archiv And !M_Stopp_Archiv_Old) Then
    Der Code ist nicht getestet sollte aber aus VBA auch gehen. Mal schauen ob die Vorschläge von ukofumo helfen.
    Danke für die Antworten und ich hoffe auf weiter Hilfe.
    Uli

  10. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    das mit dem Ausdrufezeiche als Negation (wie bei z.B. C#) funktioniert bei VB m.E. nicht. Was aber geht (wenn deine beiden Variablen BOOL sind) ist :
    Code:
    If (M_Stopp_Archiv And NOT M_Stopp_Archiv_Old) Then
    was mich aber interessieren würde : wenn der Trigger für dein Script die Wertänderung von M_Stop_Archiv ist - wann ändert diese Variable ihren Zustand - also : wo wird die beeinflusst und wie ?

    Gruß
    Larry

Ähnliche Themen

  1. Step 7 Neuen Wert laden, zeitgesteuert
    Von S-Victor im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 13.06.2013, 18:11
  2. Script in Flexible zeitgesteuert aufrufen
    Von Bensen83 im Forum HMI
    Antworten: 5
    Letzter Beitrag: 17.09.2011, 11:25
  3. Antworten: 2
    Letzter Beitrag: 09.09.2011, 08:02
  4. DALI Gruppe oder EVG zeitgesteuert (mittel Scheduler) ansprechen
    Von t.arni im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 09.08.2010, 17:10
  5. Step7 Ausgaänge Zeitgesteuert setzen
    Von buffi4711 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 23.09.2006, 14:23

Stichworte

Lesezeichen

Berechtigungen

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