{
    S7_Author := "ABH";
    S7_BlockComment := "MLC_4qz";
    S7_BlockNumber := "8";
    S7_BlockTitle := "MLC_Nu";
    S7_EditorMode := "SCL";
    S7_Family := "ZeusControl";
    S7_IECCheck := "TRUE";
    S7_Optimized := "TRUE";
    S7_Version := "1.0"
}
FUNCTION "FC8_ZC_TRZ_REGISTRO" : Void
    VAR_INPUT
        { S7_MLC := "MLC_4CB" }
        FechaHora : DTL;
        { S7_MLC := "MLC_qW" }
        Registrar : USInt;
        { S7_MLC := "MLC_3s5" }
        Categoria : Int;
        { S7_MLC := "MLC_XT" }
        User : String;
        { S7_MLC := "MLC_3wF" }
        CodInt_1 : Int;
        { S7_MLC := "MLC_3Eb" }
        CodInt_2 : Int;
        { S7_MLC := "MLC_uc" }
        CodInt_3 : Int;
        { S7_MLC := "MLC_3MM" }
        CodInt_4 : Int;
        { S7_MLC := "MLC_Pi" }
        CodInt_5 : Int;
        { S7_MLC := "MLC_3Kr" }
        CodReal_1 : Real;
        { S7_MLC := "MLC_3c3" }
        CodReal_2 : Real;
    END_VAR
    VAR_TEMP
        { S7_MLC := "MLC_569" }
        t_dummy : Int;
    END_VAR

    { S7_Language := "SCL" }
    NETWORK
        REGION DESCRIPCION
        (*
        ###### (C)Copyright ZeusControl 2022 - 2026
        
        ---
        ### 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 almacenar de forma secuencial un nuevo evento de trazabilidad dentro del buffer de registros.
        
        Las tareas que realiza son las siguientes:
        
        - Verifica que la gestión general de trazabilidad se encuentre habilitada en el sistema.
        - Desplaza el contenido actual del buffer de trazas una posición hacia abajo mediante la instrucción `MOVE_BLK_VARIANT`, liberando el primer índice.
        - Convierte la marca de tiempo de entrada (formato `DTL`) a una cadena de texto (`String`) haciendo uso de la función `FC15006_ZC_DTL_TO_STRING`.
        - Almacena los parámetros del nuevo registro (orden de registrar, marca de tiempo, categoría, códigos numéricos enteros y reales) en la posición inicial (índice 0) del buffer.
        - Valida la cadena de caracteres correspondiente al usuario: si se encuentra vacía, registra una cadena de espacios por defecto; en caso contrario, asigna el nombre de usuario proporcionado en la entrada.
        
        ---
        ### Dependencias Requeridas
        | Tipo | Elementos |
        |------|-----------|
        | FC   | `FC15006_ZC_DTL_TO_STRING` |
        | FB   | - |
        | DB   | `DB7_TRAZA` |
        | UDT  | - |
            
        ---
        ### Historial de Cambios
        | Versión  | Fecha      | Técnico | Cambios |
        |----------|------------|---------|---------|
        | 00.00.01 | 31.08.2022 | (ABH)   | Primera version. |
        | 00.00.02 | 25.03.2026 | (ABH)   | Se añade datos nuevos de UDT. |
        | 01.00.00 | 21.05.2026 | (ABH)   | Se cambia la variable fechaactual de string a DTL. Se reduce el usuario actual a 15 caracteres. |
        *)
        END_REGION DESCRIPCION
        
        
        //  ==========================================================================================================
        REGION GESTION_REGISTRO_TRAZA
            
            //  Si la trazabilidad esta habilitada
            IF "DB7_TRZ".Gestion.HabilitacionGeneral THEN
                
                //  Desplazamos los datos una posicion hacia abajo
                #t_dummy := MOVE_BLK_VARIANT(SRC := "DB7_TRZ".Buffer, COUNT := INT_TO_UDINT(("N_MAX_TRAZA_BUFFER")), SRC_INDEX := 0, DEST_INDEX := 1, DEST => "DB7_TRZ".Buffer);
                
                //  Guardamos el nuevo registro en la primera posicion
                "DB7_TRZ".Buffer[0].Registrar := #Registrar;
                "DB7_TRZ".Buffer[0].TimeStamp := #FechaHora;
                "DB7_TRZ".Buffer[0].Categoria := #Categoria;
                "DB7_TRZ".Buffer[0].CodInt_1 := #CodInt_1;
                "DB7_TRZ".Buffer[0].CodInt_2 := #CodInt_2;
                "DB7_TRZ".Buffer[0].CodInt_3 := #CodInt_3;
                "DB7_TRZ".Buffer[0].CodInt_4 := #CodInt_4;
                "DB7_TRZ".Buffer[0].CodInt_5 := #CodInt_5;
                "DB7_TRZ".Buffer[0].CodReal_1 := #CodReal_1;
                "DB7_TRZ".Buffer[0].CodReal_2 := #CodReal_2;
                IF #User = '' THEN
                    "DB7_TRZ".Buffer[0].User := '    ';
                ELSE
                    "DB7_TRZ".Buffer[0].User := #User;
                END_IF;
                
            END_IF;
            
        END_REGION GESTION_REGISTRO_TRAZA
        
        
    END_NETWORK
END_FUNCTION
