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

Ergebnis 1 bis 7 von 7

Thema: CPU Zeit auswerten

  1. #1
    Registriert seit
    02.12.2008
    Beiträge
    4
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Folgendes Problem:

    Ich benutze die Bausteine FC8 und SFC1 aus der Standardbibliothek, um die aktuelle CPU-Uhrzeit auszulesen. Wenn ich jetzt eine Variable mit einer Uhrzeit vorbelege und möchte, dass wenn diese Uhrzeit durch Vergleich mit der tatsächlichen erreicht ist eine Aktion ausgeführt wird, funktioniert dieses nur manchmal.

    Beispiel:

    L #nur_Systemuhrzeit (Datentyp TIME_OF_Day)
    T DB1.aktuelle_Uhrzeit (Datentyp TIME_OF_Day)
    L TOD#10:0:0.0
    ==D
    S M 90.5

    Also, der Merker wird über einen Dauertest von 10 Tagen mit "==D" nur maximal an 2 Tagen gesetzt, an den anderen Tagen läuft die Zeit weiter, ohne irgend eine Reaktion.
    Wenn ich aber "<D" oder ">D" auswerten möchte, klappt das jedesmal.

    Hat schon jemand dieses Problem gehabt und kann mir einen Tipp geben?

    Selbst das Wandeln der Datenformate vor dem Vergleich brachte nichts.

    HWPascal
    Zitieren Zitieren CPU Zeit auswerten  

  2. #2
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    mit ==D müssen die werte 100%ig übereinstimmen, bei einem zyklisch arbeitenden system, bei dem (in den meisten fällen) die daten vor dem zyklus beschafft werden und dann einen ganzen zyklus gültig sind ist die wahrscheinlichkeit nicht hoch, einen treffer zu landen, deswegen erstmal respekt für die zwei treffer

    benutze =>D und alles wird gut.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  3. #3
    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

    Ich würde mal nicht mit ==D arbeiten, sondern mit einem Bereich. Denn du mußt die Zeit ja absolut exakt treffen. TOD beinhaltet ja auch die Millisekunden.

    Nimm also deine Zeit und schau ob sie größer als 10:0:0.0 und kleiner als 10:0:1.0 ist.
    Aber aufpassen, dies kann dazu führen, das in mehreren SPS-Zyklen hintereinander die Bedingung erfüllt ist. Beim ersten Mal einen Sperrmerker setzen, der verhindert, daß ein weiteres Mal eine Aktion erfolgt. Den Sperrmerker löschen, wenn die Zeit wieder außerhalb des Bereiches liegt!
    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

  4. #4
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Zitat Zitat von vierlagig Beitrag anzeigen
    benutze =>D und alles wird gut.
    Aber dann würde der Merker auch zwischen 10 Uhr und Mitternacht immer gesetzt!
    Ich glaube, dass HWPascal den Merker nur um 10 Uhr setzen will. Ich würde dann folgendes machen:
    Code:
    U(
    L DB1.aktuelle_Uhrzeit (Datentyp TIME_OF_Day)
    L TOD#10:0:0.0
    >=D
    )
    U(
    L DB1.aktuelle_Uhrzeit (Datentyp TIME_OF_Day)
    L TOD#10:0:1.0
    <=D
    )
    S M 90.5
    Grüße
    Gebs

    [Edit]
    Ralle war schneller, aber nur weil ich fast 5 Min. lang keine Verbindung zu sps-forum.de bekommen hab.
    Ich habe oft das Problem, das mein Browser ewig auf esatex.com wartet.
    [/Edit]
    Geändert von Gebs (05.03.2009 um 22:33 Uhr)

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

    HWPascal (05.03.2009)

  6. #5
    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 Gebs Beitrag anzeigen
    [Edit]
    Ralle war schneller, aber nur weil ich fast 5 Min. lang keine Verbindung zu sps-forum.de bekommen hab.
    Ich habe oft das Problem, das mein Browser ewig auf esatex.com wartet.
    [/Edit]
    Hehe, das hätte auch nichts genutzt, ich hab ja schon 3 Minuten benötigt. Aber nun hat er meinen Vorschlag wenigstens als Code, wobei die Geschichte mit dem Sperrmerker fehlt.

    Ich erlaube mit mal, deinen Code zu modifizieren:

    Code:
    U(
    L DB1.aktuelle_Uhrzeit (Datentyp TIME_OF_Day)
    L TOD#10:0:0.0
    >=D
    )
    U(
    L DB1.aktuelle_Uhrzeit (Datentyp TIME_OF_Day)
    L TOD#10:0:1.0
    <=D
    )
    = M 90.5
    
    U M 90.5
    FP M 90.6  //HM Flanke Positiv
    = M 90.7  //Positive Flanke, bei Erreichen des Zeitpunktes
    Mit M 90.7 kann dann einmalig irgend eine Aktion erledigt werden.
    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. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    HWPascal (05.03.2009)

  8. #6
    HWPascal ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.12.2008
    Beiträge
    4
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich danke Vierlagig, Ralle und besonders Gebs für die Hilfen.
    Folgender Code, angeregt durch Gebs brachte den Durchbruch:

    U(
    L #nur_Systemuhrzeit
    T DB1.aktuelle_Uhrzeit
    L TOD#23:5:0.0
    >=D
    )
    U(
    L #nur_Systemuhrzeit
    T DB1.aktuelle_Uhrzeit
    L TOD#23:5:1.0
    <=D
    )
    S M 90.5

    Ich habe das mit mehrmals veränderte Sollzeit getestet, die CPU wird jetzt nicht nur an 2 von 10 Tagen das machen was ich will, sondern an jedem !

    Danke nochmal, bei neuen Problemen werdet Ihr mir doch auch helfen ?

    MfG HWPascal

  9. #7
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von HWPascal Beitrag anzeigen
    Danke nochmal, bei neuen Problemen werdet Ihr mir doch auch helfen ?
    Das ist doch der Sinn dieses Forums, oder ist jemand anderer Meinung?

    oT:
    An dieser Stelle: Danke an alle engagierten Forumsmitglieder. Vor allem an die
    Moderatoren und unseren Admin, da es ohne sie dieses Forum gar nicht gäbe.

    Grüße
    Gebs
    Geändert von Gebs (05.03.2009 um 23:29 Uhr)

Ähnliche Themen

  1. DP und PN Fehler auswerten
    Von merlin im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 04.04.2011, 12:31
  2. In WinCC Bit in Var auswerten
    Von Move im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.03.2011, 12:29
  3. DB auswerten
    Von Rauchegger im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 27.10.2010, 22:45
  4. Zahlen auswerten
    Von Glitsch Master im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.09.2009, 12:07
  5. Impulslänge auswerten
    Von chbr im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 07.11.2007, 10:36

Lesezeichen

Berechtigungen

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