WritePersistentData

WritePersistentData 1:

Wenn in einem SPS-Laufzeitsystem persistente Variablen definiert sind, werden deren aktuelle Werte beim TwinCAT-System-Stopp/Shutdown (nach dem letztem Zyklus der SPS) regulär in einer .bootdata-Datei im TwinCAT\Boot-Ordner gespeichert. Vor dem Schreiben der Datei mit den aktuellen persistenten Daten wird ein Backup der alten persistenten Daten erstellt, indem die alte .bootdata-Datei vom System zu .bootdata-old umbenannt wird.

Für jedes konfigurierte Laufzeitsystem wird eine Datei angelegt.

Beim nächsten Systemstart wird die .bootdata-Datei eingelesen und die persistenten Variablen werden im Laufzeitsystem mit den Werten aus der Datei initialisiert.

Die Backup-Datei (.bootdata-old) der persistenten Daten wird beim Systemstart eingelesen, wenn die Datei (.bootdata) der persistenten Daten nicht vorhanden ist. Dieser Fall ist eine Ausnahme, kann aber z. B. dann eintreten, wenn ein IPC ohne USV einen Stromausfall erfährt und TwinCAT somit nicht ordnungsgemäß herunterfahren konnte.

Mit dem Funktionsbaustein WritePersistentData können Sie das Speichern der persistenten Daten aus dem SPS-Programm heraus auslösen und sicherstellen, dass eine aktuelle .bootdata-Datei der persistenten Daten verfügbar ist. Der Eingangsparameter PORT bestimmt das Laufzeitsystem, dessen persistente Daten gespeichert werden sollen.

VAR_INPUT

VAR_INPUT
    NETID  : T_AmsNetId;
    PORT   : T_AmsPort;
    START  : BOOL;
    TMOUT  : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

NETID: Netzwerkadresse des TwinCAT-Rechners, auf dem das ADS-Kommando ausgeführt werden soll (Typ: T_AmsNetID). Für den lokalen Rechner kann ein Leerstring angegeben werden.

PORT: ADS-Portnummer des SPS-Laufzeitsystems, dessen persistente Daten gespeichert werden sollen (Typ: T_AmsPort).

START: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

TMOUT: Timeout-Zeit, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.

VAR_OUTPUT

VAR_OUTPUT
    BUSY  : BOOL;
    ERR   : BOOL;
    ERRID : UDINT;
END_VAR

BUSY: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

ERR: Sollte ein ADS-Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der BUSY-Ausgang zurückgesetzt wurde.

ERRID: Liefert bei einem gesetzten ERR-Ausgang die ADS-Fehlernummer.

Beispiel:

PROGRAM MAIN
VAR
    bStart                : BOOL;
    bError                : BOOL;
    bBusy                 : BOOL;
    nErrorId              : UDINT;
    fbWritePersistentData : WritePersistentData;
    fbR_Trig              : R_TRIG;
END_VAR
VAR PERSISTENT
    perA  : INT;
    perB  : BOOL;
    perC  : BYTE;
    perD  : STRING;
    perE  : ARRAY[0..10] OF INT;
    perF  : ARRAY[0..10] OF UDINT;
END_VAR
fbR_Trig( CLK:=bStart );
IF fbR_Trig.Q THEN
    perA := 24443;
    perB := TRUE;
    perC := 7;
    perD := 'Switch ON/OFF';
    perE[ 0 ] := 1;
    perE[ 10 ] := 11;
    perF[ 0 ] := 263;
    perF[ 10 ] := 23323;
    fbWritePersistentData(NETID:='', PORT:=851, START:=bStart, TMOUT:=T#1s );
ELSE
    fbWritePersistentData( START:=FALSE);
END_IF;

bBusy := fbWritePersistentData.BUSY;
bError := fbWritePersistentData.ERR;
nErrorId := fbWritePersistentData.ERRID;

Siehe auch: Anhang > Systemverhalten beim Schreiben von persistenten Daten

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)