Persistente Daten

Werden via BACnet bzw. über den Online-Dialog  BACnet-Properties von Server-Objekten verändert, sind diese bei einem TwinCAT-Neustart zunächst verloren, da die entsprechenden Werte aus dem Settings-Dialog zur Initialisierung verwendet werden. Um Daten auch bei einem Geräteneustart persistent zu halten, kann im BACnet-Server im Reiter "Settings" die Funktion Persist Server Online Data verwendet werden. Ist diese Funktion aktiviert, werden beim Herunterfahren und ggf. zyklisch die Werte aller BACnet-Properties, die sich gegenüber der Initialkonfiguration verändert haben, in eine Datei gespeichert und beim Laden einer Konfiguration wieder eingespielt. Die Datei wird im Boot-Verzeichnis der TwinCAT-Installation angelegt ("C:\TwinCAT\Boot") und hat den Namen "BACnetOnline_1010010.wbp". Der Zahlen-Code identifiziert den Server über eine TwinCAT(TcCOM)-Objekt-ID.

Geräte mit USV können auch bei einem Versorgungsspannungsverlust heruntergefahren werden und damit das Speichern persistenter Daten sicherstellen. Bei Geräten ohne USV muss zyklisch bzw. bei einer Veränderung von Daten gespeichert werden. Im Reiter "Settings" des BACnet-Servers kann über die Option "Use USV" gesteuert werden, ob auch während des Betriebs Daten in einem festgelegten Intervall persistiert werden. Über das Dialogfeld "Backup Interval" kann in Minuten konfiguriert werden in welchen Abständen veränderte BACnet-Properties gesichert werden. Dabei wird nach einem abgelaufenen Intervall nur gesichert, wenn seit der letzten Sicherung eine BACnet-Property verändert wurde.

Die Option "Use USV" realisiert nicht das automatische Herunterfahren eines Geräts bei einem Stromausfall. Die Überwachung des USV-Status und entsprechende Aktionen können in der SPS mit Hilfe entsprechender Bibliotheken implementiert werden. Die Option "Use USV" schaltet lediglich das periodische Speichern persistenter Daten ab. Das Schreiben persistenter Daten muss dann manuell bzw. durch die SPS via ADS oder die Property PersistentData erfolgen. In der SPS-Bibliothek TcBACnetRev12.lib stehen Funktionen zum Auslösen des Speicherns bereit.

Hinweis

Anzahl maximaler Schreibzyklen beachten

Werden Daten zyklisch auf ein Flash-Speichermedium gesichert, kann dies bei kleinen Backup Intervallen zur Zerstörung des Speichermediums führen. Deshalb ist darauf zu achten, dass über die angestrebte Betriebsdauer die Anzahl der vom Flash-Hersteller spezifizierten Schreibzyklen nicht überschritten wird.

Persistente Daten 1:

Zu beachten ist, dass bei dieser Funktionalität alle Einstellungen, die nach dem Aktivieren der aktuellen TwinCAT-Konfiguration in den Reitern "Settings" der Objekte vorgenommen werden hinfällig sind! Da alle Einstellungen aus der BACnetOnline-Datei übernommen werden. Muss eine Konfiguration nachträglich geändert werden, muss die Funktion deaktiviert und die BACnetOnline-Datei gelöscht werden. Achtung: Nach dem Deaktivieren der Funktion ist die Konfiguration noch mit aktivierter Persistenzfunktion geladen; es wird also beim Herunterfahren noch einmal die BACnetOnline-Datei erzeugt. Erst bei aktivierter Konfiguration ohne die Persistenzfunktion wird die Datei nicht mehr geschrieben. Mit dem neuen Dialog zur Verwaltung persistenter Daten können Veränderungen dennoch leicht übernommen werden. Eine Beschreibung folgt am Ende dieses Kapitels.

Auch dynamisch erzeugte BACnet-Objekte werden in die persistenten Daten aufgenommen und bei einem Neustart wieder angelegt.

