Problémy s hodinami controlleru a archivace
Výsledky uložené v ToolsNet obsahují časové razítko poskytnuté controllerem utahování. Pokud jsou interní hodiny controlleru chybné kvůli vybité baterii hodin reálného času (RTC), selhání synchronizace protokolu Network Time Protocol (NTP), chybné ruční konfiguraci nebo posunu hodin, mohou být výsledky uloženy s chybným časovým razítkem. Chybné časové razítko může způsobit, že výsledek bude chybět ve správném archivu nebo bude archivován do chybné archivní databáze.
Běžné příznaky:
Výsledky se zobrazují s daty daleko v minulosti (například 1970 nebo 2000).
Výsledky se zobrazují s daty daleko v budoucnosti.
Celkový počet archivovaných výsledků neodpovídá počtu výsledků v databázi výroby.
Detekce problému
Před spuštěním archivace ověřte, zda žádné výsledky nemají nesprávná časová razítka. Spusťte tento dotaz v databázi ToolsNet, abyste identifikovali podezřelé výsledky:
Výsledky s časovými razítky více než 1 den v budoucnosti
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;
Výsledky s podezřele starými časovými razítky (před spuštěním ToolsNet, upravte rok)
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 jednotky, název a celkové výsledky, u kterých se neshoduje rok
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;
Pokud u dotazu doje k výsledkům, zaznamenejte si název controlleru a IP adresu a před spuštěním archivační úlohy prověřte hodiny controlleru.
Dopad na archivaci
Proces archivace vybírá výsledky pomocí sloupce Časové razítko. Pokud controller odešle výsledky s nesprávným časovým razítkem, chování archivace se změní, jak je popsáno níže.
Scénář | Dopad archivace |
|---|---|
Časové razítko v minulosti (například rok 2000) | Výsledky mohou být při prvním spuštění okamžitě archivovány do chybného archivu, i když se jedná o nedávné provozní výsledky. Budou se řídit zásadami uchovávání archivů pro příslušný archiv. |
Časové razítko v budoucnosti (například rok 2099) | Výsledky nebudou archivovány, dokud nebude dosaženo daného budoucího data. To způsobí růst databáze výroby. |
Kombinovaná správná a nesprávná časová razítka na stejném controlleru | „Nejnovější výsledek“ pro montážní úkol může být chybný. Toto ovlivňuje SPC, statistiky a hlášení. |
Časové razítko v nesprávném roce | Výsledky mohou být archivovány do nesprávné archivní databáze. |
Doporučené akce před archivací
Zkontrolujte baterii RTC controlleru a v případě vybití ji vyměňte.
Ujistěte se, že je controller nakonfigurován pro synchronizaci času se spolehlivým NTP serverem a že je synchronizace aktivní.
Opravte jakékoli ruční nesprávné nastavení času v controlleru.
Nespouštějte archivační úlohu u controllerů, které odeslaly výsledky s nesprávnými časovými razítky.
Pro ruční aktualizace časových razítek v ToolsNet otevřete tiket podpory QCM.
Pokud má nesprávná časová razítka velký počet výsledků a archivace nemůže bezpečně probíhat, informujte tým podpory ACDC/ToolsNet.
ToolsNet 8 nebude automaticky zjišťovat ani opravovat nesprávná časová razítka controlleru. To je nastaveno záměrně. Za správnost časového razítka výsledků odpovídá controller.
Doporučené akce po archivaci
Pro nalezení výsledků výroby, které nebyly archivovány, spusťte dotaz pro zadaný rozsah dat (2024-01-01 až 2025-01-01). Dotaz musí:
Porovnat každé ID výsledku výroby (Result.ID) s odkazem na archiv (Archive.dbo.Result.ResultID).
Vrátit pouze záznamy bez odpovídajícího záznamu v archivu.
Zahrnout podrobnosti o jednotce a controlleru (zobrazit název hlavní jednotky - název jednotky, je-li to relevantní), IP adresu jednotky a celý záznam výsledku pro podporu prošetření chybějících archivních záznamů.
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.*
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;
V Archive.dbo.Result se ujistěte, že je možnost Archiv nahrazena názvem archivní databáze vašeho prostředí. Pokud má například vaše archivní databáze název ToolsNetArchive, aktualizujte jej na ToolsNetArchive.dbo.Result.