{
    S7_Author := "ABH";
    S7_BlockComment := "MLC_4Eb";
    S7_BlockNumber := "2931";
    S7_BlockTitle := "MLC_jB";
    S7_EditorMode := "SCL";
    S7_Family := "ZeusControl";
    S7_Optimized := "TRUE";
    S7_Version := "1.0"
}
FUNCTION "FC2931_ZC_TP_INDV" : Void
    VAR_INPUT
        Pulso1Seg : Bool;
    END_VAR
    VAR_IN_OUT
        TP : _.UDT_ZC_DISP_TP;
    END_VAR

    { S7_Language := "SCL" }
    NETWORK
        REGION DESCRIPCION
        (*
        ###### (C)Copyright ZeusControl 2022 - 2022
        
        ---
        ### 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 gestionar un dispositivo TP.
        
        Las tareas que realiza son las siguientes:
        
        - Gestionar la activacion y temporizacion de la activacion del temporizador.
        
        ---
        ### Dependencias Requeridas
        | Tipo | Elementos |
        |------|-----------|
        | FC   | - |
        | FB   | - |
        | DB   | - |
        | UDT  | `UDT_ZC_DISP_TP` |
            
        ---
        ### Historial de Cambios
        | Versión  | Fecha      | Técnico | Cambios |
        |----------|------------|---------|---------|
        | 01.00.00 | 02.10.2022 | (ABH)   | Primera version. |
        *)
        END_REGION DESCRIPCION
        
        
        //  ==========================================================================================================
        REGION GESTION_DISPOSITIVO
            
            // =============================================================================
            // Detección de flanco 
            IF #TP.IN AND NOT #TP.oldIN THEN
                #TP.Q := TRUE;
            END_IF;
            
            //  Actualizo valor de memoria
            #TP.oldIN := #TP.IN;
            
            // =============================================================================
            //  Reinicio memoria de activación cuando piedo salida y cuento tiempo
            IF NOT #TP.IN THEN
                #TP.oldIN := FALSE;
            END_IF;
            
            // =============================================================================
            // Incremento de tiempo
            IF #TP.Q
                AND
                #TP.ET < #TP.PT
                AND
                #Pulso1Seg
            THEN
                #TP.ET += 1;
            END_IF;
            
            // =============================================================================
            // Desactivo salida cuando cumplo tiempo de retardo de salida
            IF #TP.ET >= #TP.PT THEN
                #TP.Q := FALSE;
                #TP.ET := 0;
            END_IF;
            
        END_REGION GESTION_DISPOSITIVO
        
        
    END_NETWORK
END_FUNCTION
