TIMESTAMP_NS
Einleitung
Der TIMESTAMP_NS ist ein IEC 61499-konformer Funktionsbaustein zur Erzeugung hochauflösender Zeitstempel in Nanosekunden.
Standardmäßig generiert er Unix-Epoch-Timestamps (ab 01.01.1970), unterstützt aber durch Anpassung des Startdatums (startDate) alternative Zeitreferenzen.
Entwickelt unter EPL-2.0 Lizenz.
Schnittstellenstruktur
Ereignis-Eingänge
REQ (Trigger): Startet die Berechnung des Zeitstempels. Muss mit dem Eingangsparameter
startDateverknüpft sein. Beispiel:REQ(startDate := DT#2000-01-01-00:00:00)
Ereignis-Ausgänge
CNF (Bestätigung): Signalisiert den Abschluss der Berechnung. Der generierte Zeitstempel steht dann als
ULINT-Wert zur Verfügung.
Daten-Eingänge
startDate (DT): Startdatum für die Zeitstempelberechnung. Default:
DT#1970-01-01-00:00:00(Unix-Epoch). Hinweis: Andere Werte ermöglichen benutzerdefinierte Referenzen (z. B. Systemstart).
Daten-Ausgänge
ULINT (Ausgangsvariable): Zeitstempel in Nanosekunden seit dem definierten
startDate. Beispiel:1680000000000000000(1,68e18 ns ≈ 2023-03-28).
Funktionsweise
Initialisierung:
Wird durch
REQ-Ereignis aktiviert.Nutzt den aktuellen Systemzeitpunkt (
NOW()).
Berechnung:
Subtrahiert
startDatevon der aktuellen Systemzeit.Konvertiert die Differenz via
TIME_IN_NS_TO_ULINT()in Nanosekunden.Gibt Ergebnis als
ULINTaus und löstCNFaus.
Fehlerbehandlung:
Keine explizite Fehlermeldung, aber Überlauf möglich bei:
Extrem großen Zeitdifferenzen (>584 Jahre).
Ungültigem
startDate(z. B. Zukunft).
Technische Besonderheiten
Nanosekunden-Präzision: 64-bit-Zähler (
ULINT) vermeidet Überlauf bis ~584 Jahre.Flexible Referenzen: Beliebige Startdaten (z. B.
DT#2000-01-01für Y2K-Referenz).Lizenz: Eclipse Public License 2.0 (EPL-2.0).
Rückgabecodes
Erfolg: Gültiger
ULINT-Wert (Nanosekunden).Fehler: Keine expliziten Codes, aber:
0bei ungültiger Berechnung (z. B.startDate > NOW()).Überlauf bei Differenzen >2⁶⁴ ns.
Anwendungsszenarien
High-Performance-Logging: Synchronisation von Ereignissen in verteilten Systemen.
Echtzeit-Messungen: Laufzeitanalyse mit Nanosekunden-Präzision.
Benutzerdefinierte Zeiträume: Berechnung von Intervallen ab beliebigen Referenzpunkten.
⚖️ Vergleich mit ähnlichen Bausteinen
Funktion |
|
|
|
|---|---|---|---|
Ausgabeformat |
Nanosekunden (ULINT) |
Zeitintervall (TIME) |
Zeitintervall (TIME) |
Referenzpunkt |
Konfigurierbar |
Systemstart |
Hardwareabhängig |
Präzision |
1 ns |
1 ms |
1 ns (typisch) |
Anwendungsfall |
Absolute Zeitstempel |
Relative Zeitmessung |
Monotone Messung |
Fazit
TIMESTAMP_NS ist ein essentieller Baustein für Anwendungen, die hochpräzise und flexible Zeitstempel benötigen. Seine Unterstützung benutzerdefinierter Startdaten und Nanosekunden-Präzision macht ihn ideal für:
Industrielle Datenaufzeichnung
Echtzeit-Steuerungen
Wissenschaftliche Messsysteme
Hinweis: Für monotone Zeitmessungen sollte F_NOW_MONOTONIC bevorzugt werden.