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

Ergebnis 1 bis 7 von 7

Thema: Wo liegt hier der Fehler? TON für Zykluszeitmessung, CODE hochgeladen

  1. #1
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    989
    Danke
    114
    Erhielt 125 Danke für 100 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo leute,

    ich brauche in einem Programmbaustein die aktuelle Zykluszeit des Programms.
    Diese wollte ich über die "Elapsed TIME" des TON (ET) herausfinden.

    Also habe ich folgendes eingefügt:

    Code:
    Trigger_TON:= NOT Trigger_TON ;
    Instanz1_TON(IN:= Trigger_TON, PT:= T#5s);
    
    IF xUse_Cycle_Measurement = TRUE THEN
    
    Cycle_Time:=TIME_TO_REAL(Instanz1_TON.ET);
    
    ELSIF xUse_Cycle_Measurement = FALSE THEN
    
    Cycle_Time:=TIME_TO_REAL(tCycle_Time);
    
    END_IF;
    die Cycletime bleibt bei "xUse_Cycle_Measurement" auf TRUE aber bei T#0s, genau so wie auch die Elapsed Time des TON.
    Ich sehe aber, dass Trigger.TON TRUE wird.

    Selbst, wenn man die IF Bedingungen komplett löscht, müsste der TON doch wenigstens eine ET beim Online-Watch anzeigen.
    Hier kommt aber nüscht.

    Kann mir jemand weiterhelfen?

    Grüße,
    Flo

    PS:
    System: Keins, nur Simulation
    CodesysVersion: 2.3.X
    Zitieren Zitieren Wo liegt hier der Fehler? TON für Zykluszeitmessung, CODE hochgeladen  

  2. #2
    Registriert seit
    11.12.2010
    Ort
    nähe Bamberg
    Beiträge
    40
    Danke
    1
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Hi!
    Versuch das mal:

    Instanz1_TON(IN:= Trigger_TON, PT:= T#5s);
    if not Trigger_TON then
    Trigger_TON:=true;
    end_if;
    if Instanz1_TON.ET>0 then
    Trigger_TON:=false;
    end_if;

    Gruß

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

    KingHelmer (10.10.2013)

  4. #3
    Avatar von KingHelmer
    KingHelmer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    989
    Danke
    114
    Erhielt 125 Danke für 100 Beiträge

    Standard

    Hallöchen,

    das hat funktioniert, allerdings muss ich den Wert am Schluss noch durch zwei teilen, um die wirkliche Zykluszeit herauszufinden.
    Denn hier "braucht" die IF bedingung ja einen zyklus, damit der TON angeschmissen wird.

    Das muss man hier beachten.
    Ansonsten funktioniert es so einwandfrei.

    Mich würde nur interessieren, warum bei meiner Lösung nicht ging.....

    Grüße,
    Flo

  5. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Oder auch so:
    Code:
    VAR
       Timer:TON;
       GetCycleTime:BOOL;
       LastET:TIME;
       CycleTime:TIME;
    END_VAR
    
    Timer(In:=GetCycleTime,
             PT:=t#Länger als Du messen willst);
    CycleTime:=Timer.ET-LastET;
    LastET:=Timer.ET;
    IF GetCycleTime AND (CycleTime>t#0ms)
    THEN
       (* CycleTime gültig, mach was damit *)
    END_IF
    Deine Lösung funktionierte nicht, weil der Timer-Eingang nur für einen Zyklus True war.
    Geändert von StructuredTrash (10.10.2013 um 16:38 Uhr) Grund: War zu langsam

  6. #5
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard

    Zitat Zitat von KingHelmer Beitrag anzeigen
    Hallo leute,

    ich brauche in einem Programmbaustein die aktuelle Zykluszeit des Programms.
    Diese wollte ich über die "Elapsed TIME" des TON (ET) herausfinden.

    Also habe ich folgendes eingefügt:

    Code:
    Trigger_TON:= NOT Trigger_TON ;
    Instanz1_TON(IN:= Trigger_TON, PT:= T#5s);
    
    IF xUse_Cycle_Measurement = TRUE THEN
    
    Cycle_Time:=TIME_TO_REAL(Instanz1_TON.ET);
    
    ELSIF xUse_Cycle_Measurement = FALSE THEN
    
    Cycle_Time:=TIME_TO_REAL(tCycle_Time);
    
    END_IF;
    die Cycletime bleibt bei "xUse_Cycle_Measurement" auf TRUE aber bei T#0s, genau so wie auch die Elapsed Time des TON.
    Ich sehe aber, dass Trigger.TON TRUE wird.

    Selbst, wenn man die IF Bedingungen komplett löscht, müsste der TON doch wenigstens eine ET beim Online-Watch anzeigen.
    Hier kommt aber nüscht.

    Kann mir jemand weiterhelfen?

    Grüße,
    Flo

    PS:
    System: Keins, nur Simulation
    CodesysVersion: 2.3.X


    PROGRAM MAIN
    VAR
    Cycle_Time:UDINT;
    Exec_Cycle_Time:UDINT;
    _iINT;
    END_VAR
    (********************************************)

    WHILE _i < 100000 DO
    _i:=_i+1;
    END_WHILE;
    _i:=0;

    (*TwinCAT PLC Utilities Library*)
    (*Sehe GV InfoTaskArray*)
    Exec_Cycle_Time:=Cycle_Time:=SystemTaskInfoArr[1].lastExecTime;(*abarbeitungszeit Programm in microsec*)
    Cycle_Time:=SystemTaskInfoArr[1].cycleTime;(*Aktuelle Tasktime*)

    (**********************************************)

  7. #6
    Registriert seit
    13.10.2013
    Ort
    shertogenbosch niederlande
    Beiträge
    120
    Danke
    0
    Erhielt 8 Danke für 6 Beiträge

    Standard

    oder benutze NOW() as this gives the actual time.

    irgendwo im program wieder auffragen und dan substrahieren.
    den cycletime gibt es auch im resources.
    overall cycletime wird nicht stabil sein durch interupts

  8. #7
    Registriert seit
    07.10.2013
    Beiträge
    96
    Danke
    7
    Erhielt 11 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So sieht es aus
    Task Info.jpg
    Angehängte Grafiken Angehängte Grafiken

Ähnliche Themen

  1. TON ET Parameter speichern / verwenden für weiteren TON
    Von Breakstuff im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 13.10.2013, 14:12
  2. Step 7 Probleme mit TON in FB (TON als Multiinstanz, der FB selbst nicht!)
    Von Jochen Kühner im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.06.2013, 18:29
  3. Antworten: 6
    Letzter Beitrag: 28.09.2011, 16:14
  4. Wo liegt der Unterschied
    Von Techniker1907 im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 23.09.2011, 17:13

Stichworte

Lesezeichen

Berechtigungen

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