Step 7 S7 Timer Restlaufzeit merken damit er nicht erneut von vorne beginnt

sob

Level-1
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte einen S7 Timer einsetzen der nach einen "0"-Signal am Anschluss "S" mit der restlichen Laufzeit weiterläuft.
Könnte mir hierbei jemand behilflich sein.

S_EVERZ.jpg
 

Anhänge

  • S_EVERZ.jpg
    S_EVERZ.jpg
    16,2 KB · Aufrufe: 28
mit dem SS_EVERZ gehts nicht. Wenn der Eingang zu 0 wird läuft die Zeit weiter und stoppt.
mit dem S_IMPULS ebenfalls nicht. Die Zeit stoppt wenn der Eingang zu 0 wird aber bei 1 am Eingang beginnt die Zeit von vorne zu laufen.
mit S_VIMP gehts auch nicht. Die Zeit läuft weiter wenn der Eingang zu 0 wird.
 
Üblicherweise heißt der akkumulierende Timer TONR. In Step7 classic siehe FC80 aus der Bibliothek "TI-S7 Converting Blocks", in TIA siehe TONR. Oder einfach selber schreiben.

Harald
 
- den TONR kann ich leider nicht finden.
- speichernd klappt geht es leider nicht. Der Timer sollte stoppen nachdem der Eingang am Anschluss "S" des Timer "0" wird. Wird er wieder soll die restliche Zeit weiter ablaufen.

Ich dachte auch schon an einen Subtrahierer in Verbindung mit einem TON aber das will auch nicht funktionieren.
 
Probier mal:

Gruß
Dieter

Code:
FUNCTION_BLOCK "NewTON"TITLE =TON (unterbrechbar)
//Der Baustein verhält sich kompatibel zum Einschaltverzögerung SFB4 (TON), mit 
//dem Unterschied, dass der Zeitablauf unterbrechbar ist
AUTHOR : 'Blockmove'
VERSION : 0.1




VAR_INPUT
  On : BOOL  := TRUE;	
  IN : BOOL ;	
  PT : TIME ;	
END_VAR
VAR_OUTPUT
  Q : BOOL ;	
  ET : TIME ;	
END_VAR
VAR
  FM_IN : BOOL ;	//Flankenmerker IN
  FM_ON : BOOL ;	//Flankenmerker ON
  Startzeit : TIME ;	
  Endzeit : TIME ;	
  Restzeit : TIME ;	
END_VAR
VAR_TEMP
  SysTime : TIME ;	//Aktuelle Systemzeit
  FP_IN : BOOL ;	//Positive Flanke IN
  FP_ON : BOOL ;	//Positive Flanke ON
  FN_ON : BOOL ;	//Negative Flanke ON
END_VAR
BEGIN
NETWORK
TITLE =akuelle Systemzeit einlesen


      CALL "TIME_TCK" (
           RET_VAL                  := #SysTime);


NETWORK
TITLE =// Positive und Negative Flanke ON


      U     #On; 
      UN    #FM_ON; 
      =     #FP_ON; // Positive Flanke ON


      UN    #On; 
      U     #FM_ON; 
      =     #FN_ON; // Negative Flanke ON


      U     #On; 
      =     #FM_ON; // Flankenmerker
NETWORK
TITLE =Bei neg. Flanke ON Restzeit sichern


      U     #FN_ON; 
      SPBN  FN1; 
      L     #Endzeit; 
      L     #SysTime; 
      -D    ; 
      T     #Restzeit; 
FN1:  NOP   0; 
NETWORK
TITLE =Bei pos. Flanke ON Neue Endzeit bereichen


      U     #FP_ON; 
      SPBN  FP1; 
      L     #SysTime; 
      L     #Restzeit; 
      +D    ; 
      T     #Endzeit; 
FP1:  NOP   0; 


NETWORK
TITLE =Wenn ON = 0, dann ist hier Schluss


      UN    #On; 
      BEB   ; 
NETWORK
TITLE =// Positive Flanke IN


      U     #IN; 
      FP    #FM_IN; 
      =     #FP_IN; 
NETWORK
TITLE =Endzeit ermitteln


      U     #FP_IN; 
      SPBN  End1; 
      L     #SysTime; 
      L     #PT; 
      +D    ; 
      T     #Endzeit; 
      L     L#0; 
      T     #ET; 
End1: NOP   0; 
NETWORK
TITLE =ET


      U     #IN; // Wenn IN = 0,
      SPB   ET1; // dann Wert 0
      L     L#0; // in ET schreiben
      SPA   ET3; 


ET1:  UN    #Q; // Wenn Ausgang = 1,
      SPB   ET2; // dann den Zeitwert PT 
      L     #PT; // in ET schreiben
      SPA   ET3; 


ET2:  L     #SysTime; // ansonsten
      L     #Endzeit; // ET = Systemzeit - Endzeit + PT
      -D    ; 
      L     #PT; 
      +D    ; 
ET3:  T     #ET; 
NETWORK
TITLE =Ausgang


      U(    ; 
      L     #SysTime; 
      L     #Endzeit; 
      >=D   ; 
      )     ; 
      U     #IN; 
      =     #Q; 
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
- den TONR kann ich leider nicht finden.
Warum nicht? Wo hast Du gesucht?

Jetzt wäre ein guter Zeitpunkt daß Du uns mitteilst, welche CPU Du mit welcher Programmiersoftware programmieren willst.

In Step7 V5.x findest Du den TONR unter
Standard Library > TI-S7 Converting Blocks > FC80 TONR

Harald
 
- den TONR kann ich leider nicht finden.
- speichernd klappt geht es leider nicht. Der Timer sollte stoppen nachdem der Eingang am Anschluss "S" des Timer "0" wird. Wird er wieder soll die restliche Zeit weiter ablaufen.

Ich dachte auch schon an einen Subtrahierer in Verbindung mit einem TON aber das will auch nicht funktionieren.

Wie genau soll es denn sein, sehr einfach wäre auch mit einem Taktmerker aller 100ms nur bei anstehenden Eingangssignal Taktflanken bis zu einem Vergleichswert zählen.
 
Zurück
Oben