Beim Anlegen einer neuen TwinCAT BACnet/IP Konfiguration (genauer eines BACnet-Servers) wird innerhalb des Projekts eine eindeutige Config-ID generiert über die die BACnetOnline-Dateien einer Konfiguration (CurrentConfig.xml) zugeordnet werden. Beim Laden der Online-Daten wird diese überprüft. Stimmt die Config-ID nicht mit dem geladenen Projekt überein, werden die Online-Daten nicht übernommen. In diesem Fall sind die Daten der Reiter "Settings" ausschlaggebend.

Laden und Speichern persistenter Daten

Im Folgenden wird der Ablauf von Laden und Speichern der Online-Daten beschrieben, der auch bei einem Stromausfall sicherstellt, dass immer eine gültige Version der persistenten Daten vorliegt. Das Laden und Speichern persistenter Daten wird nur im RUN Modus durchgeführt und wenn persistente Daten aktiviert wurden.

Ablauf: Laden der BACnetOnline-Datei

  1. Wenn Vorhanden: Laden der Datei "BACnetOnline_XXXXXXXX.wbp"
  2. Nach erfolgreichem Laden: Umbenennen der Datei "BACnetOnline_XXXXXXXX.wbp" in "BACnetOnline_XXXXXXXX.wb~"
  3. Ist "BACnetOnline_XXXXXXXX.wbp" nicht vorhanden: Laden der Datei "BACnetOnline_XXXXXXXX.wb~"

Ablauf: Schreiben der BACnetOnline-Datei:

  1. Umbenennen einer vorhandenen Datei "BACnetOnline_XXXXXXXX.wbp" in "BACnetOnline_XXXXXXXX.wb~"
  2. Schreiben der geänderten Property- und Objektdaten in die Datei "BACnetOnline_XXXXXXXX.wbp.tmp"
  3. Nach Abschluss des Schreibvorgangs: Umbenennen der Datei "BACnetOnline_XXXXXXXX.wbp.tmp" in "BACnetOnline_XXXXXXXX.wbp"

Es ist darauf zu achten, dass durch das beschriebene Verfahren doppelter Speicherplatz auf dem Flashspeichermedium benötigt wird!

Relevante Änderungen

Wie schon zuvor erwähnt, werden Onlinedaten nur gesichert, wenn entsprechende Änderungen vorliegen. Änderungen können ausgelöst werden durch:

Generell führen Änderungen der folgenden BACnet-Properties nicht zu persistenzrelevanten Änderungen:

Manuelles Speichern persistenter Daten

Das Abspeichern persistenter Daten kann manuell/programmatisch ausgelöst werden. Es existiert eine azyklische (ADS) Schnittstelle, über die das Schreiben der BACnet-Online-Daten angestoßen werden kann:

IndexGroup

IndexOffset

Beschreibung

0x80C00000

immer 0

Abspeichern der persistenten Daten auslösen. Nur gültig für BACnet-Server, wenn Persist Online Data aktiv ist.

Mit Hilfe des System Managers kann über den BACnet-Server Reiter "Settings" über die Schaltfläche "Save" das Speichern via ADS ausgelöst werden.

Auch via BACnet-Netzwerk kann über die herstellerspezifische BACnet-Property PersistentData (des Device-Objekts) das Abspeichern der persistenten Daten ausgelöst werden. Die folgende Abbildung zeigt ein Zustandsdiagramm der BACnet-Property PersistentData.

Persistente Daten 2:

Die BACnet-Property PersistentData ist nur sichtbar, wenn die persistenten Daten aktiviert und die Konfiguration im RUN Modus ausgeführt wird. Nach der Initialisierung zeigt die Property vom BACnet-Datentyp Enumerated, ob sich seit dem letzten Speichern persistenter Daten bzw. nach dem Projektstart eine relevante BACnet-Property geändert hat bzw. dynamische Objekte angelegt wurden. Bei unveränderten Daten hat die Property PersistentData den Wert NOCHANGE (2). Werden Daten via BACnet (WriteProperty, WritePropertyMultiple, CreateObject, DeleteObjekt, WriteBDT), via ADS-Write oder durch eine interne Objektzustandsmachine verändert, wird dies durch die Property PersitentData mit dem Wert Ready (3) angezeigt.

