TODausgabe in WinCC

Domi55

Level-1
Beiträge
111
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ist es möglich, das TOD Format in WinCC wiederzugeben?
Gebe die Variable aus der SPS raus nur bei der Ausgabe gibts Probleme.
Habe die Variable in WinCC als String angelegt.

MFG Domi
 
Das mit dem TOD hab ich mal weggelassen. Bekomme von dem Regler die Restlaufzeit in Sekunden (LONG) auf die S7-313C. Jetzt will ich diesen Wert in WinCC darstellen (hh:mm:ss)! Wie kann ich das am besten realisieren?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du legst die eine globale C-Funktion an. Diese nimmt als Funktionsparameter deinen Sekundenzählwert an und gibt einen String (bzw. einen Zeiger darauf) zurück.

Im WinCC Stil also z.B. so:
Code:
char *DINTsecToHHMMSS(DWORD s)
{
  char *str = SysMalloc(16);
  sprintf(str, "%2.2d:%2.2d:%2.2d", (s / 3600), (s % 3600) / 60, (s % 60));
  return str;
}
3600 Sekunden würden damit als "01:00:00" angezeigt.
 
Zuletzt bearbeitet:
Code:
char *DINTsecToHHMMSS(DWORD s)
{
  char *str = SysMalloc(16);
  sprintf(str, "%2.2d:%2.2d:%2.2d", (s / 1440), (s % 1440) / 60, (s % 60));
  return str;
}
1440 Sekunden würden damit als "01:00:00" angezeigt.

1 Stunde = 60 Minuten = 3600 Sekunden.

1 Tag = 24 Stunden = 1440 Minuten

Da wir die Anzeige hh:mm:ss haben wollen, solltest Du mit 3600 Sekunden rechnen.

Gruß Kai
 
Nachfolgend ein Programmbeispiel für die Umrechnung der Restlaufzeit in der SPS:

Code:
FUNCTION FC 100 : VOID
TITLE =Restlaufzeit
AUTHOR : Kai
FAMILY : SPSForum
NAME : '41874'
VERSION : 1.0
 
VAR_INPUT
  Restlaufzeit : DINT ; //Restlaufzeit Sekunden
END_VAR
VAR_OUTPUT
  Stunden : INT ; //Restlaufzeit Stunden
  Minuten : INT ; //Restlaufzeit Minuten
  Sekunden : INT ; //Restlaufzeit Sekunden
END_VAR
BEGIN
NETWORK
TITLE =Restlaufzeit
//1 Stunde = 60 Minuten = 3600 Sekunden
//   
      L     #Restlaufzeit; // Restlaufzeit Sekunden
      L     L#3600; 
      /D    ; 
      T     #Stunden; // Restlaufzeit Stunden
 
      L     #Restlaufzeit; // Restlaufzeit Sekunden
      L     L#60; 
      /D    ; 
      L     L#60; 
      MOD   ; 
      T     #Minuten; // Restlaufzeit Minuten
 
      L     #Restlaufzeit; // Restlaufzeit Sekunden
      L     L#60; 
      MOD   ; 
      T     #Sekunden; // Restlaufzeit Sekunden
 
END_FUNCTION

Gruß Kai
 

Anhänge

  • OB1.pdf
    5,8 KB · Aufrufe: 8
  • FC100.pdf
    5 KB · Aufrufe: 9
  • 41874.zip
    30,3 KB · Aufrufe: 6
Nachfolgend ein Programmbeispiel für die Umrechnung der Restlaufzeit und die Ausgabe der Restlaufzeit als STRING:

Code:
FUNCTION_BLOCK FB 100
TITLE =Laufzeit
AUTHOR : Kai
FAMILY : SPSForum
NAME : '41874'
VERSION : 1.0
 
VAR_INPUT
  DINT_Laufzeit : DINT ; //Laufzeit Sekunden
END_VAR
VAR_OUTPUT
  STRING_Laufzeit : STRING  [12 ] := '00 : 00 : 00'; //Laufzeit STRING
END_VAR
VAR_TEMP
  INT_Stunden : INT ; //Laufzeit Stunden
  INT_Minuten : INT ; //Laufzeit Minuten
  INT_Sekunden : INT ; //Laufzeit Sekunden
END_VAR
BEGIN
NETWORK
TITLE =Laufzeit Sekunden -> Laufzeit Stunden, Minuten, Sekunden
//1 Stunde = 60 Minuten = 3600 Sekunden
//   
      L     #DINT_Laufzeit; // Laufzeit Sekunden
      L     L#3600; 
      /D    ; 
      T     #INT_Stunden; // Laufzeit Stunden
 
      L     #DINT_Laufzeit; // Laufzeit Sekunden
      L     L#60; 
      /D    ; 
      L     L#60; 
      MOD   ; 
      T     #INT_Minuten; // Laufzeit Minuten
 
      L     #DINT_Laufzeit; // Laufzeit Sekunden
      L     L#60; 
      MOD   ; 
      T     #INT_Sekunden; // Laufzeit Sekunden
 
NETWORK
TITLE =Laufzeit Stunden, Minuten, Sekunden -> Laufzeit STRING
//ASCII-Zeichensatz
//
//DEZ 48 = HEX 30 = CHAR '0'
//DEZ 49 = HEX 31 = CHAR '1'
//DEZ 50 = HEX 32 = CHAR '2'
//DEZ 51 = HEX 33 = CHAR '3'
//DEZ 52 = HEX 34 = CHAR '4'
//DEZ 53 = HEX 35 = CHAR '5'
//DEZ 54 = HEX 36 = CHAR '6'
//DEZ 55 = HEX 37 = CHAR '7'
//DEZ 56 = HEX 38 = CHAR '8'
//DEZ 57 = HEX 39 = CHAR '9'
//   
      L     #INT_Stunden; // Laufzeit Stunden
      ITB   ; 
      SRW   4; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[1]; // Laufzeit Stunden Zehnerstelle
 
      L     #INT_Stunden; // Laufzeit Stunden
      ITB   ; 
      SLW   12; 
      SRW   12; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[2]; // Laufzeit Stunden Einerstelle
 
      L     #INT_Minuten; // Laufzeit Minuten
      ITB   ; 
      SRW   4; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[6]; // Laufzeit Minuten Zehnerstelle
 
      L     #INT_Minuten; // Laufzeit Minuten
      ITB   ; 
      SLW   12; 
      SRW   12; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[7]; // Laufzeit Minuten Einerstelle
 
      L     #INT_Sekunden; // Laufzeit Sekunden
      ITB   ; 
      SRW   4; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[11]; // Laufzeit Sekunden Zehnerstelle
 
      L     #INT_Sekunden; // Laufzeit Sekunden
      ITB   ; 
      SLW   12; 
      SRW   12; 
      L     48; 
      +I    ; 
      T     #STRING_Laufzeit[12]; // Laufzeit Sekunden Einerstelle
 
END_FUNCTION_BLOCK

Gruß Kai
 

Anhänge

  • OB1.pdf
    5,7 KB · Aufrufe: 10
  • FB100.pdf
    7,1 KB · Aufrufe: 11
  • DB200.pdf
    4,6 KB · Aufrufe: 9
  • 41874.zip
    32,2 KB · Aufrufe: 6
  • VAT.jpg
    VAT.jpg
    287,9 KB · Aufrufe: 10
Zurück
Oben