FB_BA_PersistentDataHandler

FB_BA_PersistentDataHandler 1:

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.

FB_BA_PersistentDataHandler 2:

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.

FB_BA_PersistentDataHandler 3:

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:

FB_BA_PersistentDataHandler 4:

Beispiel in CFC:

FB_BA_PersistentDataHandler 5:

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.

FB_BA_PersistentDataHandler 6:

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.

FB_BA_PersistentDataHandler 7:

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

FB_BA_PersistentDataHandler 8: 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.

FB_BA_PersistentDataHandler 9: 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.

FB_BA_PersistentDataHandler 10: Eigenschaften

Name

Typ

Zugriff

Beschreibung

Busy

BOOL

Get/Set

Signalisiert die Abarbeitung des Bausteins.

FB_BA_PersistentDataHandler 11: 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.

FB_BA_PersistentDataHandler 12: 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