Uhrzeitsynchronisation

In dieser Beschreibung steht der Begriff Uhrzeit für die Kombination aus Datum und Uhrzeit (Date und Time).

BACnet Uhrzeitsynchronisation

Die Uhrzeitsynchronisation erfolgt bei BACnet über zwei Dienste:

TimeSynchronization synchronisiert die Uhrzeit auf Basis der lokalen Uhrzeit, d. h. Zeitgeber und Zeitempfänger müssen sich in derselben Zeitzone befinden.

Bei der Verwendung von UTCTimeSynchronization (UTC=Universal Time Coordinated) wird die Uhrzeit als GMT (Greenwich Mean Time = Ortszeit London) übertragen. Der Zeitgeber rechnet vor dem Senden die Uhrzeit in GMT um. Anhand der lokalen Einstellungen UTC_Offset und DaylightSavingsStatus (im Device Objekt des Servers) wird dann vom Zeitempfänger wieder auf die lokale Zeit umgerechnet.

UTC_Offset gibt den Wert in Minuten relativ zu GMT an. Ein positiver Wert ist westwärts von GMT, ein negativer Wert ostwärts von GMT zu verwenden.
Westeuropa hat einen Offset von -60 Minuten zu GMT. Dies ist als Defaultwert im TwinCAT BACnet-Server festgelegt und muss ggf. bei Einsatz in anderen Zeitzonen mit Verwendung von UTC angepasst werden.

Uhrzeitsynchronisation 1:
  • Die Uhrzeitsynchronisation hat eine direkte Auswirkung auf die Aufzeichnung von BACnet Logging Objekten (Trendlog, Trendlog-Multiple und Eventlog). Wenn sich die Uhrzeit ändert, wird dies als Eintrag in den Logspeicher übernommen. Bei kurzen Uhrzeitsynchronisationsintervallen kann es daher zu vielen (unnötigen) Einträgen im Logspeicher der Logging Objekte kommen.
  • In einem BACnet-Netzwerk sollte nur ein einziger Uhrzeitgeber existieren. Dies ist seitens des Betreibers bzw. Fachplaners sicherzustellen.
    Auch wenn es nach dem BACnet-Standard grundsätzlich möglich ist, die Uhrzeitsynchronisation nur an eine Gruppe von Teilnehmern (Multicast) oder an nur einen einzelnen Teilnehmer (Unicast) zu senden, wird die Uhrzeit in der Praxis häufig als Broadcast an alle Teilnehmer des Netzwerks gesendet.

TwinCAT als BACnet Zeitempfänger

Empfängt ein TwinCAT Controller eine BACnet Uhrzeitsynchronisation, wird die interne Uhrzeit des Controllers mit dieser Uhrzeit gestellt.

TwinCAT als BACnet Zeitgeber

Wird ein TwinCAT Controller als BACnet Zeitgeber verwendet, muss dieser die exakte Uhrzeit von einer externen Stelle ermitteln, z. B. durch Verwendung des NTP-Dienstes auf einen externen NTP-Server (NTP = Network Time Protocol). Als öffentlich verfügbarer Zeitserver steht z. B. time.windows.com zur Verfügung.

Für die Übernahme der Zeit und ggf. Aussendung im Netzwerk steht die Methode TimeSyncEx im FB_BACnet_Adapter zur Verfügung.

Als Parameter werden folgende Werte an den Aufruf übergeben:

Name

Typ

Beschreibung

pDateTime

ST_BA_DateTime

Pointer auf eine Struktur vom Typ ST_BA_DateTime (siehe Bibliothek Tc3_BA2_Common). In dieser Struktur wird das zu setzende Datum und die Uhrzeit übergeben bzw. im Falle von eSyncMode = 3 zurück geliefert.

eSyncMode

E_BACnet_TimeSyncMode

Enumeration
Der Wert bestimmt die Art der Synchronisation:

eSyncAndSendLocalTime := 0
Setzt pDateTime in den BACnet Stack (als Local Time) und sendet die Zeit als Broadcast (TimeSync request)
Anwendungsfall: Der Controller erhält per NTP die Uhrzeit und sendet die lokale BACnet Zeit an andere Controller als Broadcast.

eSyncOnly := 1
Setzt pDateTime in den BACnet Stack (als Local Time)
Anwendungsfall: Alle Controller erhalten per NTP die Uhrzeit und synchronisieren ihre eigene BACnet Uhr.

eSyncAndSendUtcTime := 2
Setzt pDateTime in den BACnet Stack (als UTC Time) und sendet die Zeit als Broadcast (UTC Time Sync request)
Anwendungsfall: Der Controller erhält per NTP die Uhrzeit und sendet die BACnet Zeit als UTC an andere Controller als Broadcast.

eSyncGetTime := 3
Gibt in pDateTime die aktuelle Zeit im BACnet Stack zurück.
Anwendungsfall: Wird eher sehr selten verwendet. Ein möglicher Anwendungsfall wäre z. B. ein Vergleich der BACnet Uhr mit der Trendaufzeichnung.