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.