コントローラーのクロックに関する問題とアーカイブ

ToolsNet に保存される結果には、締め付けコントローラーによって提供されるタイムスタンプが含まれます。リアルタイムクロック (RTC) のバッテリー切れ、ネットワークタイムプロトコル (NTP) の同期失敗、手動設定ミス、またはクロックドリフトなどにより、コントローラーの内部時計が正しくない場合、結果が誤ったタイムスタンプで保存される可能性があります。タイムスタンプが正しくない場合、結果が正しいアーカイブから欠落したり、間違ったアーカイブデータベースにアーカイブされたりする可能性があります。

一般的な兆候:

  • 検索結果に、かなり昔の日付 (例えば、1970年や2000年) が表示される。

  • 結果が遠い未来の日付で表示される。

  • アーカイブされた結果の総数が、生産データベース内の結果数と一致しない。

問題の検出

アーカイブ処理を実行する前に、結果に誤ったタイムスタンプが含まれていないことを確認してください。ToolsNet データベースに対して以下のクエリを実行して、疑わしい結果を特定してください。

1 日以上先のタイムスタンプになっている結果

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;

タイムスタンプが異様に古い結果 (ToolsNet 導入前、調整年)

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;

年が一致しない UnitID、名前、および合計結果

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;

クエリが結果を返した場合、ControllerName と IP アドレスを記録し、アーカイブジョブを実行する前にコントローラーのクロックが正しいか調べます。

アーカイブへの影響

アーカイブ処理では、タイムスタンプ列を使用して結果を選択します。コントローラーが誤ったタイムスタンプを含む結果を送信した場合、アーカイブ動作は以下のように変更されます。

シナリオ

アーカイブの影響

タイムスタンプが過去の場合 (例:2000年)

最近の操作結果であっても、初回実行時に結果が誤ったアーカイブに即座に保存されてしまう可能性があります。データは該当する年のアーカイブ保存ポリシーに従います。

タイムスタンプが未来の場合 (例:2099年)

結果データは、その未来の日付に達するまでアーカイブされません。これにより、生産環境のデータベースのデータ量が増大します。

同じコントローラーに正しいタイムスタンプと間違ったタイムスタンプが混在している

アセンブリタスクの「最新の結果」が正しくない可能性があります。これは、SPC (統計的工程管理)、統計、およびレポートに影響を与えます。

タイムスタンプの年が正しくない

結果が正しくないアーカイブデータベースに保存されている可能性があります。

アーカイブ前に推奨される手順

  • コントローラーのリアルタイムクロック (RTC) バッテリーを確認し、消耗している場合は交換してください。

  • コントローラーが信頼できるネットワークタイムプロトコル (NTP) サーバーと時刻を同期するように設定されており、同期が有効になっていることを確認してください。

  • コントローラー上の手動による時刻構成の誤りを修正してください。

  • タイムスタンプが誤っている結果を送信したコントローラーでは、アーカイブジョブを実行しないでください。

  • ToolsNet のタイムスタンプを手動で更新するには、QCM サポートチケットを起票してください。

  • 大量の結果に誤ったタイムスタンプが含まれており、アーカイブ処理を安全に実行できない場合は、ACDC/ToolsNet サポートチームまでご連絡ください。

ToolsNet 8 は、コントローラーのタイムスタンプが正しくない場合、これを自動的に検出・修正しません。これは意図的なものです。結果のタイムスタンプの整合は、コントローラーの責任です。

アーカイブ後に推奨される手順

指定された日付範囲 (2024年1月1日から2025年1月1日) でクエリを実行し、アーカイブされていない生産環境の結果を検索します。クエリは次のようになるはずです:

  • 各生産結果 ID (Result.ID) をアーカイブ参照 (Archive.dbo.Result.ResultID) と比較します。

  • 一致するアーカイブエントリがないレコードのみを返します。

  • ユニットとコントローラーの詳細 (該当する場合はMasterUnitName - UnitNameを表示)、ユニットの IP アドレス、および欠落したアーカイブレコードの調査を支援するための完全な結果レコードを含めてください。

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;

Archive.dbo.Result では、Archive がご使用の環境のアーカイブ データベース名に置き換えられていることを確認してください。例えば、アーカイブデータベースの名前が ToolsNetArchive の場合、ToolsNetArchive.dbo.Result に更新します。