WritePersistentData
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) |