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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Laufzeit von Motor ausgeben

  1. #1
    Registriert seit
    20.08.2009
    Beiträge
    137
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute

    möchte germe mit meiner c314-dp ein Laufzeit von einem Motor ausgeben.

    Aufgabe:
    Der Motor wird mehrmals am Tag eine unbestimmte Zeit eingeschaltet.

    möchte gerne die Summer Laufzeit als ST:MIN:SEK als TOD haben.
    Wie kann ich das anstellen.
    Hat jemand eine Idee wie man an diese Sache ran gehen kann.

    DANKE

    Gruß
    Zitieren Zitieren Laufzeit von Motor ausgeben  

  2. #2
    Registriert seit
    19.06.2008
    Ort
    Ostalbkreis
    Beiträge
    3.140
    Danke
    201
    Erhielt 553 Danke für 498 Beiträge

    Standard

    Hallo,

    schau mal hier.

    http://www.sps-forum.de/showthread.php?t=214

    PS: Betriebsstundenzähler gibts als Standardbaustein in "standard library - beispiele"

    Grüße

  3. #3
    Registriert seit
    13.05.2009
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nimm doch einfach einen Timer der eine Sekunde lang läuft... wenn der Timer abgelaufen ist dann erhöhst du den Wert in einem DWORD um 1 und startest den Timer dann neu.

    Mit deinem Panel rechnest du dann das DWORD in TOD um

    MfG
    HelixX23

  4. #4
    Registriert seit
    19.04.2009
    Beiträge
    302
    Danke
    31
    Erhielt 40 Danke für 32 Beiträge

    Standard

    Zitat Zitat von HelixX23 Beitrag anzeigen
    Nimm doch einfach einen Timer der eine Sekunde lang läuft... wenn der Timer abgelaufen ist dann erhöhst du den Wert in einem DWORD um 1 und startest den Timer dann neu.

    Mit deinem Panel rechnest du dann das DWORD in TOD um

    MfG
    HelixX23
    Wieso einfach wenns auch kompleziert geht? Schon ein wenig aufwendig und unnötig verschwendung von Timern

  5. #5
    Registriert seit
    13.05.2009
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Man könnte auch das interne Taktsignal Mx.5 nehmen... hast schon recht

  6. #6
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Ich würde einen Zeit-OB verwenden....

    immer wenn der aufgerufen wird, addierst Du die Zeit des Weckintervalls sofern der Motor läuft.
    Achtung: man sollte das kaskadieren (einen Zähler und einen Überlaufzähler), denn sonst steht die Zeit irgendwann weil die Rechengenauigkeit nicht ausreichend ist bei Real oder bei DINT erst recht ein Überlauf rauskommt.

    Auf gut deutsch: schreib einen FB oder FC der das addieren, kaskadieren und wandeln in TOD übernimmt und ruf diesen in einem Zeit OB auf. Als Parameter würde ich noch den Wert des Aufrufintervalls übergeben damit der Baustein auch universell verwendbar ist.

    lG
    Karl

  7. #7
    Registriert seit
    13.05.2009
    Beiträge
    23
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Ich würde einen Zeit-OB verwenden....
    Aber Vorsicht:

    Durch die Verwendung von Weckalarmen verlängert sich die Zykluszeit eines Anwenderprogrammes um ca. 220µs bis zu 380µs. Diese Verzögerungszeit ist abhängig von der CPU der 300 Baureihe.
    Quelle: http://www.sps-lehrgang.de/taktsignale/

  8. #8
    Registriert seit
    02.10.2010
    Beiträge
    453
    Danke
    62
    Erhielt 87 Danke für 69 Beiträge

    Standard

    Ich habe seinerzeit in unserem Betrieb eine FC für Betriebstundenzählung geschrieben. Hintergrund: Die Betriebselektriker wünschten auf der Visu (WinCC V5.1) die Betriebsstunden von Motoren ablesen zu können und beim Erreichen des Abschmierintervalls sollte eine Meldung ausgegeben werden. Intervalldauer war z. B. 3400 Betriebsstunden. Deshalb interessierten mich auch in der Visu keine Sekunden und Minuten. Kann man aber leicht nachbasteln.

    Code:
    FUNCTION FC 8 : VOID
    TITLE =Betriebstundenzähler
    //Betriebsstundenzähler // Betriebsstundenzähler mit Meldeausgang
    //                           +———————————————————+
    //                           |        FC8        |
    //                           |                   |
    //                         ——|EN                 |
    //                           |                   |
    //                    Bool ——|LAUFMELD   ZAEHLSEK|—— Int
    //                           |                   |
    //                    Bool ——|TAKT       ZAEHLSTD|—— DInt
    //                           |                   |
    //                    Bool ——|RESET       MELDUNG|—— Bool
    //                           |                   |
    //                    DInt ——|GRZ_WERT        ENO|—— 
    //                           +———————————————————+
    //
    //LAUFMELD = Laufmeldung vom Antrieb         ZAEHLSEK = Sekundenzähler
    //TAKT     = Zyklustaktimpuls (1s)           ZAEHLSTD = Stundenzähler
    //RESET    = Rücksetzeingang für die         MELDUNG  = Meldeausgang
    //           Zähler
    //GRZ_WERT = Angabe der max. Betriebs-
    //           stunden eines Intervalls
    AUTHOR : 
    NAME : BSTD_EXT
    VERSION : 0.1
     
    VAR_INPUT
      LAUFMELD : BOOL ; //Laufmeldung bzw. Antrieb ist ein
      TAKT : BOOL ; //Sekundentakt aus dem System
      RESET : BOOL ; //Zähler rücksetzen
      GRZ_WERT : DINT ; //Grenzwert für den Zähler zur Meldungausgabe (Intervall erreicht)
    END_VAR
    VAR_OUTPUT
      ZAEHLSEK : INT ; //Sekundenanteil Zähler
      ZAEHLSTD : DINT ; //Gesamtstunden Zählung
      MELDUNG : BOOL ; //Intervallzeit erreicht bzw. überschritten
    END_VAR
    BEGIN
    NETWORK
    TITLE =Stundenzähler rücksetzen bei Anforderung
          U     #RESET; 
          SPBNB _001; 
          L     0; 
          T     #ZAEHLSTD; 
    _001: NOP   0; 
    NETWORK
    TITLE =Sekundenzähler aufaddieren
    //Wenn der Antrieb läuft und der Zyklusaktimpuls ansteht, wird der Sekundenzähler 
    //um 1 erhöht. Wichtig ist, das ausserhalb der FC aus Sekundenzyklustakt eine 
    //postive Flanke gebildet wird.
          U     #LAUFMELD; 
          U     #TAKT; 
          SPBNB _002; 
          L     #ZAEHLSEK; 
          L     1; 
          +I    ; 
          T     #ZAEHLSEK; 
    _002: NOP   0; 
    NETWORK
    TITLE =Stundenzähler aufaddieren, Sekundenzähler löschen
    //3600 Sekunden = 1 Stunde. Es erfolgt ein Übertrag in den Stundenzähler mit 
    //anschließender Ablöschung des Sekundenzählers. Der Sekundenzähler wird aber 
    //auch durch den Reset-Eingang gelöscht.
          U(    ; 
          O(    ; 
          U(    ; 
          L     #ZAEHLSEK; 
          L     3600; 
          ==I   ; 
          )     ; 
          SPBNB _003; 
          L     #ZAEHLSTD; 
          L     1; 
          +D    ; 
          T     #ZAEHLSTD; 
          UN    OV; 
          SAVE  ; 
          CLR   ; 
    _003: U     BIE; 
          )     ; 
          O     #RESET; 
          )     ; 
          SPBNB _004; 
          L     0; 
          T     #ZAEHLSEK; 
    _004: NOP   0; 
    NETWORK
    TITLE =Meldung ausgeben
          L     #ZAEHLSTD; 
          L     #GRZ_WERT; 
          >=D   ; 
          =     #MELDUNG; 
    END_FUNCTION
    Vielleicht kannst Du ja etwas damit anfangen.

    Gruß
    Corosop15

  9. Folgende 2 Benutzer sagen Danke zu Corosop15 für den nützlichen Beitrag:

    spezi (04.01.2012),Wilhelm (10.10.2010)

  10. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Zitat Zitat von HelixX23 Beitrag anzeigen
    Na stell da vor!

  11. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von chefren_new Beitrag anzeigen
    möchte germe mit meiner c314-dp ein Laufzeit von einem Motor ausgeben. [...]
    möchte gerne die Summer Laufzeit als ST:MIN:SEK als TOD haben.
    Hallo chefren_new,

    was Du machen willst ist ein Betriebsstundenzähler. Funktionserklärung siehe mal hier:
    Betriebsstundenzähler / Wartungsintervalle

    Mit dem Datentyp TIME_OF_DAY (TOD) kann man keine Zeiten >= 24 Stunden darstellen.
    Betriebsstunden werden üblicherweise in DINT gezählt und dezimal als 99999 Std oder 99999,99 Std angezeigt.

    Für eine Anzeige "99999:59:59" (ST:MIN:SEK) kann man 3 Zählvariablen nehmen und an WinCC flexible übergeben.
    Eine Variable zählt die Sekunden von 0 bis 59, deren Übertrag bei 59 zu 0 zählt die zweite Variable als
    Minuten und deren Übertrag eine dritte Variable als Stunden.
    Alternativ kann man einen Betriebs"Sekunden"-Zählwert in einem Skript zum Anzeige-String formatieren.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 04.10.2011, 14:59
  2. Laufzeit F Programm optimieren
    Von mitchih im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.02.2009, 07:28
  3. IP-Adresse zur Laufzeit ändern ??
    Von corrado im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.02.2007, 12:18
  4. Laufzeit des FB 41 (S7)
    Von Automatisierungs-Rookie im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 18.12.2006, 21:16
  5. Schleife mit Variabler Laufzeit
    Von Garog im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.08.2006, 19:56

Lesezeichen

Berechtigungen

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