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

Ergebnis 1 bis 8 von 8

Thema: Timer (SE) starten nicht immer

  1. #1
    Registriert seit
    12.11.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,
    ich habe folgendes Problem und zwar will ich nach Beenden von unterschiedlichen Ereignissen (ich nenn sie mal „Ereignis A“ und „Ereignis B“) bestimmte Bits zeitverzögert wieder freigeben. Ich wollte es mit SE Timern machen, aber nach ein paar Durchläufen starten die Timer nicht mehr. (Die Timer werden im FB mit Instanzen DB aufgerufen/gestartet.)
    Ich benutze: VIPA CPU 313SC und Step7 V5.4

    bei Ereignis_A : sperre1=1 /
    sperre2=1 / sperre3=0 / sperre4=1 / sperre5=1
    bei Ereignis_B : sperre1=1 / sperre2=1 / sperre3=1 / sperre4=1 / sperre5=1

    Hier mal mein code
    Code:
          U     #Ereignis_A
          FN    #NF1
          =     #Impuls_NF1
          U     #Impuls_NF1
          S     #Stat_NF1
          
          U     #Ereignis_B
          FN    #NF2
          =     #Impuls_NF2
          U     #Impuls_NF2
          S     #Stat_NF2
          
          U     #Stat_NF1
          UN    #Stat_NF2
          SPBN  too1
          L     0
          T     #Sprungzahl
    to1: NOP   0
    
          UN    #Stat_NF1
          U     #Stat_NF2
          SPBN  to2
          L     4
          T     #Sprungzahl
    too2: NOP   0
    
          UN    #Hilf_NF1
          UN    #Hilf_NF2
          UN    #Stat_NF1
          UN    #Stat_NF2
          SPB   Ende
    
    // #### Sprungverteiler #### //
          L     #Sprungzahl
          SPL   sEnd                        // Sprungzahl > 8
          SPA   spv0                        // Sprungzahl = 0
          SPA   spv1                        // Sprungzahl = 1
          SPA   spv2                        // Sprungzahl = 2
          SPA   spv3                        // Sprungzahl = 3
          SPA   spv4                        // Sprungzahl = 4
          SPA   spv5                        // Sprungzahl = 5
          SPA   spv6                        // Sprungzahl = 6
          SPA   spv7                        // Sprungzahl = 7
          SPA   spv8                        // Sprungzahl = 8
    
    //----------------------------
    sEnd: NOP   0
          SPA   Ende
    
    // ---- Freigabe, wenn Ereignis_A deaktiviert wurde --- //
    //----------------------------
    spv0: NOP   0
          S     #Hilf_NF1
          U     #Stat_NF1
          L     S5T#1S
          SE    T    200
          U     T    200
          R     #Stat_NF1
          SPBN  m000
          R     #Sperre1
          L     1
          T     #Sprungzahl
    m000: SPA   Ende
    //----------------------------
    spv1: NOP   0
          UN    DB86.DBX    1.0
          L     S5T#1S
          SE    T    201
          U     T    201
          SPBN  m001
          R     #Sperre2
          L     2
          T     #Sprungzahl
    m001: SPA   Ende
    //----------------------------
    spv2: NOP   0
          UN    DB86.DBX    1.1
    
          L     S5T#1S
          SE    T    202
          U     T    202
          SPBN  m002
          R     #Sperre4
          L     3
          T     #Sprungzahl
    m002: SPA   Ende
    //----------------------------
    spv3: NOP   0
          UN    DB86.DBX    2.1
          L     S5T#1S
          SE    T    203
          U     T    203
          SPBN  m003
          R     #Sperre5
          R     #Hilf_NF1
          L     100                         //spl sEnd (>8)
          T     #Sprungzahl
    m003: SPA   Ende
    
    
    // ---- Freigabe, wenn Ereignis_A deaktiviert wurde --- //
    //----------------------------
    spv4: NOP   0
          S     #Hilf_NF2
          R     #Stat_NF2
    
          U     #Hilf_NF2
          L     S5T#1S
          SE    T    210
          U     T    210
          SPBN  m004
          R     #Sperre1
          L     5
          T     #Sprungzahl
    m004: SPA   Ende
    //----------------------------
    spv5: NOP   0
          UN    DB86.DBX    1.0
          L     S5T#1S
          SE    T    211
          U     T    211
          SPBN  m005
          R     #Sperre2
          L     6
          T     #Sprungzahl
    m005: SPA   Ende
    //----------------------------
    spv6: NOP   0
          UN    DB86.DBX    1.1
          L     S5T#1S
          SE    T    212
          U     T    212
          SPBN  m006
          R     #Sperre3
          L     7
          T     #Sprungzahl
    m006: SPA   Ende
    //----------------------------
    spv7: NOP   0
          UN    DB86.DBX    1.2
          L     S5T#1S
          SE    T    213
          U     T    213
          SPBN  m007
          R     #Sperre4
          L     8
          T     #Sprungzahl
    m007: SPA   Ende
    //----------------------------
    spv8: NOP   0
          UN    DB86.DBX    2.1
          L     S5T#1S
          SE    T    214
          U     T    214
          SPBN  m008
          R     #Sperre5
          R     #Hilf_NF2
          L     100                         //spl sEnd (>8)
          T     #Sprungzahl
    m008: SPA   Ende
    //----------------------------
    Ende: NOP   0
    // ######## ENDE ######## //
      
          L     100
          L     #Sprungzahl
          ==I   
          SPBN  unte
          R     T    200
          R     T    201
          R     T    202
          R     T    203
          R     T    204
          R     T    210
          R     T    211
          R     T    213
          R     T    214
          FR    T    200
          FR    T    201
          FR    T    202
          FR    T    203
          FR    T    204
          FR    T    210
          FR    T    211
          FR    T    213
          FR    T    214
    
    unte: NOP   0
    Das Reseten und Freigeben der Timer war ne Verzweifelungstat, es ging bissle besser. Ich sitze nun schon zu lange dran. Habe gerade kein kopf mehr dafür.
    Versuche ich das zeitverzögerte Rücksetzen der Sperren zu kompliziert zu lösen? Das muss doch einfacher gehen, oder?
    Ich hoffe man kann mir helfen. Danke im Voraus.
    Zitieren Zitieren Timer (SE) starten nicht immer  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Eines musst du dir ganz grundsätzlich merken:
    Timer Arbeiten Flankengesteuert und sollten aus genau diesem Grund NICHT übersprungen werden.
    D.H. z.B. dein Timer 200, dieser läuft ab, und schaltet dein Sprungleiste 1 Weiter,
    das Stat_NF1 wieder LOW ist bekommt der Timer schon gar nicht mehr mit.

    Ich würde sogar soweit gehen, das dein Ablauf jeweils genau 1 mal funktioniert, und dann einfach durchrattert,
    wenn dein Rücksetzen Freigeben nicht wäre.

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Hello_SPS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.11.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok, das werde ich mir merken.
    Das stimmt, es geht auch nur einmal, wenn das Reseten und Freigeben nicht wäre.
    Wie könnte man die Sperren denn dann nach einander verzögert reseten?

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Du schreibst die Zeit außerhalb der Sprungleiste.

    Dein Code:

    Code:
    spv6: NOP   0
          UN    DB86.DBX    1.1
          L     S5T#1S
          SE    T    212
          U     T    212
          SPBN  m006
          R     #Sperre3
          L     7
          T     #Sprungzahl
    m006: SPA   Ende
    Neuer Code:

    Das hier schreibst du ganz an den Anfang des Bausteins und zwar dann für alle Schitte:
    (evtl. ist noch je ein Vergleicher mit dem Schrittzähler auf den jeweilige Schritt nötig, kommt
    darauf an, was genau die DB86.DBX... machen)

    Code:
          UN    DB86.DBX    1.1
          L     S5T#1S
          SE    T    212

    Code:
    spv6: NOP   0
          U     T    212
          SPBN  m006
          R     #Sperre3
          L     7
          T     #Sprungzahl
    m006: SPA   Ende
    Siemens-Timer in Multiinstanz-FB sind eigentlich Mist, du solltest besser IEC-Timer nutzen (Siehe Step7-Library unter IEC-Funktions), die du im Stat-Bereich des FB deklarierst!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    Hello_SPS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.11.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das hier schreibst du ganz an den Anfang des Bausteins und zwar dann für alle Schitte:
    (evtl. ist noch je ein Vergleicher mit dem Schrittzähler auf den jeweilige Schritt nötig, kommt darauf an, was genau die DB86.DBX... machen)
    Ich hatte es vergessen DB86.DBX.. in Sperre.. zu ändern. Und zwar wenn die Sperre1 resetet wurde dann soll der nächste timer starten (UN #Sperre1) (so war es mal gedacht )

    Wo ist denn der Unterschied zwischen "normalen" Timern von S7 und den IEC Timern? Hatte es auch schon mit dem SFB4 versucht aber halt auch mit sprüngen...

  6. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Hello_SPS Beitrag anzeigen
    Ich hatte es vergessen DB86.DBX.. in Sperre.. zu ändern. Und zwar wenn die Sperre1 resetet wurde dann soll der nächste timer starten (UN #Sperre1) (so war es mal gedacht )

    Wo ist denn der Unterschied zwischen "normalen" Timern von S7 und den IEC Timern? Hatte es auch schon mit dem SFB4 versucht aber halt auch mit sprüngen...
    Die IEC-Timer deklarierst du im Statbereich des Multi-FB. Du hast dann nicht das Problem mit den Timernummern der S5-Timer. T200 darf ja nur einmal verwendet werden. Solltest du den Baustein 2 Mal verwenden geht das nicht mit festen S5-Timern! Auch bei den IEC-Timern datst du in deinem Fall nicht drumherum springen, da besteht dann auch das Problem, daß eine Flanke nicht mehr wahrgenommen werden kann. Stell dir vor, du sitzt in einer dunklen Kiste und nur Nachts macht einer mal kurz den Deckel auf. Dann bekommst du nie mit, daß es auch mal Tag ist, der Tag-Nachtwechsel entgeht dir. So ist es mit deinen Timern, die du umspringst!.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Lies auch mal hier: http://www.sps-forum.de/showthread.p...ight=IEC-Timer

    und nutze die Forensuche mit dem Stichwort IEC-Timer!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #8
    Hello_SPS ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.11.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe es eben mit IEC Timern gelöst und sie am Anfang des FB "gelegt". Nun läuft alles wie geschmiert.

    Danke an allen schnellen Helfern

Ähnliche Themen

  1. Timer bei null starten
    Von Oest im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.02.2010, 13:44
  2. Antworten: 8
    Letzter Beitrag: 13.07.2008, 11:23
  3. Mit Flanke einen Timer starten in SCL?
    Von hans55 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.01.2008, 21:41
  4. Timer während Ablauf wieder starten (FX2N)
    Von Blue im Forum Programmierstrategien
    Antworten: 13
    Letzter Beitrag: 30.03.2007, 11:58
  5. Timer starten und zu null setzen
    Von ottopaul im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.01.2007, 19:22

Lesezeichen

Berechtigungen

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