Problemas con el reloj del controlador y archivado

Los resultados almacenados en ToolsNet incluyen una marca de tiempo que proporciona el controlador de apriete. Si el reloj interno del controlador es incorrecto debido a una batería del reloj en tiempo real (RTC) se ha agotado, a un fallo en la sincronización del Protocolo de tiempo de red (NTP), a una configuración manual incorrecta o a una desviación del reloj, los resultados podrían almacenarse con una marca de tiempo errónea. Una marca de tiempo incorrecta puede provocar que un resultado no aparezca en el archivo correcto o que se archive en una base de datos de archivo errónea.

Síntomas habituales:

  • Los resultados aparecen con fechas muy lejanas en el pasado (por ejemplo, 1970 o 2000).

  • Los resultados aparecen con fechas muy lejanas en el futuro.

  • El número total de resultados archivados no coincide con el número de resultados de la base de datos de producción.

Detección del problema

Antes de ejecutar la tarea de archivado, compruebe que ningún resultado tenga marcas de tiempo incorrectas. Ejecute esta consulta en la base de datos de ToolsNet para identificar resultados sospechosos:

Resultados con marcas de tiempo que se sitúan más de 1 día en el futuro

SELECCIONE
    r.ID,
    r.ResultDateTime,
    r.ResultInsertDateTime,
    CASE
        WHEN u.MasterUnitID IS NOT NULL
            AND mu.Name IS NOT NULL
        THEN CONCAT(mu.Name, ' - ', u.Name)
        ELSE u.Name
    END AS ControllerName,
    u.IPAddress,
    p.Name AS ProgramName,
    r.UnifiedResultStatusTypeID AS ResultStatus
FROM AtlasCopco_ToolsNet_Database.ACDC.Result AS r
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit AS u
    ON r.UnitID = u.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit AS mu
    ON u.MasterUnitID = mu.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Program AS p
    ON r.ProgramID = p.ID
WHERE r.ResultDateTime > DATEADD(DAY, 1, GETUTCDATE())
ORDER BY
    r.ResultInsertDateTime DESC;

Resultados con marcas de tiempo sospechosamente antiguas (anteriores a la implementación de ToolsNet; ajustar el año)

SELECCIONE
    r.ID,
    r.ResultDateTime,
    r.ResultInsertDateTime,
    CASE
        WHEN u.MasterUnitID IS NOT NULL
            AND mu.Name IS NOT NULL
        THEN CONCAT(mu.Name, ' - ', u.Name)
        ELSE u.Name
    END AS ControllerName,
    u.IPAddress,
    p.Name AS ProgramName,
    r.UnifiedResultStatusTypeID AS ResultStatus
FROM AtlasCopco_ToolsNet_Database.ACDC.Result AS r
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit AS u
    ON r.UnitID = u.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit AS mu
    ON u.MasterUnitID = mu.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Program AS p
    ON r.ProgramID = p.ID
WHERE
    r.ResultDateTime < (
        SELECT TOP (1)
            TimeStamp
        FROM AtlasCopco_ToolsNet_Database.ToolsNet.SystemInfoLog
    )
    AND r.ResultDateTime < (
        SELECT TOP (1)
            ResultInsertDateTime
        FROM AtlasCopco_ToolsNet_Database.ACDC.Result
        ORDER BY
            ID
    )
ORDER BY
    r.ResultInsertDateTime ASC;

ID de unidad, nombre y total de resultados en los que el año no coincide

SELECCIONE
    r.UnitID,
    CASE
        WHEN u.MasterUnitID IS NOT NULL AND mu.Name IS NOT NULL
            THEN CONCAT(mu.Name, ' - ', u.Name)
        ELSE u.Name
    END AS ControllerName,
    u.IPAddress,
    COUNT(*) AS MismatchedYearCount
FROM AtlasCopco_ToolsNet_Database.ACDC.Result r
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit u
    ON r.UnitID = u.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit mu
    ON u.MasterUnitID = mu.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Program p
    ON r.ProgramID = p.ID
WHERE DATEPART(YEAR, r.ResultDateTime) <> DATEPART(YEAR, r.ResultInsertDateTime)
GROUP BY
    r.UnitID,
    CASE
        WHEN u.MasterUnitID IS NOT NULL AND mu.Name IS NOT NULL
            THEN CONCAT(mu.Name, ' - ', u.Name)
        ELSE u.Name
    END,
    u.IPAddress
