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

Ergebnis 1 bis 8 von 8

Thema: IEC-Zeiten unterbrechen und weiterlaufen lassen

  1. #1
    Registriert seit
    01.10.2010
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    ich habe da ein Problem mit den IEC-Zeiten.
    Ich benötige Zeitfunktionen , bei der ich die laufende Zeit "anhalten" und dann wieder weiterlaufen lassen kann ohne das die Zeit wieder von vorne beginnt sondern nur noch die Restzeit abläuft.
    Ich benutze derzeit die SFB4.
    Hiebei sehe ich nicht das Verhalten wie bei normalen Timern, das der Zeitwert stehenbleibt, wenn die SE-Bedingung vor Ablauf unterbrochen wird. Damit war es dort sehr einfach das beim Wiederstart weiterlaufen zu lassen.
    Bei den IEC-Zeiten geht der Ablaufzeit-Wert sofort auf 0 wenn er vor Ablauf unterbrochen wird. Somit habe ich leider die Restzeit nicht mehr zur Verfügung.
    IEC-Zeiten muss ich leider benutzen, da ich sehr lange Zeiten (10h und mehr) benötige.

    Bin für jede Lösung dankbar (aber bitte nicht mit normalen Timern und Zählern für Mehrfachnutzung der Timer für die lange Zeit).
    Besten Dank im Voraus.
    Zitieren Zitieren IEC-Zeiten unterbrechen und weiterlaufen lassen  

  2. #2
    Registriert seit
    03.12.2008
    Beiträge
    654
    Danke
    160
    Erhielt 185 Danke für 113 Beiträge

    Standard

    Hallo

    Wenn du Zeiten bis 10 Std. brauchst gehe ich davon aus dass eine Auflösung von 1 sec. reicht.
    Ich würde den Zeitwert (als Int in Sekunden) in ein Datenwort schreiben und dann mittels Taktmerker im Sekundentakt runterzählen, oder eben nicht (= Unterbrechung).
    Vergleicher wenn 0 erreicht --> Zeit abgelaufen. Fertig.
    Geändert von Paul (26.07.2011 um 10:35 Uhr)

  3. #3
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Ich würde wohl zum TONR (FC80) aus der Bibliothek "TI-S7 Converting Blocks" greifen. Kann aber gerade nicht in der Hilfe nachlesen, ob der diese Zeit abdecken kann, da ich hier kein Step7 habe.
    If you open your Mind too much, your Brain will fall out.

  4. #4
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Wenn Du was genaues brauchst, dann arbeite mit dem SFC64 "TIME TCK". Hier zählt die CPU zykluszeitunabhängig in 1ms-Schritten. Mit dem Wert kann man dann ja beliebig weiter arbeiten!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  5. #5
    simaticfan ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    01.10.2010
    Beiträge
    10
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK, vielen Dank erstmal für die Vorschläge.
    Bei 1(Taktmerker) befüchte ich bei langen Zeiten ein Wegdriften
    von der"Normalzeit", da ja dann Zykluszeiten doch eingehen bei den Abfragen im Programm. Ich hatte mir schon mal solche Timer selbst gebaut,
    aber mit OB35 als Zeittaktzähler, ging, aber fand ich hier nicht so toll.

    Ansonsten können auch mal 100h oder nur 100ms auftreten.
    Und die Zeiten sollten mir halt auf Dauer nicht abdriften gegen die Uhrzeit.

    Eins ist mir auch noch aufgefallen beim SFB4 , wenn da Null als Sollwert auftaucht (z.B.Fehleingabe vom User) schaltet er nicht sofort durch sondern läuft garnicht erst an. Find ich nicht gerade logisch.
    Den Fall muss ich dann wieder abfangen.
    Ich schau mir die genannten Funktionen mal an.
    Also Danke nochmal.

  6. #6
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Wenn Du so eine Zeitspanne benötigst, dann wäre vielleicht auch ein Vergleich mit der Systemzeit interessant!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  7. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    das mit dem Vorgabewert "0" beim SFB3..5 ist kein Bug sondern ein Feature (von Siemens) ...

    Wenn du keinen weg-driftenden Zeitwert haben willst gibt es ur die Möglichkeit, dir jeweils mit der positiven Flanke deines Triggers die aktuelle Uhrzeit wegzuspeichern und mit der negativen Flanke die aktuelle Uhrzeit gegen die gespeicherte Uhrzeit zu verrechnen und als neuen Offset zu speichern.
    Das könnte man ganz schön als FB machen, der dann auch den Vorteil hätte, dass die Zeitbasis TIME (also Millisekunden) sein könnte und dass es trotzdem noch ziemlich weit kommt. Wenn man dann auch noch das Datum mit dazu nimmt dann könnte man auch ununterbrochen im Prinzip beliebig auswerten ...

    Gruß
    Larry

  8. #8
    Registriert seit
    01.06.2007
    Beiträge
    56
    Danke
    0
    Erhielt 20 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo simaticfan

    Ich habe diese funktion in Codesys benötigt und mir ein Baustein geschrieben. Sollte aber genauso mit Simens IEC Zeiten gehen.
    Ich hoffe Du kannst mit Programmierung in ST/SCL was anfangen.
    Der Baustein arbeitet genauso wie ein IEC_TON hat aber zusätzlich den Eingang Enable mit dem die Zeit unterbrochen werden kann.

    Code:
     
    VAR_INPUT
     IN: BOOL; (* starts timer with rising edge, resets timer with falling edge *)
     Enable : BOOL ;
     PT: TIME; (* time to pass, before Q is set *)
    END_VAR
    VAR_OUTPUT
     Q: BOOL; (* is TRUE, PT seconds after IN had a rising edge *)
     ET: TIME; (* elapsed time *)
    END_VAR
    VAR
     TON : TON ;
     r_trig_IN : R_TRIG ;
     f_trig_Enable : F_TRIG ;
     Time_Memo : TIME ;
    END_VAR
     
    (* Positiver Impuls *)
    r_trig_IN (CLK:= IN);
    (* Negativer Impuls *)
    f_trig_Enable (CLK:= Enable);
    IF r_trig_IN.Q THEN (* Zeit neu setzen *)
     Time_Memo := PT ;
    END_IF
    IF f_trig_Enable.Q THEN (* Zeit unterbrechen *)
     (* Restzeit sichern *)
     Time_Memo := Time_Memo - TON.ET ;
    END_IF
    TON ( IN := Enable AND  IN, PT:= Time_Memo);
    IF TON.Q AND Enable THEN
     Q := TRUE  ;
    END_IF
    IF NOT IN THEN
     Q := FALSE  ;
    END_IF
    IF IN THEN
     ET := PT - (Time_Memo - TON.ET);
    ELSE
     ET := T#0s ;
    END_IF
    mfG Jochen

Ähnliche Themen

  1. Wie ne Zeit unterbrechen?
    Von floppy im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 25.07.2010, 10:21
  2. Lichtvorhang unterbrechen?
    Von zwerg77 im Forum Maschinensicherheit - Normen und Richtlinien
    Antworten: 3
    Letzter Beitrag: 27.09.2009, 11:09
  3. Zeit mit einem Timer anhalten und weiterlaufen lassen
    Von Holger Levetzow im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 24.10.2008, 20:52
  4. Timertrick: Zeit Messen, Anhalten, Weiterlaufen lassen,..
    Von Hartmut Lux im Forum Programmierstrategien
    Antworten: 14
    Letzter Beitrag: 29.01.2008, 23:05
  5. TCP/IP Kommunikation unterbrechen
    Von BiBi im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.07.2007, 13:50

Stichworte

Lesezeichen

Berechtigungen

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