FB_BA_PersistentDataHandler

Der Funktionsbaustein FB_BA_PersistentDataHandler speichert bei Aktivierung zunächst die persistenten Daten in die Datei Port_xxx.bootdata. Dabei muss nicht explizit angegeben werden, auf welchem Port bzw. Laufzeitsystem sich die PLC befindet – dieses wird intern ermittelt. Sind die Daten geschrieben worden, so wird der Inhalt der Datei Port_xxx.bootdata in die Sicherungsdatei Port_xxx.bootdata-old kopiert. Damit sind beide Dateien immer gleich gehalten und im Fall, dass die Original-Datei mit den persistenten Daten nicht lesbar sein sollte, enthält die Sicherungskopie, welche dann gelesen wird, dieselben Daten.
![]() | Dazu muss in jedem Fall das Häkchen bei „Clear Invalid Persistent Data“ entfernt sein (siehe Beschreibung persistentes Datenhandling unter TwinCAT3). |
Der Baustein lässt sich über zwei Arten starten:
Über eine positive Flanke an dem Eingang bStt, sofern der Baustein sich nicht in der eingestellten Aufstartphase befindet.
Initial nach Ablauf der Aufstartphase nach einem Reset bzw. TwinCAT-Restart. Die Dauer wird an nInitSttDly in Sekunden eingestellt. Ist dort eine “0” eingetragen, so ist die Dauer der Aufstartphase 0 und ein initiales Ausführen des Bausteines wird übergangen.
Während der Aufstartphase werden keine Befehle an bStt entgegengenommen.
Treten Fehler beim Lesen, Schreiben, Öffnen oder Schließen der Dateien auf, so wird dies mit einer entsprechenden Fehlermeldung an bErr/sErrDescr angezeigt. Nach einer intern fest eingestellten Wartezeit von 2 Sekunden versucht der Baustein selbsttätig den Befehl (Lesen, Schreiben, Öffnen oder Schließen) erneut auszuführen.
![]() | Es empfiehlt sich daher die Fehlerausgänge im Auge zu behalten bzw. diese auszuwerten. |
Des Weiteren ist darauf zu achten, ob beim TwinCAT-Neustart bzw. nach einem Reset die Backup-Datei der persistenten Daten geladen wurde. Das deutet darauf hin, dass die Originaldatei nicht lesbar und die Speicherkarte des Controllers defekt ist. Dieses kann für jedes Laufzeitsystem mit der boolschen Zuweisung von TwinCAT_SystemInfoVarList._AppInfo.OldBootData (siehe PlcAppSystemInfo) abgefragt werden.
Beispiel in ST:

Beispiel in CFC:

Hinweis | |
Datei-Handle-Konflikte Es ist darauf zu achten, dass nur dieser Baustein und auch nur eine Instanz davon auf die persistenten Daten zugreifen. Öffnen mehrere Bausteine eine Datei und schließen sie nicht wieder, kann es zu unvorhergesehenen Datei-Handle-Konflikten kommen, welche nicht abgefangen werden können. Die persistenten Daten werden dann nicht mehr in der Datei xxx.bootdata aktualisiert. |
Beschreibung persistentes Datenhandling unter TwinCAT 3
TwinCAT speichert bei jedem geordneten Herunterfahren, das heißt beim Wechsel vom Run- in den Config- oder Stopp-Modus, für jedes Laufzeitsystem (Runtime) die persistenten Daten in eine Datei.
Der Name der Datei besteht aus der ADS-Portbezeichnung des Laufzeitsystems mit der Dateiendung .bootdata, z. B.: Port_851.bootdata und wird im TwinCAT-Verzeichnis unter TwinCAT\3.1\Boot\PLC abgespeichert.
Bei einem erneuten Start des Systems, d.h. bei einem Wechsel in den Run-Modus wird diese Datei gelesen und danach als Port_xxx.bootdata-old gespeichert.
Existiert die Datei Port_xxx.bootdata-old bereits, so wird diese überschrieben.
Die ursprüngliche Datei Port_xxx.bootdata besteht nicht mehr. Sie wird erst wieder bei einem Wechsel in den Stopp-Modus automatisch oder durch den Baustein FB_WritePersistentData aus der TC2_Utilities-Bibliothek neu angelegt.
Dieses Verhalten gilt jeweils für jedes Laufzeitsystem – jedes hat seine „eigenen“ Dateien mit persistenten Daten.
Ist bei einem Neustart des TwinCAT-Systems die Datei defekt, greift das System automatisch auf die Sicherungsdatei Port_xxx.bootdata-old zurück. Dieses Verhalten gilt aber nur, wenn unter den Laufzeit-Einstellungen das Häkchen Clear Invalid Persistent Data abgewählt ist. Ist es angewählt und die Originaldatei ist defekt, so werden keine Daten gelesen.

