Hallo,
weiß zufällig jemand wie man Meldungen und ggf. Variablenwerte in eine Datei loggen kann?
Vielen Dank vorab.
Grüße
Kai
FUNCTION_BLOCK Load_Save_Retain_Data { vNameAlignment := "top"; width := 400; bgColor := "lightblue"; }
VAR_INPUT
WRITE : BOOL :=false; // Zum Schreiben in die Persisten.csv / USV Anschluss oder anderen Schaltkontakt
READ : BOOL :=false;
END_VAR
VAR
init : BOOL;
term : BOOL;
saveRetainRC : UDINT;
saveRetainENO : BOOL;
nrNonLoaded : INT;
loadRetainRC : UDINT;
loadRetainENO : BOOL;
END_VAR
RTSCycleInfo ( Init => init, Term => term ); // RTSLoader abfragen ob start und ende
LoadRetainData ( EN := init, fileName := 'Persistent.csv', nrNonLoaded => nrNonLoaded, RC => loadRetainRC, ENO => loadRetainENO );
SaveRetainData ( EN := term, fileName := 'Persistent.csv', RC => saveRetainRC, ENO => saveRetainENO );
if (READ) THEN // Wenn gelesen werden soll !!
LoadRetainData ( EN := true, fileName := 'Persistent.csv', nrNonLoaded => nrNonLoaded, RC => loadRetainRC, ENO => loadRetainENO );
END_IF;
if (WRITE) THEN // Wenn geschrieben werden soll dann schreiben !!
SaveRetainData ( EN := true, fileName := 'Persistent.csv', RC => saveRetainRC, ENO => saveRetainENO );
END_IF;
END_FUNCTION_BLOCK
GLOBALS Retain_data
VAR_GLOBAL RETAIN
rd_Variable : STRING[100]; (z.B.)
END_VAR
END_GLOBALS
Wenn man eine Datei mit System_open öffnet und mit System_write reinschreibt, enthält diese immer genau das letzte geschriebene Zeichen (egal wieviele man bei dem einen Aufruf geschrieben hat). Auch dann, wenn die Datei im APPEND Modus geöffnet wurde. Offensichtlich wird die Datei immer wieder zurückgesetzt. Eventuell ist in System_write ein Bug.
Grüße2018-06-04 23:13 Selbstreinigung gestartet. Füllstand = 80%.
2018-06-04 23:45 Reinigung beendet. Normalbetrieb gestartet. Füllstand = 5%.
2018-06-05 14:30 Sicherheitstür geöffnet.