Backup und Restore
BACnet ermöglicht die Erstellung von Sicherungen (Backup) der Konfiguration eines BACnet-Controllers. In TwinCAT BACnet/IP kann die Konfiguration aus einer Reihe von Dateien bestehen. Die wesentlichen Dateien sind zum einen die Datei CurrentConfig.xml, welche die generelle TwinCAT Konfiguration enthält. Zusätzlich wird in TwinCAT BACnet/IP eine weitere BACnetOnline-Datei verwendet, welche die relevanten Daten enthält, die während der Laufzeit verändert wurden und von der Ausgangskonfiguration der CurrentConfig.xml abweichen. Potenziell können weitere Dateien eine Konfiguration bestimmen z.B. ein SPS Boot-Projekt oder projektspezifische Dateien.
Der BACnet-Backup und -Restore Mechanismus ermöglich eine flexible Anzahl von Dateien mit Hilfe der File-Dienste zu sichern und wiederherzustellen. Nachdem über die entsprechenden BACnet-Dienste ein Backup ausgewählt wurde, kann ein BACnet-Client über die Device-Objekt Property ConfigurationFiles auslesen welche BACnet-File-Objekte zu einer Backup-Konfiguration gehören. Die jeweiligen BACnet-File-Objekte weisen auf die entsprechenden Dateiennamen. Zu beachten ist, dass in TwinCAT BACnet/IP alle Dateien relativ zum Boot-Projekt-Ordner (per Default "C:\TwinCAT\Boot") behandelt werden. Backup-relevante Dateien sollten deshalb in diesem Ordner gespeichert werden.
Beim Anlegen eines BACnet Server werden automatisch zwei File-Objekte angelegt, die auf die Datei CurrentConfig.xml sowie die BACnetOnline-Datei verweisen.

Zusätzlich bietet BACnet TwinCAT/IP die Möglichkeit weitere Dateien in eine Backup-Konfiguration aufzunehmen. Hierzu kann ein neues BACnet-File-Objekt hinzugefügt werden. In der Property ObjectName kann der Dateiname konfiguriert werden. Wird die Property FileType mit dem String "TwinCAT Configuration File" initialisiert, wird dieses File-Objekt bei einer Backup-Anforderungen in die Property ConfigurationFiles aufgenommen und kann somit von einem BACnet-Client gesichert und später wiederhergestellt werden. Im abgebildeten Screenshot ist dargestellt, wie das Boot-Projekt der SPS-Laufzeit 1 in die Backup-Konfiguration aufgenommen werden kann.
Des Weiteren besteht die Möglichkeit innerhalb der SPS Backup-relevante Daten zu speichern. Um sicherzustellen, dass die SPS Backup-Daten während einer Backup-Operation auf das Speichermedium geschrieben wurden, existiert ein Rückkopplungsmechanismus zwischen BACnet und einer SPS. Durch die zyklische Überwachung der Property SystemStatus des Server-Device-Objekts kann erkannt werden wann ein Backup eingeleitet wurde (BackupInProgress (5)). Über das Server Kontrollstatuswort (ServerControl) kann durch Setzen von Bit 0 ein Rückkopplungsverfahren aktiviert werden. Ist Bit 0 im Kontrollstatuswort gesetzt wartet der BACnet-Stack auf das Schreiben der SPS-Daten indem die Backup-Anforderung eines BACnet-Client erst weiterverarbeitet wird bis Bit 1 im Kontrollstatuswort gesetzt ist. Ein entsprechender Ablauf in der SPS ist dabei:
- Beim Start Bit 0 im Kontrollstatuswort setzten
- SystemStatus überwachen - ist der Wert BackupInProgress (5): Schreiben der relevanten Daten
- Nach Abschluss des Schreibvorgangs setzen von Bit 1 im Kontrollstatuswort
- Wenn SystemStatus wieder den Wert Operational (0) hat: Löschen von Bit 1
Eine weitere für das Backup relevante Datei ist "BACnet_LastRestoreTime.wbp", die im Boot-Ordner von TwinCAT gespeichert wird. In dieser Datei werden Daten abgelegt, die ein Restore überdauern müssen. Hierzu zählen die Property LastRestoreTime und DatabaseRevision.
Das Auslösen eines Backups bzw. Restore wird momentan von TwinCAT BACnet/IP nicht unterstützt. Mit einem entsprechenden GLT-Werkzeug können aber Backup und Restore der Beckhoff Controller erstellt werden. Es wird also hier nur die Server- und nicht die Client-Seite unterstützt.