Der andere Fall, unter denen auf Sicherungsdatei Port_xxx.bootdata-old zurückgegriffen wird ist, wenn der Controller spannungslos gemacht wird. Auch in diesem Fall werden die gerade gültigen persistenten Daten nicht in Port_xxx.bootdata abgespeichert. Dem System stehen dann bei einem erneuten Start nur die alten Daten zur Verfügung, es sei denn, vor dem Abschalten ist durch den Baustein FB_BA_PersistentDataHandler eine aktuellere Datei erzeugt worden.

Syntax
FUNCTION_BLOCK FB_BA_PersistentDataHandler IMPLEMENTS I_BA_PersistentDataHandler
VAR_INPUT
bStt : BOOL;
{attribute 'parameterUnit':= 's'}
nInitSttDly : UDINT := 10;
VAR_OUTPUT
bBusy : BOOL;
nRemTnInitSttDly : UDINT;
bErr : BOOL;
sErrDescr : T_MaxString;
END_VAR
Eingänge
Name | Typ | Beschreibung |
---|---|---|
bStt | BOOL | Eine steigende Flanke an diesem Eingang startet den Baustein, sofern er sich nicht in der Aufstartphase befindet. |
nInitSttDly | UDINT | Aufstartphase nach einem Reset bzw. TwinCAT-Restart. Die Dauer wird in Sekunden eingestellt. Nach Ablauf der Aufstartphase wird der Baustein einmal automatisch gestartet. Während der Aufstartphase werden keine Befehle für bStt entgegengenommen. Ist eine „0“ an nInitSttDly eingestellt, so wird die Aufstartphase übersprungen. Dieser Eingang ist mit 10s vorparametriert. |
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Der Baustein befindet sich in seiner Ausführung. |
nRemTiInitSttDly | UDINT | Countdown der eingestellten Aufstartphase. |
bErr | BOOL | Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind. |
sErrDescr | T_MAXSTRING | Enthält die Fehlerbeschreibung. |
Fehlerbeschreibung |
---|
01: Fehler: Die Nummer des von der SPS ausgegebenen ADS-Ports ist „0“. |
02: Warnung: Fehler beim Schreiben der Schreiben der Persistenten Daten über den internen Baustein FB_WritePersistentData. Zusätzlich dessen Fehlernummer. |
03: Warnung: Fehler beim Öffnen der Backup-Datei (xxx.bootdata-old) über den internen Baustein FB_FileOpen. Zusätzlich dessen Fehlernummer. |
04: Warnung: Fehler beim Lesen der Original-Datei (xxx.bootdata) über den internen Baustein FB_FileRead. Zusätzlich dessen Fehlernummer. |
05: Warnung: Fehler beim Schreiben in die Backup-Datei (xxx.bootdata-old) über den internen Baustein FB_FileWrite. Zusätzlich dessen Fehlernummer. |
06: Warnung: Fehler beim Schließen der Original-Datei (xxx.bootdata) über den internen Baustein FB_FileClose. Zusätzlich dessen Fehlernummer. |
07: Warnung: Fehler beim Schließen der Backup-Datei (xxx.bootdata-old) über den internen Baustein FB_FileClose. Zusätzlich dessen Fehlernummer. |
Methoden
Name | Beschreibung |
---|---|
Utilize | Verwaltet intern die Information, dass es einen Provider gibt, der persistente Daten bereitstellt. Der Aufruf wird akzeptiert, wenn aktive Schreibvorgänge ausgeführt werden. |
Write | Möglichkeit den Baustein über das Interface zu starten. |
WritePersitentData | Methode zum Schreiben persistenter Daten. |
Schnittstellen
Typ | Beschreibung |
---|---|
I_BA_PersistentDataHandler | Schnittstelle zur Darstellung des FB_BA_PersistentDataHandler. |
I_BA_PersistentDataProvider | Schnittstelle zum Ablegen von persistenten Daten im Boot-Ordner. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT3.1 4024.56 | Tc3_BA2_Common ab V2.2.23.0 |