FB_BA_WrtPersistDat

Der Baustein FB_BA_WrtPersistDat speichert bei Aktivierung zunächst die persistenten Daten in die Port_xxx.bootdata-Datei. 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 TwinCAT 3) |
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 udiInitSttDly_sec 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 nämlich 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-Konflikt Es ist darauf zu achten, dass nur dieser Baustein und auch nur eine Instanz von ihm 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 xxx.bootdata-Datei aktualisiert. |
Beschreibung persistentes Datenhandling unter TwinCAT 3
TwinCAT speichert bei jedem geordneten Herunterfahren, das heißt beim Wechsel vom Run- in den Config- oder Stop-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 nun nicht mehr. Sie wird erst wieder bei einem Wechsel in den Stop-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 nun bei einem Neustart des TwinCAT-Systems die Datei defekt, so greift dann 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_WritePersistentData eine aktuellere Datei erzeugt worden.

VAR_INPUT
bStt : BOOL;
udiInitSttDly_sec : UDINT;
bStt: Eine steigende Flanke an diesem Eingang startet den Baustein, sofern er sich nicht in der Aufstartphase befindet.
udiInitSttDly_sec: 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 udiInitSttDly_sec eingestellt, so wird die Aufstartphase übersprungen. Dieser Eingang ist mit 10s vorparametriert.
VAR_OUTPUT
bBusy : BOOL;
udiRemTiInitSttDly_sec : UDINT;
bErr : BOOL;
sErrDescr : T_MaxString;
bBusy: Der Baustein befindet sich in seiner Ausführung.
udiRemTiInitSttDly_sec: Countdown der eingestellten Aufstartphase.
bErr: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.
sErrDescr: 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. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.7 | Tc3_BA ab v1.1.6.0 |