Umrechung uhrzeit

Computerliebe

Level-2
Beiträge
40
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe leutz ich habe ein Problem und nach ewigen grübeln weis ich nicht mehr weiter ...

Ich habe mehrere Betriebstundenzähler in der anlage programmiert.
Mit einem Minuten impuls und der Laufmeldung (z.B Presse)
zähle ich die Laufzeit in Minuten. Dann teile ich den gezählten Wert durch 60 . Habe also nach 60 Minuten eine 1.(1 stunde) wenn ich nun aber zum Beispeil 110 Minuten zähle und dann durch 60 teile ,komme ich auf einen Wert von 1,83 Stunden . Das ist aber so völlig blöd ,weil ja eine Stunde 60 Minuten hat . Richtige Anzeige wäre ja 1 Stunde 50 Minuten .
wie kann ich das umrechnen ?????????
 
öhm, eine Stunde hat 60min und keine 100...

0,83 * 60min = 50min
 
Zuletzt bearbeitet:
Hier mal ein kurzes Programmbeispiel:

Code:
      L     MW    10                    // Betriebsstundenzähler (Minuten)
      L     60
      /I    
      T     MW    12                    // Stundem
 
      L     MW    10                    // Betriebsstundenzähler (Minuten)
      L     60
      MOD   
      T     MW    14                    // Minuten

oder:

Code:
      L     MD    20                    // Betriebsstundenzähler (Minuten)
      L     L#60
      /D    
      T     MD    24                    // Stunden
 
      L     MD    20                    // Betriebsstundenzähler (Minuten)
      L     L#60
      MOD   
      T     MD    28                    // Minuten

Gruß Kai
 
Hallo.

Bei einem INT geht es aber noch kürzer.

Code:
      L     MW   200
      L     60
      /I    
      RLD   16
      T     MD   210

Im MW210 steht der Quotient und im MW212 steht der Divisionsrest.
 
Hier noch ein Betriebsstundenzähler in SCL für einen Weckalarm OB

Code:
FUNCTION_BLOCK FB300
 
TITLE = 'Betriebsstundenzaehler'
//Betriebsstundenzähler zum Aufruf in einem Weckalarm - Organisationsbaustein
//Bei S7-400 OB 30 bis 38
//Bei S7-300 OB 35
//
//Der Speicherbereich der an Stunden angeschrieben wird muss remanent sein sonst gehen die Betriebsstunden nach einen CPU - Stop verloren!
//Der Instanzdatenbaustein des  Betriebsstundenzählers sollte auch remanent sein. Bei nicht remanent des InstanzDB gehen aber nur die Minuten und Sekunden verloren
//
//
//Schnittstelle:
//
//Input
//Aufrufzeit_OB : Aufrufzeit des Weckalarm OB's. Ist in der Schnittstelle des OB's zu finden. Bei OB35 #OB35_EXC_FREQ
//Ein :           Wenn Ein auf True gesetzt ist dann zählt der Betriebsstundenzähler. Bei False stoppt er beim vorhanden Wert. Bei weiteren wechsel in True zählt er vom vorhandenen Wert weiter 
//Reset :         Zum zurücksetzen des Betriebsstundenzählers
//
//Output
//Sekunden :      Sekunden des Betriebsstundenzählers
//Minuten :       Minuten des Betriebsstundenzählers
//
//In_Output
//Stunden :       Betriebsstunden ist eine IN_OUT Variable damit auch von aussen Stunden vorgegeben werden können
 
VERSION : '1.0'
AUTHOR  :godi
NAME    :Stunden
FAMILY  :SCL
KNOW_HOW_PROTECT
 
VAR_INPUT
    Aufrufzeit_OB : INT; //Aufrufzeit des Weckalarm OB's (zb: #OB35_EXC_FREQ)
    Ein : BOOL;   //Wenn ein auf True gesetzt ist dann zählt der Betriebsstundenzähler
    Reset : BOOL;   //Zum zurücksetzen des Betriebsstundenzählers
END_VAR
 
VAR_IN_OUT
    Stunden : DINT;   //Betriebsstunden (IN_OUT Variable damit auch von aussen Stunden vorgegeben werden können)
END_VAR
 
VAR_OUTPUT
    Sekunden : INT;   //Sekunden des Betriebsstundenzählers
    Minuten : INT;    //Minuten des Betriebsstundenzählers
END_VAR
 
VAR
    Impulse_pro_Sekunde : INT;
    Impulszaehler : INT; 
END_VAR
 
BEGIN
 
(*Impulsanzahl pro Sekunde ausrechnen*)
Impulse_pro_Sekunde := 1000 / Aufrufzeit_OB;
 
(*Impulszähler bei jedem Programmaufruf wo EIN True ist um den Faktor 1 erhöhen*)
IF Ein THEN
    Impulszaehler := Impulszaehler + 1;
END_IF;
 
(*Berechne Sekunden*)
IF Impulszaehler >= Impulse_pro_Sekunde THEN
    Sekunden := Sekunden +1;            //Wenn Impulszähler den Wert von Impulse pro Sekunde erreicht hat dann Zähle eine Sekunde dazu und 
    Impulszaehler := 0;                 //setze Impulszähler auf Null
END_IF;
 
(*Berechne Minuten*)
IF Sekunden >= 60 THEN
    Minuten := Minuten + 1;             
    Sekunden := 0;
END_IF;
 
(*Berechne Stunden*)
IF Minuten >= 60 THEN
    Stunden := Stunden + 1;           
    Minuten := 0;
END_IF;
 
(*Bei Reset setze alles auf Null*)
IF Reset THEN                        
    Stunden := 0;
    Minuten := 0;
    Sekunden := 0;
    Impulszaehler := 0;
END_IF;
 
END_FUNCTION_BLOCK

godi
 
Zurück
Oben