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

Ergebnis 1 bis 10 von 10

Thema: Zeitüberwachung

  1. #1
    Registriert seit
    28.10.2007
    Ort
    Weltbürger
    Beiträge
    195
    Danke
    168
    Erhielt 14 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin moin,

    ich habe 2 Initaoren, einen am Anfang und einem am Ende eines Laufbandes.
    Ich möchte die Zeit überwachen wie lange das Paket braucht um von einem
    zu den anderen Initiator braucht.

    ich wollte die in einem DB schreiben.
    immer 3 Zeiten sollen nacheinander in den BD, danach wieder DB löschen
    und neu schreiben.

    Kann mir einer da helfen?

    Initator 1 ist E0.0
    " 2 ist E0.1

    Danke für eure Hilfe im voraus.


    Mario
    „Was immer Du tun kannst oder träumst es zu können, fang damit an.“ Goethe
    Zitieren Zitieren Zeitüberwachung  

  2. #2
    Registriert seit
    15.10.2007
    Ort
    St.Pölten
    Beiträge
    875
    Danke
    98
    Erhielt 200 Danke für 188 Beiträge

    Standard

    Code:
              U E 0.0
              FP Mx.x
              SPB ON
              U E 0.1
              FP Mx.x
              SPB OFF
              SPA Ende
     
          ON: Hier deine Zeit starten
     
              SPA Ende
     
         OFF: Hier deine Zeit stoppen in den DB schreiben.
                 und die Zeit nullen.
    so könnte man das lösen z.Bsp.
    Beginne jeden Tag mit einem lächeln,es kann dir nämlich während des Tages sehr schnell vergehen.

  3. Folgender Benutzer sagt Danke zu Gerhard K für den nützlichen Beitrag:

    veritas (01.01.2010)

  4. #3
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Ich mach mal bei Gerhard weiter:
    Code:
         U E 0.0
         FP Mx.x
         SPB ON
         U E 0.1
         FP Mx.x
         SPB OFF
         SPA ENDE
     
    ON: U M 0.0 // Taktmerkerbyte
         FP M 1.0
         SPBN ENDE
         L DB1.DBD 0 // Zeitzähler
         L 100 // 100 Millisekunden
         +D
         T DB1.DBD0
         SPA ENDE
     
    OFF: L #Zeiger
         L 4
         *I
         L 4
         +I
         SLD 3
         LAR1
         L DB1.DBD 0
         T DBW [AR1,p#0.0]  // Daten werden im selben DB ab Datenwort 4 abgelegt.
     
         L 0
         T DB1.DBD 0  // Zeit wieder löschen
         L #Zeiger // Zeiger auf nächstes freies Datenwort
         +1
         T#Zeiger
         L 2 
         <I
         SPB ENDE
         L 0
         T #Zeiger // nach drei von vorne beginnen
    ENDE:NOP 0
    Geändert von Paule (01.01.2010 um 23:19 Uhr) Grund: Falsche Sprungmarke
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  5. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    veritas (01.01.2010)

  6. #4
    Registriert seit
    17.09.2003
    Ort
    Zell bei Dietfurt a.d. Altmühl
    Beiträge
    357
    Danke
    8
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Hallo,

    ich will jetzt nicht als Spassbremse hereinplatzen. Aber die Überwachung, so wie es Paule Progammiert hat, wird nicht funktionieren. Es wird unter umständen maximale einmal gezählt, dann aber nicht mehr. Da ja im Absolut zum Ende gesprungen wird.
    So müsste es jetzt funktionieren.
    Code:
         U E 0.0
         FP Mx.x
         S M1.0 // Start Überwachungszeit
         U E 0.1
         FP Mx.x
         SPB OFF
    
         U M1.0 // Start Überwachungszeit
         U M0.0 // Taktmerker 10Hz
         FP Mx.x  
         SPBN ENDE
         L DB1.DBD 0 // Zeitzähler
         L L#100 // 100 Millisekunden
         +D
         T DB1.DBD0
         SPA ENDE
     
    OFF:SET
         R M1.0 // Start Überwachungzeit 
         L #Zeiger
         L 4
         *I
         L 4
         +I
         SLD 3
         LAR1
         L DB1.DBD 0
         T DBW [AR1,p#0.0]  // Daten werden im selben DB ab Datenwort 4 abgelegt.
         L L#0
         T DB1.DBD 0  // Zeit wieder löschen
         L #Zeiger // Zeiger auf nächstes freies Datenwort
         +1
         T#Zeiger
         L 2 
         <I
         SPB ENDE
         L 0
         T #Zeiger // nach drei von vorne beginnen
    ENDE:NOP 0
    MfG

    Hubert

    \"Never change a running system. \"

  7. Folgende 2 Benutzer sagen Danke zu hubert für den nützlichen Beitrag:

    Paule (02.01.2010),veritas (02.01.2010)

  8. #5
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Hubert,

    da hast Du natürlich Recht.
    Ich habe das auch nur schnell von oben übernommen.
    Klar muss das Startsignal gespeichert werden.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  9. #6
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Natürlich könntest Du den Baustein dann auch noch aus dem OB35 heraus aufrufen.
    OB35 in der Hardware auf 10ms stellen.
    Dann könntest Du die Flanke mit dem 100ms Takt weglassen und die Zeit nicht um 100ms sondern um 10ms erhöhen.
    Kommt drauf an wie genau das sein soll.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  10. #7
    Registriert seit
    13.10.2007
    Beiträge
    12.033
    Danke
    2.788
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard

    Es gibt auch noch die möglichkeit mit dem SFC64 "TIME_TCK" zu arbeiten
    Code:
    FUNCTION_BLOCK FB 7
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      IN_einlauf : BOOL ; //Sensor Einlauf
      IN_auslauf : BOOL ; //Sensor Auslauf
    END_VAR
    VAR_OUTPUT
      OUT_laufzeit : TIME ; //Laufzeit
    END_VAR
    VAR
      Einlauf : TIME ; //Einlauf
      Auslauf : TIME ; //Auslauf
      work : BOOL ; //Messung Arbeitet
    END_VAR
    BEGIN
    NETWORK
    TITLE =
     
    NETWORK
    TITLE =Einlauf
    //Sensor Einlauf erfassen
          U     #IN_einlauf; 
          UN    #work; 
          SPBN  EEnd; 
    //Systemzeit auslesen und in "Einlauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Einlauf);
    //Flanken auswertung für die Messung
          SET   ; 
          S     #work; 
    EEnd: NOP   0; 
    NETWORK
    TITLE =Auslauf
    //Sensor Auslauf erfassen
          U     #IN_auslauf; 
          U     #work; 
          SPBN  AEnd; 
    //Systemzeit auslesen und in "Auslauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Auslauf);
    //Flankenauswertung rücksetzen
          SET   ; 
          R     #work; 
    //Überlauf kontrollieren und Laufzeit ausrechnen
          L     #Einlauf; 
          L     #Auslauf; 
          <D    ; 
          SPBN  A001; 
          TAK   ; 
          L     L#2147483647; 
          +D    ; 
          L     #Auslauf; 
    A001: -D    ; 
          T     #OUT_laufzeit; 
    AEnd: NOP   0; 
    END_FUNCTION_BLOCK
    gruß helmut
    Geändert von rostiger Nagel (02.01.2010 um 10:29 Uhr)
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  11. #8
    Registriert seit
    17.09.2003
    Ort
    Zell bei Dietfurt a.d. Altmühl
    Beiträge
    357
    Danke
    8
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Hallo Helmut,

    deine Idee ist auch nicht schlecht. Ist mir auch schon in den Sinn gekommen, aber ich habe die Philosophie von Paule weitergemacht. Hab allerdings so wie ich deinen Programmauszug verstanden habe einen kleinen Denkfehler bei deiner Zeitermittlung gefunden. Im Normalfall ist dere Einlauf ja immer kleiner als der Auslauf, d.h. addierst immer die 2147483647 dazu, was immer zu einem falschen Wert führt. Ich hätte es so gelöst.

    Code:
    FUNCTION_BLOCK FB 7
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
      IN_einlauf : BOOL ; //Sensor Einlauf
      IN_auslauf : BOOL ; //Sensor Auslauf
    END_VAR
    VAR_OUTPUT
      OUT_laufzeit : TIME ; //Laufzeit
    END_VAR
    VAR
      Einlauf : TIME ; //Einlauf
      Auslauf : TIME ; //Auslauf
      work : BOOL ; //Messung Arbeitet
    END_VAR
    BEGIN
    NETWORK
    TITLE =
     
    NETWORK
    TITLE =Einlauf
    //Sensor Einlauf erfassen
          U     #IN_einlauf; 
          UN    #work; 
          SPBN  EEnd; 
    //Systemzeit auslesen und in "Einlauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Einlauf);
    //Flanken auswertung für die Messung
          SET   ; 
          S     #work; 
    EEnd: NOP   0; 
    NETWORK
    TITLE =Auslauf
    //Sensor Auslauf erfassen
          U     #IN_auslauf; 
          U     #work; 
          SPBN  AEnd; 
    //Systemzeit auslesen und in "Auslauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Auslauf);
    //Flankenauswertung rücksetzen
          SET   ; 
          R     #work; 
    //Überlauf kontrollieren und Laufzeit ausrechnen
          L     #Auslauf;
          L     #Einlauf; 
          -D    ;
          L     L#0; 
          <D    ; 
          TAK   ; 
          SPBN  A001; 
          L     L#2147483647; 
          +D    ; 
    A001: T     #OUT_laufzeit; 
    AEnd: NOP   0; 
    END_FUNCTION_BLOCK
    Berichte mich wenn ich falsch liegt, aber so wird auch der Üblauf mirgerechnet.
    MfG

    Hubert

    \"Never change a running system. \"

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

    rostiger Nagel (03.01.2010)

  13. #9
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard

    Hallo Leute,

    das mit dem Überlauf, kann man auch einfacher lösen in dem man einfach das Vorzeichen eliminiert.

    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  14. #10
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    FUNCTION_BLOCK FB 7
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      IN_einlauf : BOOL ;    //Sensor Einlauf
      IN_auslauf : BOOL ;    //Sensor Auslauf
    END_VAR
    VAR_OUTPUT
      OUT_laufzeit : TIME ;    //Laufzeit
    END_VAR
    VAR
      Einlauf : TIME ;    //Einlauf
      Auslauf : TIME ;    //Auslauf
      work : BOOL ;    //Messung Arbeitet
    END_VAR
    BEGIN
    NETWORK
    TITLE =Einlauf
    //Sensor Einlauf erfassen
          U     #IN_einlauf; 
          UN    #work; 
          SPBN  EEnd; 
    //Systemzeit auslesen und in "Einlauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Einlauf);
    //Flanken auswertung für die Messung
          SET   ; 
          S     #work; 
    EEnd: NOP   0; 
    NETWORK
    TITLE =Auslauf
    //Sensor Auslauf erfassen
          U     #IN_auslauf; 
          U     #work; 
          SPBN  AEnd; 
    //Systemzeit auslesen und in "Auslauf" speichern
          CALL "TIME_TCK" (
               RET_VAL                  := #Auslauf);
    //Flankenauswertung rücksetzen
          SET   ; 
          R     #work; 
    
    NETWORK
    TITLE =Überlauf kontrollieren und Laufzeit ausrechnen
    
          L     #Auslauf; 
          L     #Einlauf; 
          -D    ; 
          L     DW#16#7FFFFFFF; 
          UD    ; 
          T     #OUT_laufzeit; 
    AEnd: NOP   0; 
    
    END_FUNCTION_BLOCK
    Gruss Daniel
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  15. Folgender Benutzer sagt Danke zu dalbi für den nützlichen Beitrag:

    rostiger Nagel (03.01.2010)

Ähnliche Themen

  1. Zeitüberwachung zwischen 2 Triggern
    Von amantido im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 02.09.2009, 18:26

Lesezeichen

Berechtigungen

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