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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Zeitmessung einer Schleife mit Hilfe von Flankenauswertung

  1. #1
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Experten,

    ich bin neu hier und erstmal ein herzliches "Hallo an alle....!

    Ich donnere auch gleich mal die erste Frage rein. Ich versuche jetzt schon seit mehreren Tagen die Ausführungszeit einer Schleife zu messen. Ich bekomme aber leider weder eine Flankenauswertung, noch eine Speicherung der Zeitpunkte, geschweigedenn den Aufruf, dass es beim Anfang der Schleife losgeht, hin. Ich habe bisher ausschliesslich in CoDeSys programmmiert und nur teilweise mit Step 7. Nun mus ich aber mit dem neuen TIA Portal arbeiten.

    In CoDeSys gibts ja die Bausteine R_Trig und F_Trig. Gibts die in STep 7 auch????

    Ich hatte mir mal nur eine einfache Flankenauswertung basteln wollen,um sie zu verstehen, die wie folgt aussieht:

    VAR_Input
    Trigger: Bool
    VAR_Output
    Zeitmessung: Time
    VAR_Static
    Zeit: Array[0..1] of Time
    VAR_Temp
    Flanke: Bool
    Impuls: Bool



    //Flankenbildung
    #Impuls := #Trigger AND NOT #Flanke;
    #Flanke := #Trigger;




    IF #Impuls=TRUE THEN
    #Zeit[0]:=TIME_TCK(); //Systemzeit speichern
    END_IF;

    Nun ist es aber so, wenn ich den Eingang auf TRUE setzte, wechselt der Wert Impuls immer Hin und her von True auf False. In Zeitraum von TRUE wird dann die mitlaufende Systemzeit kurz angezeigt. Es wird aber nie ein Wert im Array gespeichert. Also in dem Fall der Startzeitpunkt. Ich möchte die Werte in einem Array speichern und nicht in einem DB oder so, da der selbe Code auch noch in CoDeSys laufen soll. Dehalb versuche ich die klassischen sachen, wie Merker oder Datenbausteine zu umgehen.

    Mache ich generell was falsch???

    Hoffe ihr könnt mir helfen.

    Vielen Dank schonmal an alle

    Grüßle
    Zitieren Zitieren Zeitmessung einer Schleife mit Hilfe von Flankenauswertung  

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

    Standard

    U M2.0 //der zu Überwachende Merker
    FP M2.1 //Hilfsmerker
    =M2.2 //Flankenmerker

    F_Trig und R_Trig gibt es in der PCS7 Bibliothek als FB

  3. #3
    Registriert seit
    21.07.2008
    Beiträge
    1.066
    Danke
    51
    Erhielt 140 Danke für 136 Beiträge

    Standard

    Mit Schleife meinst du aber keine for oder while Schleife oder?

    Wenn die Schleife startet, einen Timer starten (z.B. ton, die Zeit halt sehr lang setzten), wenn die Schleife beendet werden den aktuellen Zeitwert des Timers in einer Variable (weg)speichern.

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.317
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Der Klassiker: #Flanke darf nicht VAR_Temp sein - muß Static oder In_Out.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Zitat Zitat von MPH Beitrag anzeigen
    Mache ich generell was falsch???

    Hoffe ihr könnt mir helfen.

    Vielen Dank schonmal an alle

    Grüßle
    Am einfachsten geht das wohl, wenn du direkt vor der Schleife einmal den sfc64 aufrufst, und den Ausgang (TIME) in den Lokaldaten ablegst.
    Direkt nach der Schleife machst du noch nen sfc64 Aufruf, legst den Ausgang ebenfalls in den Lokaldaten ab, und subtrahierst dann Zeit 1 von Zeit 2.
    So erhälst du die Laufzeit der Schleife in [ms]...

    Ob das in Codesys genauso läuft? Keine Ahnung.

    Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  6. Folgender Benutzer sagt Danke zu SPSKILLER für den nützlichen Beitrag:

    amantido (19.04.2013)

  7. #6
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    U M2.0 //der zu Überwachende Merker
    FP M2.1 //Hilfsmerker
    =M2.2 //Flankenmerker

    F_Trig und R_Trig gibt es in der PCS7 Bibliothek als FB
    Hi borromeus,
    Vielen Dank für die schnelle Antwort.
    Ich habe die FBs nicht gefunden bzw. kann sie nicht aufrufen. Muss ich die Bibliothek erst aktivieren oder so`?

  8. #7
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hi Leute vielen Dank für die schnellen Antworten....


    Zitat Zitat von Deltal Beitrag anzeigen
    Mit Schleife meinst du aber keine for oder while Schleife oder?

    Wenn die Schleife startet, einen Timer starten (z.B. ton, die Zeit halt sehr lang setzten), wenn die Schleife beendet werden den aktuellen Zeitwert des Timers in einer Variable (weg)speichern.

    Eigentlich meinte ich so etwas wie eine FOR Schleife.... Warum? Ist das Blödsinn?
    Was meinst du mit "die Zeit sehr lange setzen"? Ist ein TON Timer genau genug um im ms Bereich zu messen?
    Wie kann ich den Moment abpassen, wenn die Schleife startet?

    For i=0 TO 1000 DO
    hier dann den Timer starten????
    Danke

    Zitat Zitat von PN/DP Beitrag anzeigen
    Der Klassiker: #Flanke darf nicht VAR_Temp sein - muß Static oder In_Out.

    Harald
    Danke Harald. Ok das muss ich ändern. Komme aber erst morgen dazu wenn ich wieder am PG sitze. Vielen Dank


    Zitat Zitat von SPSKILLER Beitrag anzeigen
    Am einfachsten geht das wohl, wenn du direkt vor der Schleife einmal den sfc64 aufrufst, und den Ausgang (TIME) in den Lokaldaten ablegst.
    Direkt nach der Schleife machst du noch nen sfc64 Aufruf, legst den Ausgang ebenfalls in den Lokaldaten ab, und subtrahierst dann Zeit 1 von Zeit 2.
    So erhälst du die Laufzeit der Schleife in [ms]...

    Ob das in Codesys genauso läuft? Keine Ahnung.

    Micha
    Danke Micha. Den Aufruf des SFC64 so wie ich es gemacht habe???
    zeit:=TIME_TCK();
    FOR i=0 TO 1000 DO
    .....

    Wie lege ich Sie in den Lokaldaten ab? Kann ich sie nicht ins Array speichern? Wenn ich das Array wie oben deklariere ist es dann nicht LOKAL? Sonst kann ich doch nur die PLC Variablen anlegen, welche aber dann Global sind. Ausserdem kann ich hier kein Array anlegen....
    Kannst du mir das Bitte nochmal kurz erläutern?!

    Vielen vielen Dank

    Gruß

  9. #8
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    673
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Deine Deklaration ist lokal. Das passt schon!
    Ich bin grad nur nicht sicher, was die SCL-Syntax der Zuweisung an das Array angeht.
    Ich hab's net so mit SCL...

    Muss wahrscheinlich so sein:
    Code:
    Zeit[0]:= time_tck();
    
    ...Schleife...
    
    Zeit[1]:= time_tck();
    Dauer:=Zeit[1]-Zeit[0];
    Micha
    "arbeite klug, nicht hart" - deutsches Sprichwort

  10. #9
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von MPH Beitrag anzeigen
    Hi borromeus,
    Vielen Dank für die schnelle Antwort.
    Ich habe die FBs nicht gefunden bzw. kann sie nicht aufrufen. Muss ich die Bibliothek erst aktivieren oder so`?
    @borromeus.

    Habe die FBs gefunden, obwohl sie hier P_TRIG und N_TRIG heissen. Stehen die nur für die CPU 300/400? zur Verfügung? Ich arbeite nämlich mit der SOFT SPS WIN AC.

    Danke und Gruß

  11. #10
    MPH ist offline Benutzer
    Themenstarter
    Registriert seit
    18.09.2012
    Beiträge
    75
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von SPSKILLER Beitrag anzeigen
    Deine Deklaration ist lokal. Das passt schon!
    Ich bin grad nur nicht sicher, was die SCL-Syntax der Zuweisung an das Array angeht.
    Ich hab's net so mit SCL...

    Muss wahrscheinlich so sein:
    Code:
    Zeit[0]:= time_tck();
    
    ...Schleife...
    
    Zeit[1]:= time_tck();
    Dauer:=Zeit[1]-Zeit[0];
    Micha

    Komisch. Wenn ich den Wert Flanke wie von Harald beschrieben als STATIC deklariere funktioniert oder passiert überhaupt nichts mehr.
    In dem Array, das ich befüllen will steht nie ein WERT. Gibt es eine andere Möglichkeit den Wert zu speichern?

    Danke und Gruß

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 04.02.2012, 00:06
  2. Problem bei einer Such-Schleife
    Von Imker im Forum Simatic
    Antworten: 37
    Letzter Beitrag: 26.01.2012, 19:40
  3. Realisierung einer Schleife
    Von simon-brl im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 05.07.2011, 20:56
  4. Rücksetzen nach einer Pos. Flankenauswertung
    Von xxjuraxx im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 21.05.2010, 12:56
  5. Zeitmessung mit einer S7-300
    Von detlefh im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 31.10.2007, 16:49

Lesezeichen

Berechtigungen

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