Step 7 TON/TOF mit "MM:SS" beschalten und zurücklesen

Waelder

Level-2
Beiträge
964
Reaktionspunkte
117
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

kurze Frage wie bekomme ich aus einem laufenden TON/TOF Timer den MM:SS (Bsp 1:59) zurück ? TON auslesen ist kein Problem das weiss ich ja.
Den Timer mit MM:SS vorbelegen kann ich ja mit 2 Variabeln erledigen und entsprechend umrechnen.

Umgekehrt auch oder ? Ich hab mal gesucht hier bei uns mit TON Minuten Sekunden.
Vielleicht gibt es ein Beispiel dazu ?

Gruss & Danke
Michael
 
Hallo Michael,

wenn du mit TON/TOF die SFB4,5 meinst dann wäre das der OUT .ET des Bausteins. Der gibt dir die abgelaufene Zeit in Millisekunden zurück. Das müßtest du dann nur noch umrechnen ...

Gruß
Larry
 
Lösungsvorschlag V01

Sodele, erster Versuch die Time in 3x Integer umzuwandeln und umgekehrt :
Baustein ist getestet und hat für meinen zweck funktioniert.
U.u. ist eine Optimierung noch möglich.

Code:
FUNCTION "FC_TOx T_TO_HMS" : VOID
TITLE =
//Umskalierung S7 Zeit T nach "Stunden : Minuten : Sekunden"
AUTHOR : BA
FAMILY : Konvert
NAME : TOxToHMS
VERSION : 0.1


VAR_INPUT
  ZEIT : TIME ;    
END_VAR
VAR_OUTPUT
  Stunden : INT ;    
  Minuten : INT ;    
  Sekunden : INT ;    
END_VAR
VAR_TEMP
  Zeit_1000 : DINT ;    
  H_R : REAL ;    
  M_R : REAL ;    
  S_R : REAL ;    
  M_ZWT_1 : DINT ;    
  M_ZWT_2 : DINT ;    
  S_ZWT_1 : DINT ;    
  S_ZWT_2 : DINT ;    
END_VAR
BEGIN
NETWORK
TITLE =

//Durch 1000 Teilen
      L     #ZEIT; 
      L     L#1000; 
      /D    ; 
      T     #Zeit_1000; 

//Stunden errechnen
      L     #Zeit_1000; 
      L     L#3600; 
      /D    ; 
      T     #Stunden; 
//Minuten errechnen
      L     #Zeit_1000; 
      L     60; 
      /D    ; 
      T     #M_ZWT_1; 

      L     #Stunden; 
      L     L#60; 
      *D    ; 
      T     #M_ZWT_2; 

      L     #M_ZWT_1; 
      L     #M_ZWT_2; 
      -D    ; 
      T     #Minuten; 
//Sekunden
      L     #Stunden; 
      L     L#3600; 
      *D    ; 
      T     #S_ZWT_1; 

      L     #Minuten; 
      L     L#60; 
      *D    ; 
      T     #S_ZWT_2; 

      L     #Zeit_1000; 
      L     #S_ZWT_1; 
      -D    ; 
      L     #S_ZWT_2; 
      -D    ; 
      T     #Sekunden; 
END_FUNCTION
DTO für 3x Integer in Zeit
Code:
FUNCTION "FC_TOx HMS_TO_T" : VOID
TITLE =
//skalierung "Stunden : Minuten : Sekunden" nach S7 Zeit
AUTHOR : BA
FAMILY : Konvert
NAME : TOxHMS_T
VERSION : 0.1


VAR_INPUT
  Stunden : INT ;    
  Minuten : INT ;    
  Sekunden : INT ;    
END_VAR
VAR_OUTPUT
  ZEIT : TIME ;    
END_VAR
VAR_TEMP
  H_Tmp : TIME ;    
  M_Tmp : TIME ;    
  S_Tmp : TIME ;    
END_VAR
BEGIN
NETWORK
TITLE =

//Stunden
      L     #Stunden; 
      L     L#3600000; 
      *D    ; 
      T     #H_Tmp; 
//Minuten
      L     #Minuten; 
      L     L#60000; 
      *D    ; 
      T     #M_Tmp; 
//Sekunden
      L     #Sekunden; 
      L     L#1000; 
      *D    ; 
      T     #S_Tmp; 
//Ergebnis
      L     #H_Tmp; 
      L     #M_Tmp; 
      +D    ; 
      L     #S_Tmp; 
      +D    ; 
      T     #ZEIT; 
END_FUNCTION
 
Zurück
Oben