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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 23 von 23

Thema: Zeit Messen?!

  1. #21
    Registriert seit
    28.07.2008
    Beiträge
    16
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Dotzi Beitrag anzeigen
    Code:
    FUNCTION_BLOCK "FB_Timer"
    TITLE =
    //This block counts the time during <B_my_Input> is true.
    //The feedback is written in <T_my_Time>.
    //<B_Reset> clears <T_my_Time>.
    //
    //2010-06-07 XXX
    VERSION : 0.1
     
    VAR_INPUT
      B_my_Input : BOOL ; 
      B_Reset : BOOL ; 
    END_VAR
    VAR_OUTPUT
      T_my_Time : TIME ; 
    END_VAR
    VAR
      B_FM : ARRAY  [1 .. 16 ] OF BOOL ; 
      T_my_Time_Stat : TIME ; 
    END_VAR
    VAR_TEMP
      T_Sys_Time_Temp : TIME ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          CALL "TIME_TCK" (//Read the System Time
               RET_VAL                  := #T_Sys_Time_Temp);
          U     #B_my_Input; //New Count (One Shot) ???
          FP    #B_FM[1]; 
          SPBN  _101; 
          L     #T_Sys_Time_Temp; //Init my_Time_Stat
          T     #T_my_Time_Stat; 
    _101: NOP   0; 
          U     #B_my_Input; //Count Time ???
          SPBN  _102; 
          L     #T_Sys_Time_Temp; 
          L     #T_my_Time_Stat; 
          -D    ; 
          T     #T_my_Time; 
    _102: NOP   0; 
          U     #B_Reset; //Reset my_Time ???
          SPBN  _103; 
          L     0; 
          T     #T_my_Time; 
    _103: NOP   0; 
    END_FUNCTION_BLOCK
    Vielleicht hilft dir das weiter.

    Ja danka, sowas hab ich gesucht

  2. #22
    Registriert seit
    06.10.2003
    Beiträge
    3.408
    Danke
    449
    Erhielt 504 Danke für 407 Beiträge

    Standard

    Zitat Zitat von Dotzi Beitrag anzeigen
    [CODE]FUNCTION_BLOCK "FB_Timer"
    TITLE =
    //This block counts the time during <B_my_Input> is true.
    //The feedback is written in <T_my_Time>.
    //<B_Reset> clears <T_my_Time>.
    //
    // never forget the Überlauf
    //
    //2010-06-07 XXX
    ..
    Die Systemzeit ist ein "Zeitzähler", der von 0 bis max. 2147483647 ms zählt. Bei einem Überlauf der Systemzeit wird wieder ab 0 gezählt.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  3. Folgender Benutzer sagt Danke zu Onkel Dagobert für den nützlichen Beitrag:

    Dotzi (02.12.2010)

  4. #23
    Registriert seit
    20.11.2006
    Ort
    Hamburg
    Beiträge
    225
    Danke
    35
    Erhielt 35 Danke für 32 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Dagobert,

    danke für den Hinweis.
    Funktioniert der Baustein in der nun vorliegenden Version?

    Code:
    FUNCTION_BLOCK "FB_Timer"
    TITLE =
    //This block counts the time during <B_my_Input> is true.
    //The feedback is written in <T_my_Time>.
    //<B_Reset> clears <T_my_Time>.
    //
    //2010-06-07 XXX
    VERSION : 0.1
     
    VAR_INPUT
      B_my_Input : BOOL ; 
      B_Reset : BOOL ; 
    END_VAR
    VAR_OUTPUT
      T_my_Time : TIME ; 
      B_Fault_my_Time : BOOL ; //Value out of Range
    END_VAR
    VAR
      B_FM : ARRAY  [1 .. 16 ] OF BOOL ; 
      T_my_Time_Stat : TIME ; 
      T_my_Time_Stat_prev : TIME ; 
      B_Overflow : BOOL ; 
    END_VAR
    VAR_TEMP
      T_Sys_Time_Temp : TIME ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =
          CALL "TIME_TCK" (// Read the System Time
               RET_VAL                  := #T_Sys_Time_Temp);
          U     #B_my_Input; // New Count (One Shot) ???
          FP    #B_FM[1]; 
          SPBN  _110; 
          L     #T_Sys_Time_Temp; // Init my_Time_Stat
          T     #T_my_Time_Stat; 
          R     #B_Overflow; 
    _110: NOP   0; 
          U     #B_my_Input; // Count Time ???
          SPBN  _140; 
          L     #T_my_Time_Stat_prev; 
          L     #T_Sys_Time_Temp; 
          >D    ; // Overflow ???
          S     #B_Overflow; 
          U     #B_Overflow; 
          SPB   _120; 
          L     #T_my_Time_Stat; // Here no Overflow
          -D    ; 
          T     #T_my_Time; 
          SPA   _130; 
    _120: NOP   0; // Here Overflow
          L     L#2147483647; // max. Time of SFC64
          L     #T_my_Time_Stat; 
          -D    ; 
          L     #T_Sys_Time_Temp; 
          +D    ; 
          U     OV; // Overflow in Result ???
          S     #B_Fault_my_Time; 
          T     #T_my_Time; 
    _130: NOP   0; 
          L     #T_Sys_Time_Temp; // Save Sys_Time for next scan
          T     #T_my_Time_Stat_prev; 
    _140: NOP   0; 
          U     #B_Reset; // Reset my_Time ???
          SPBN  _150; 
          L     0; 
          T     #T_my_Time; 
          R     #B_Overflow; 
          R     #B_Fault_my_Time; 
    _150: NOP   0; 
          U     #B_Fault_my_Time; // Fault Handling
          SPBN  _160; 
          L     0; 
          T     #T_my_Time; 
    _160: NOP   0; 
    END_FUNCTION_BLOCK
    Gruß

Ähnliche Themen

  1. Zeit messen mit SCL
    Von Casimyr im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 26.08.2011, 07:40
  2. Zeit - Rückwandbus messen
    Von dfpes im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 01.09.2010, 23:38
  3. 1ms Zeit messen?
    Von DennisBerger im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.05.2010, 12:42
  4. PN Geräte initialisieren und Zeit messen
    Von M4RKU5 im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 09.07.2008, 16:57
  5. Wie Zeit messen im 0,1 ms Bereich
    Von maxmax im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 28.11.2007, 19:44

Lesezeichen

Berechtigungen

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