ORDER BY MismatchedYearCount DESC;

Si la consulta devuelve resultados, anote el nombre del controlador y la dirección IP, y compruebe la hora del controlador antes de ejecutar la tarea de archivado.

Impacto en el archivado

El proceso de archivado selecciona resultados utilizando la columna Marca de tiempo. Si un controlador envía resultados con una marca de tiempo incorrecta, el comportamiento del archivado cambia tal y como se describe a continuación.

Escenario

Impacto en el archivado

Marca de tiempo en el pasado (por ejemplo, año 2000)

Es posible que los resultados se archiven de inmediato en la primera ejecución en el archivo incorrecto, incluso si son resultados operacionales recientes. Seguirán la política de retención de archivos de ese archivo.

Marca de tiempo en el futuro (por ejemplo, año 2099)

No se archivarán los resultados hasta que se alcance esa fecha futura. Esto hace que crezca la base de datos de la producción.

Marcas de tiempo correctas incorrectas mezcladas en el mismo controlador

El «último resultado» de una tarea de montaje puede ser erróneo. Esto afecta al SPC, la estadística y los informes.

Marca de tiempo en el año incorrecto

Es posible que los resultados se archiven en la base de datos de archivos incorrecta.

Acciones recomendadas antes del archivado

  • Compruebe la batería del RTC del controlador y sustitúyela si está agotada.

  • Asegúrese de que el controlador está configurado en el tiempo de sincronización con un servidor NTP fiable y de que la sincronización esté activa.

  • Corrija cualquier error de configuración manual de la hora en el controlador.

  • No ejecute la tarea de archivo para los controladores que hayan enviado resultados con marcas de tiempo incorrectas.

  • Para actualizar manualmente las marcas de tiempo en ToolsNet, abra un ticket de asistencia de QCM.

  • Si un gran volumen de resultados tiene marcas de tiempo incorrectas y el archivo no puede realizarse de forma segura, informe al equipo de asistencia de ACDC/ToolsNet.

ToolsNet 8 no detectará ni corregirá marcas de tiempo incorrectas del controlador de forma automática. Esto es así a propósito. La integridad de la marca de tiempo del resultado es responsabilidad del controlador.

Acciones recomendadas después del archivado

Ejecute una consulta para el rango de fechas especificado (01-01-2024 al 01-01-2025) para encontrar los resultados de producción que no se archivaron. La consulta deberá:

  • Comparar cada ID de resultado de producción (Result.ID) con la referencia del archivo (Archive.dbo.Result.ResultID).

  • Mostrar únicamente los registros que no tengan una entrada correspondiente en el archivo.

  • Incluir los datos de la unidad y del controlador (mostrar MasterUnitName y UnitName cuando proceda), la dirección IP de la unidad y el registro completo de resultados para facilitar la investigación de los registros que faltan en el archivo.

SELECCIONE
    u.ID AS UnitID,
    CASE
        WHEN u.MasterUnitID IS NOT NULL AND mu.Name IS NOT NULL
            THEN CONCAT(mu.Name, ' - ', u.Name)
        ELSE u.Name
    END AS ControllerName,
    u.IPAddress AS IPaddress,
    r.*
FROM AtlasCopco_ToolsNet_Database.ACDC.Result r
INNER JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit u
    ON r.UnitID = u.ID
LEFT JOIN AtlasCopco_ToolsNet_Database.ACDC.Unit mu
    ON u.MasterUnitID = mu.ID
LEFT JOIN Archive.dbo.Result arch
    ON r.ID = arch.ResultID
WHERE
    r.ResultDateTime >= '2024-01-01'
    AND r.ResultDateTime < '2025-01-01'
    AND arch.ResultID IS NULL
ORDER BY
    ControllerName,
    r.ResultDateTime DESC;

En Archive.dbo.Result , asegúrese de que se ha sustituido Archivo por el nombre de la base de datos de archivos del entorno. Por ejemplo, si la base de datos de su archivo se llama ToolsNetArchive, actualícelo a ToolsNetArchive.dbo.Result.