Hat die Property PersistentData den Wert Ready (3) kann durch Schreiben des Wertes Write (4) via BACnet das Schreiben ausgelöst werden. Während des Schreibens hat PersitentData den Wert Writing (5). Nach erfolgreichen Schreiben der persistenten Daten geht PersistentData in den Zustand NoChange (2) bzw. Ready (3), je nachdem ob sich während des Schreibens relevante Daten verändert haben.

Werden persistente Daten durch manuelles Auslösen des Schreibvorgangs gesichert, empfiehlt es sich das Backup Intervall auf ein entsprechend hohen Wertes zu setzten bzw. die periodische Sicherung mit der Funktion "Use USV" zu deaktivieren.

Änderungsmanagement persistenter Daten

Als Hilfestellung bei der Verwaltung persistenter Daten wurde in TwinCAT BACnet/IP ein neuer Dialog integriert. Über die Schaltfläche "..." neben dem Save-Button auf dem BACnet-Server - "Settings" - Reiter kann dieser Dialog aktiviert werden. Über diesen Dialog kann das Speichern der persistenten Daten temporär zur Laufzeit deaktiviert bzw. aktiviert (auch wenn es zuvor nicht in der Konfiguration aktiv war) werden. Das temporäre Deaktivieren wirkt dabei nicht über einen Neustart einer Konfiguration hinaus; sondern nur bis zum nächsten Neustart bzw. temporären Aktivieren dieser Funktion. Mit der Transfer-Funktion können (online) geänderte Daten in den Settings-Dialog (und damit in die .tsm Datei) übernommen werden. Achtung: Im Gegensatz zur Transfer-Funktion des Property-Wizard, werden hier nur online-geänderte Daten übernommen. Property-Daten die im Settings-Dialog verändert wurden; online aber nicht; bleiben hier erhalten. Über "Delete" können die ".wbp"-Dateien gelöscht werden. Save löst das Speichern der peristenten Daten aus.

Persistente Daten 3:

Sollen in einem Projekt mit aktivierten persistenten Daten, Änderungen eingespielt werden bzw. nach einer Inbetriebnahme online-geänderte Daten in der .tsm-Datei gesichert werden, empfiehlt sich folgende Vorgehensweise:

  1. Auslösen der Transfer-Funktion (geändert Daten werden von Online nach Settings übernommen)
  2. Deaktivieren des Schreibens persistenter Daten (Disable-Button)
  3. Löschen der persistenten Daten, da sich die Änderungen nun im .tsm befinden (Delete-Button)
  4. Abspeichern der Konfiguration (.tsm) (optional)
  5. Aktivieren der Konfiguration (SystemManager - Actions - Activate Configuration ...)
  6. Neustart der Steuerung

Diagnose persistenter Daten

Im Online-Reiter der BACnet-Objekte wird für jede BACnet-Property angezeigt, ob diese gegenüber dem Settings-Dialog verändert wurde. Ein * bedeutet, dass eine BACnet-Property geändert wurde. Ein zusätzliches Häkchen bedeutet, dass die Änderung in der .wbp-Datei gesichert wurde.

Persistente Daten 4:

Mit Hilfe der Diagnosefunktionalität des BACnet-Device können einige Informationen zur Verarbeitung persistenter Daten betrachtet werden.

Persistente Daten 5:

Unter ServerInfo befinden sich Persistenz spezifischen Informationen:

Eine genauere Analyse, welche Property-Daten verändert wurden und in der .wbp-Datei gespeichert sind, erlaubt der WbpViewDialog. Dieser kann als Wizard über das File-Objekt der .wbp-Datei aktiviert werden. Der Wizard zeigt in einer Text-Übersicht den Inhalt der binären wbp-Daten.