WritePersistentData

WritePersistentData 1:

Wurden in einem Laufzeitsystem der SPS persistente Variablen definiert, dann werden deren aktuelle Werte beim TwinCAT-System-Stopp ( nach dem letztem Zyklus der SPS ) in eine Datei im ...TwinCAT\Boot-Ordner gespeichert. Für jedes konfigurierte Laufzeitsystem wird eine Datei angelegt. Beim nächsten Systemstart wird diese Datei eingelesen und die persistenten Variablen im Laufzeitsystem mit den Werten aus der Datei initialisiert. Mit dem Funktionsbaustein "WritePersistentData" kann das Speichern der persistenten Daten aus dem SPS-Programm ausgelöst werden. Der PORT-Parameter bestimmt das Laufzeitsystem dessen persistente Daten gespeichert werden sollen. Siehe auch: Schreiben der pers. Daten: Systemverhalten. Intern wird eine Instanz des ADSWRTCTRL-Funktionsbausteins aufgerufen.

VAR_INPUT

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

NETID: Hier kann die AmsNetId des TwinCAT-Rechners angegeben werden, auf dem das ADS-Kommando ausgeführt werden soll. Für den lokalen Rechner,  kann auch ein Leerstring angegeben werden.

PORT: Beinhaltet die ADS-Portnummer des SPS-Laufzeitsystems dessen persistente Daten gespeichert werden sollen. Das Erste SPS-Laufzeitsystem hat z.B. die Portnummer 801 und das Zweite die Portnummer 811.

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

TMOUT: Gibt die Timeout-Zeit an, 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.

 

SPS-Beispielprogramm in ST:

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:=801, START:=bStart, TMOUT:=T#1s );
ELSE
    fbWritePersistentData( START:=FALSE);
END_IF;

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

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v2.7.0

PC or CX (x86)

TcPlcUtilities.Lib; Standard.Lib; PLCSystem.Lib; TcPLCAds.Lib; PLCHelper.Lib;

TwinCAT v2.8.0

PC or CX (x86)

TcUtilities.Lib

TwinCAT v2.10.0 Build >= 1301

CX (ARM)