{
    S7_Author := "HCR";
    S7_BlockComment := "MLC_3d2";
    S7_BlockNumber := "15025";
    S7_BlockTitle := "MLC_Pc";
    S7_EditorMode := "SCL";
    S7_Family := "ZeusControl";
    S7_IECCheck := "TRUE";
    S7_Optimized := "TRUE";
    S7_Version := "1.0"
}
FUNCTION "FC15025_ZC_CONTADOR_TIEMPO" : Void
    VAR_INPUT
        { S7_MLC := "MLC_4qU" }
        Pulso1seg : Bool;
        { S7_MLC := "MLC_4pS" }
        Iniciar : Bool;
        { S7_MLC := "MLC_357" }
        Reset : Bool;
    END_VAR
    VAR_IN_OUT
        Contador : _.UDT_ZC_CONTADOR_TIEMPO;
    END_VAR
    VAR CONSTANT
        { S7_MLC := "MLC_Rh" }
        MAX_HORAS : UDInt := 10000000;
    END_VAR

    { S7_Language := "SCL" }
    NETWORK
        REGION DESCRIPCION
        (*
        ###### (C)Copyright ZeusControl 2023 - 2023
        
        ---
        ### Información del Sistema
        | Hardware Compatible | Entorno de Ingeniería |
        |---------------------|-----------------------|
        | PLC serie 1200/1500 | TIA Portal 18         |
        
        ---
        > **Restricciones:** Ninguna.
        
        ---
        ### Descripción Funcional
        
        Función encargada de contar tiempo.
        
        ---
        ### Dependencias Requeridas
        | Tipo | Elementos |
        |------|-----------|
        | FC   | - |
        | FB   | - |
        | DB   | - |
        | UDT  | - |
            
        ---
        ### Historial de Cambios
        | Versión  | Fecha      | Técnico | Cambios |
        |----------|------------|---------|---------|
        | 01.00.00 | 16.03.2023 | (HCR)   | Primera version. |
        | 01.00.01 | 25.07.2023 | (HCR)   | Se añade valor maximo DINT para limitar contador horas. En caso de alcanzar valor maximo, se resetea el contador de horas. |
        *)
        END_REGION DESCRIPCION
        
        
        //  ==========================================================================================================
        REGION GESTION_CONTADOR
            
            //  ==========================================================================================================
            REGION RESET_CONTADOR
                
                IF #Reset OR #Contador.Hora >= #MAX_HORAS THEN
                    #Contador.Hora := #Contador.Minuto := #Contador.Segundo := 0;
                END_IF;
                
            END_REGION RESET_CONTADOR
            
            
            //  ==========================================================================================================
            REGION GESTION_CONTADOR
                
                IF #Iniciar AND #Pulso1seg THEN
                    #Contador.#Segundo += 1;
                    IF #Contador.#Segundo >= 60 THEN
                        #Contador.#Segundo := 0;
                        #Contador.#Minuto += 1;
                        IF #Contador.#Minuto >= 60 THEN
                            #Contador.#Minuto := 0;
                            #Contador.Hora += 1;
                        END_IF;
                    END_IF;
                END_IF;
                
            END_REGION RESET_CONTADOR
            
        END_REGION
        
    END_NETWORK
END_FUNCTION
