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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Variabler Timer

  1. #11
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von wuerfelzinker Beitrag anzeigen
    Laut Signaldiagramm läuft der doch, wenn einmal gestartet, unbeirrt durch, bis die Zeit abgelaufen ist, dann geht er wieder auf null wenn IN=0.
    ...
    Wenn bei TON das Signal an IN (Start Eingang) False wird wird ET (Die bereits abgelaufene Zeit direkt t#0ms) und somit wird nie ET >= PT und der Ausgang Q wird nicht auf True wechseln.

    Kurz um wenn IN = TRUE beginnt die Zeit ET sich aufzuaddieren wenn ET >= PT wird Q auf TRUE gesetzt. Egal wann ET < PT wird, wird Q = FALSE.
    If you open your Mind too much, your Brain will fall out.

  2. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    wuerfelzinker (16.11.2007)

  3. #12
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Zitat Zitat von wuerfelzinker Beitrag anzeigen
    Laut Signaldiagramm läuft der doch, wenn einmal gestartet, unbeirrt durch, bis die Zeit abgelaufen ist, dann geht er wieder auf null wenn IN=0.
    Ich müsste den zum erreichen eines sicheren Zustandes aber auch im Laufen auf 0 setzen können.

    Wenn ich den Not Aus haue, wird die Lastspannung meiner Ventilinsel getrennt. Aber ich muss ja auch das Programm zurücksetzen, damit beim Quittieren nicht noch irgendwelche Signale anstehen.
    Siehe dazu in STEP 7 die Onlinehilfe zum SFB4 TON:

    Erzeugen einer Einschaltverzögerung mit dem SFB 4 "TON"

    Der SFB 4 "TON" verzögert eine steigende Flanke um die Zeit PT. Die Zeit läuft nur in den Betriebszuständen ANLAUF und RUN.

    Eine steigende Flanke am Eingang IN hat nach Ablauf der Zeitdauer PT eine steigende Flanke am Ausgang Q zur Folge. Q bleibt dann so lange gesetzt, bis der Eingang IN nach 0 wechselt. Falls der Eingang IN nach 0 wechselt, bevor die Zeit PT abgelaufen ist, bleibt der Ausgang Q auf 0.

    Der Ausgang ET liefert die Zeit, die seit der letzten steigenden Flanke am Eingang IN vergangen ist, jedoch höchstens bis zum Wert des Eingangs PT. ET wird zurückgesetzt, wenn der Eingang IN nach 0 wechselt.
    Gruß Kai

  4. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    wuerfelzinker (16.11.2007)

  5. #13
    wuerfelzinker ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2007
    Ort
    Nideggen Schmidt
    Beiträge
    14
    Danke
    12
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Ah! Mist.... Ich muss mehrmals um entschuldigung bitten.
    Man sollte dran denken, dass Forenuser NICHT meine Gedanken lesen können...

    Ich hatte das ganze nämlich an meine Applikation angepasst, und den TON gegen einen TP ausgetauscht.

    Der war von SFB3 bis 4 am sinnvollsten.... hm... ich muss dass aber nochmal überprüfen...

    Sorry, aber ich mach gerade Elektroverdrahtung und das Programm parallel. da läuft manchmal was Quer, gerade wenn man gleichzeitig noch überlegt was nach der AUsbildung kommen soll.


    Soweit schon mal vielen Dank

    Wuerfelzinker
    Ich leide nicht an Realitätsverlusst...
    Ich genieße ihn!

  6. #14
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Wenn einem der SFB3 nicht die Funktion liefert die man gerne hätte baut man sich das teil eben selbst.

    Also zum dritten mal innerhalb von weniger als 24h liefere ich fast den Selben Trick:

    Bau Dir doch Deinen Timer selbst in dem Du aus dem OB1 den OB1_Prev_Cycle aufaddierst.

    Hier in SCL:
    Code:
    FUNCTION_BLOCK FB20
    VAR_INPUT
      IN          :BOOL;
      PT          :TIME;
      Reset       :BOOL;
      OB1PreCycle :INT;
    END_VAR
    
    VAR_IN_OUT
      ET          :TIME;
    END_VAR
    
    VAR_OUTPUT  
      Q           :BOOL;
    END_VAR
    
    VAR
      INold       :BOOL;
      myRun       :BOOL;
    END_VAR
      // Anweisungsteil
      IF IN AND NOT INold THEN
        myRun := TRUE;
        ET := t#0s;
      END_IF;
      
      IF myRun AND (ET < PT) THEN
        ET := ET + DINT_TO_TIME(OB1PreCycle);
        Q := TRUE;
    
      ELSE
        Q := FALSE;    
      END_IF;
      
      IF Reset THEN
        myRun := FALSE;
        ET    := t#0s;
        Q     := FALSE;
      END_IF;
      
      INold := IN;
    END_FUNCTION_BLOCK
    Hier noch der generierte AWL Code:
    Code:
    FUNCTION_BLOCK FB21
    FUNCTION_BLOCK FB20
    VAR_INPUT
      IN          :BOOL;
      PT          :TIME;
      Reset       :BOOL;
      OB1PreCycle :INT;
    END_VAR
    
    VAR_IN_OUT
      ET          :TIME;
    END_VAR
    
    VAR_OUTPUT  
      Q           :BOOL;
    END_VAR
    
    VAR
      INold       :BOOL;
      myRun       :BOOL;
    END_VAR
    
    BEGIN
    NETWORK
    
          SET   
          SAVE  
          =     L      0.1
          U     #INold
          NOT   
          U     #IN
          SPBN  A7d0
          SET   
          =     #myRun
          L     T#0MS
          T     #ET
    A7d0: L     #ET
          L     #PT
          <D    
          U     #myRun
          SPBN  A7d1
          L     #OB1PreCycle
          ITD   
          L     #ET
          +D    
          T     #ET
          SET   
          =     #Q
          SPA   A7d2
    A7d1: CLR   
          =     #Q
    A7d2: CLR   
          U     #Reset
          SPBN  A7d3
          CLR   
          =     #myRun
          L     T#0MS
          T     #ET
          =     #Q
    A7d3: CLR   
          U     #IN
          =     #INold
          U     L      0.1
          SAVE  
          BE    
    END_FUNCTION_BLOCK
    If you open your Mind too much, your Brain will fall out.

  7. Folgender Benutzer sagt Danke zu zotos für den nützlichen Beitrag:

    wuerfelzinker (17.11.2007)

  8. #15
    wuerfelzinker ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.09.2007
    Ort
    Nideggen Schmidt
    Beiträge
    14
    Danke
    12
    Erhielt 7 Danke für 7 Beiträge

    Standard

    O ha.. hammer! Vielen Dank!

    Aber durch diesen Code werde ich mich erstmal durcharbeiten müssen.. da sind ein Paar sachen drinnen, die mir beim Überfliegen mal gar nichts sagen...
    Dafür sind meine AWL und Programmierkenntnisse noch zu oberflächlich.

    Aber Montag muss ich mir erstmal ein MPI-Kabel zusammenbasteln.. einer unserer Programmierer hat mir meines geklaut...
    Ich leide nicht an Realitätsverlusst...
    Ich genieße ihn!

  9. #16
    Registriert seit
    19.07.2004
    Beiträge
    414
    Danke
    44
    Erhielt 34 Danke für 20 Beiträge

    Standard

    Du kannst ja auch einfach eine variable nehmen (INT) und dann legst du fest 0 als Minimum und 999 als Maximum.
    Die Auflösung bestimmst du mit dem Komma (also 9,99 Sek, 99,9 Sek, 999 Sek)... Wobei dein wert immer im Bereich 0-999 an die Variable geschrieben wird. Dann kannst du mit einem kleinen FC oder so deine Zeiten bauen.... Ich habe den FC hier schon mal gepostet. Wenn Interesse dann sag bescheid ....
    So arbeite ich seit Jahren und bin dadurch insofern flexibel, das ich das auch für Proface Pannels etc. nehmen kann ohne zu denken....
    Für richtiges Chaos,braucht man sehr schnelle Computer.
    Und wieso einfach... .... wenn es auch Siemens gibt




  10. Folgender Benutzer sagt Danke zu Lazarus™ für den nützlichen Beitrag:

    wuerfelzinker (18.11.2007)

  11. #17
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Lazarus™ Beitrag anzeigen
    Du kannst ja auch einfach eine variable nehmen (INT) und dann legst du fest 0 als Minimum und 999 als Maximum.
    Die Auflösung bestimmst du mit dem Komma (also 9,99 Sek, 99,9 Sek, 999 Sek)... Wobei dein wert immer im Bereich 0-999 an die Variable geschrieben wird. Dann kannst du mit einem kleinen FC oder so deine Zeiten bauen.... Ich habe den FC hier schon mal gepostet. Wenn Interesse dann sag bescheid ....
    Hier mal der FC von Lazarus:

    http://www.sps-forum.de/showpost.php...79&postcount=5

    Gruß Kai

  12. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    wuerfelzinker (18.11.2007)

Ähnliche Themen

  1. Variabler DB Aufruf
    Von lounsome im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.07.2010, 08:57
  2. Variabler Bausteinaufruf in SCL
    Von eugenhuber im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 18.05.2010, 16:55
  3. Freilaufender variabler Taktgeber
    Von S7-User im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.09.2009, 02:08
  4. Variabler FC-Aufruf mit Parametern
    Von Mangokind im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 19.03.2009, 08:44
  5. SCL: Timer mit variabler Zeit
    Von lindnerlars im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 02.09.2008, 11:21

Lesezeichen

Berechtigungen

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