Problemas com o relógio do controlador e arquivamento

Os resultados armazenados no ToolsNet incluem um carimbo de data/hora fornecido pelo controlador de aperto. Se o relógio interno do controlador estiver incorreto devido a uma bateria do relógio de tempo real (RTC) que esteja descarregada, a uma falha na sincronização do protocolo de tempo de rede (NTP), a uma configuração manual incorreta ou à deriva do relógio, os resultados podem ser armazenados com um carimbo de data/hora incorreto. Um carimbo de data/hora incorreto pode fazer com que um resultado não esteja no arquivo correto ou seja arquivado no banco de dados de arquivo errado.

Sintomas comuns:

  • Os resultados aparecem com datas muito antigas (por exemplo, 1970 ou 2000).

  • Os resultados aparecem com datas muito além.

  • O número total de resultados arquivados não corresponde ao número de resultados no banco de dados da produção.

Detectando o problema

Antes de executar o trabalho de arquivamento, verifique se nenhum resultado tem carimbos de data/hora incorretos. Execute esta consulta no banco de dados do ToolsNet para identificar resultados suspeitos:

Resultados com carimbos com mais de um dia no futuro

SELECT
    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 com carimbos suspeitosamente antigos (antes da implementação do ToolsNet, ajuste o ano)

SELECT
    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 da unidade, nome e total de resultados onde o ano não corresponde

SELECT
    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;

Se a consulta retornar resultados, registre o nome do controlador e o endereço IP e verifique o relógio do controlador antes de executar a tarefa de arquivamento.

Impacto no arquivamento

O processo de arquivamento seleciona resultados usando a coluna de Carimbo de Data/Hora. Se um controlador enviar resultados com um carimbo de data/hora incorreto, o comportamento de arquivamento será alterado como a seguir.

Cenário

Impacto do arquivamento

Carimbo de data/hora no passado (por exemplo, ano 2000)

Os resultados podem ser arquivados imediatamente na primeira execução no arquivo errado, mesmo que sejam resultados operacionais recentes. Eles seguirão a política de retenção de arquivo para esse arquivo específico.

Carimbo de data/hora no futuro (por exemplo, ano 2099)

Os resultados não serão arquivados até que essa data futura seja alcançada. Isso faz com que o banco de dados da produção cresça.

Carimbos de data/hora corretos e incorretos misturados no mesmo controlador

O “resultado mais recente” para uma tarefa de montagem pode estar incorreto. Isso afeta o SPC, as estatísticas e os relatórios.

Carimbo de data/hora no ano errado

Os resultados podem ser arquivados no banco de dados de arquivamento incorreto.

Ações recomendadas antes do arquivamento:

  • Verifique a bateria RTC do controlador e substitua-a se estiver descarregada.

  • Certifique-se de que o controlador esteja configurado para sincronizar o horário com um servidor NTP confiável e que a sincronização esteja ativa.

  • Corrija qualquer configuração manual incorreta de horário no controlador.

  • Não execute a tarefa de arquivamento para controladores que enviaram resultados com registros de data e hora incorretos.

  • Para atualizações manuais de carimbos de data/hora no ToolsNet, abra um chamado de suporte do QCM.

  • Se um grande volume de resultados tiver carimbos de data/hora incorretos e o arquivamento não puder prosseguir com segurança, informe a equipe de suporte do ACDC/ToolsNet.

O ToolsNet 8 não detectará nem corrigirá automaticamente carimbos de data/hora incorretos do controlador. Isso já vem de fábrica. A integridade do carimbo de data/hora dos resultados é de responsabilidade do controlador.

Ações recomendadas após o arquivamento

Execute uma consulta para o intervalo de datas especificado (01/01/2024 a 01/01/2025) para encontrar resultados de produção que não foram arquivados. A consulta deve:

  • Comparar cada ID de resultado de produção (Result.ID) com a referência do arquivo (Archive.dbo.Result.ResultID).

  • Retornar apenas os registros sem entrada correspondente no arquivo.

  • Incluir detalhes da unidade e do controlador (mostrar MasterUnitName (Nome da Unidade Principal) - UnitName (Nome da Unidade) quando aplicável), o endereço IP da unidade e o registro completo do resultado para auxiliar na investigação de registros de arquivo ausentes.

SELECT
    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.*

Em Archive.dbo.Result, certifique-se de que o Archive seja substituído pelo nome da base de dados de arquivamento do seu ambiente. Por exemplo, se sua base de dados de arquivamento se chama ToolsNetArchive, atualize-a para ToolsNetArchive.dbo.Result.