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.

WritePersistentData 2: Eingänge

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

Name

Typ

Beschreibung

NETID

T_AmsNetID

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

PORT

T_AmsPort

ADS-Portnummer des SPS-Laufzeitsystems, dessen persistente Daten gespeichert werden sollen.

START

BOOL

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

TMOUT

TIME

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

WritePersistentData 3: Ausgänge

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

Name

Typ

Beschreibung

BUSY

BOOL

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

ERR

BOOL

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

ERRID

UDINT

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)