Fehlangaben der steuerungsinternen Uhr und Auswirkungen auf die Archivierung
Alle Ergebnisse, die in ToolsNet gespeichert werden, tragen einen von der Verschraubungssteuerung generierten Zeitstempel. Wenn die interne Uhr der Steuerung aufgrund eines unzureichenden Batteriestands der Echtzeituhr (RTC), einer fehlgeschlagenen Synchronisierung des Netzwerkzeitprotokolls (NTP), einer manuellen Fehlkonfiguration oder eines Zeitversatzes nicht korrekt läuft, besteht die Gefahr, dass Ergebnisse mit einem falschen Zeitstempel gespeichert werden. Falsche Zeitstempel wiederum können dazu führen, dass ein Ergebnis nicht im richtigen Archiv aufgeführt oder in der falschen Archivdatenbank abgelegt wird.
Typische Anzeichen:
Ergebnisse tragen Daten, die weit in der Vergangenheit liegen (beispielsweise 1970 oder 2000).
Ergebnisse tragen Daten, die in der Zukunft liegen.
Die Gesamtanzahl der archivierten Ereignisse stimmt nicht mit der Anzahl der Ereignisse in der Produktionsdatenbank überein.
Fehlersuche
Vergewissern Sie sich, dass alle Ergebnisse korrekte Zeitstempel tragen, bevor Sie eine Archivierung durchführen lassen. Senden Sie folgende Abfrage an die ToolsNet-Datenbank, um verdächtige Ergebnisse ausfindig zu machen:
Ergebnisse mit einem Zeitstempel, der um mehr als 1 Tag in der Zukunft liegt
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;
Ergebnisse mit verdächtig alten Zeitstempeln (vor der Einführung von ToolsNet; die Angabe des Jahres bitte entsprechend anpassen)
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, Name und Gesamtmenge an Ergebnissen, bei denen es hinsichtlich des Jahres keine Übereinstimmung gibt
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;
Wenn die Abfrage Ergebnisse erbringt, erfassen Sie den Namen der Steuerung und die IP-Adresse und überprüfen Sie die steuerungsinterne Uhr, bevor Sie die Archivierung durchführen.
Folgen für die Archivierung
Beim Archivierungsprozess werden die Ergebnisse anhand der Spalte Zeitstempel ausgewählt. Wenn eine Steuerung Ergebnisse mit fehlerhaftem Zeitstempel sendet, wirkt sich dies wie nachfolgend beschrieben auf die Archivierung aus.
Szenario | Auswirkung auf die Archivierung |
|---|---|
Zeitstempel liegt in der Vergangenheit (beispielsweise im Jahr 2000) | Die Ergebnisse könnten im ersten Durchlauf sofort im falschen Archiv abgelegt werden – selbst wenn es sich um neuere Betriebsergebnisse handelt. Damit fallen sie auch unter die Aufbewahrungsregelung für dieses Archiv. |
Zeitstempel liegt in der Zukunft (beispielsweise im Jahr 2099) | Die Ergebnisse werden erst archiviert, wenn dieses in der Zukunft liegende Datum erreicht ist. Dies führt zu einem Anwachsen der Produktionsdatenbank. |
Mischung aus richtigen und falschen Zeitstempeln in derselben Steuerung | Das „letzte Ergebnis“ einer Montageaufgabe kann falsch sein. Dies wirkt sich auf die SPC, die Statistiken und die Berichterstattung aus. |
Zeitstempel aus dem falschen Jahr | Die Ergebnisse könnten in der falschen Archivdatenbank abgelegt werden. |
Empfohlene Maßnahmen vor einer Archivierung
Überprüfen Sie die Batterie der steuerungsinternen Echtzeituhr und ersetzen Sie sie, wenn der Ladestand gering ist.
Vergewissern Sie sich, dass die Steuerung auf eine Zeitsynchronisierung mit einem verlässlichen NTP-Server eingestellt und die Synchronisierung aktiv ist.
Korrigieren Sie etwaige Fehlkonfigurationen der Steuerung.
Führen Sie bei Steuerungen, die Ergebnisse mit fehlerhaften Zeitstempeln übermittelt haben, keine Archivierung durch.
Erstellen Sie ein QCM-Supportticket, um die Zeitstempel in ToolsNet manuell zu aktualisieren.
Wenn sehr viele Ergebnisse falsche Zeitstempel tragen und die Archivierung nicht sicher durchgeführt werden kann, wenden Sie sich an das ACDC-/ToolsNet-Supportteam.
Bei ToolsNet 8 werden fehlerhafte Zeitstempel der Steuerung weder automatisch erkannt noch korrigiert. Dies ist designbedingt. Die Verantwortung für die Integrität der Ergebniszeitstempel liegt bei der Steuerung.
Empfohlene Maßnahmen nach einer Archivierung
Führen Sie eine Abfrage durch, die sich auf einen festgelegten Zeitraum (01.01.2024 bis 01.01.2025) bezieht, um nicht archivierte Produktionsergebnisse ausfindig zu machen. Die Abfrage sollte:
die IDs der einzelnen Produktionsergebnisse (Ergebnis-ID) mit der Archivreferenz (Archive.dbo.Result.ResultID) vergleichen
nur Ergebnisse ausgeben, für die kein passender Archiveintrag vorliegt
Angaben zur Einheit und zur Steuerung (gegebenenfalls Anzeige von MasterUnitName – UnitName), die IP-Adresse der Einheit und das vollständige Ergebnisprotokoll beinhalten, um die Suche nach fehlenden Archiveinträgen zu unterstützen.
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;
Vergewissern Sie sich, dass der Bestandteil Archive in Archive.dbo.Result durch den Archivdatenbanknamen Ihres Systems ersetzt wurde. Wenn Ihre Archivdatenbank beispielsweise die Bezeichnung ToolsNetArchive trägt, muss die Angabe ToolsNetArchive.dbo.Result lauten.