Logging von Meldungen oder Variablen in Datei
Logging von Meldungen oder Variablen in Datei
Hallo,
weiß zufällig jemand wie man Meldungen und ggf. Variablenwerte in eine Datei loggen kann?
Vielen Dank vorab.
Grüße
Kai
weiß zufällig jemand wie man Meldungen und ggf. Variablenwerte in eine Datei loggen kann?
Vielen Dank vorab.
Grüße
Kai
Re: Logging von Meldungen oder Variablen in Datei
Wer gibt denn die Meldungen aus?
Wenn Du z.B. ein Programm laufen lässt, welches OTTO heißt und die Meldungen ausgibt, dann rufst Du das Programm einfach so aus:
OTTO > /home/pi/data.log
um die Ausgaben in die Datei /home/pi/data.log umzuleiten.
Wenn Du z.B. ein Programm laufen lässt, welches OTTO heißt und die Meldungen ausgibt, dann rufst Du das Programm einfach so aus:
OTTO > /home/pi/data.log
um die Ausgaben in die Datei /home/pi/data.log umzuleiten.
Unser RevPi Motto: Don't just claim it - make it!
Re: Logging von Meldungen oder Variablen in Datei
Hallo Volker,
ich habe Logi.RTS laufen und möchte daraus einige Variablen und Statusmeldungen in eine Textdatei schreiben. Also aus dem Logi.CAD heraus.
Viele Grüße
Kai
ich habe Logi.RTS laufen und möchte daraus einige Variablen und Statusmeldungen in eine Textdatei schreiben. Also aus dem Logi.CAD heraus.
Viele Grüße
Kai
Re: Logging von Meldungen oder Variablen in Datei
Okay, dann bitte warten, bis sich der logi.cad support meldet. da gibt es sicher eine Einstellung, um einen loglevel einzustellen und dann in var/log den log abzugreifen...
Unser RevPi Motto: Don't just claim it - make it!
Re: Logging von Meldungen oder Variablen in Datei
Hallo,
wir suchen hier gerade nach geeigneten Möglichkeiten.
Ich gehe davon aus, dass wir Anfang nächste Woche eine geeignete Lösung dafür präsentieren können.
freundliche Grüße
Walter
wir suchen hier gerade nach geeigneten Möglichkeiten.
Ich gehe davon aus, dass wir Anfang nächste Woche eine geeignete Lösung dafür präsentieren können.
freundliche Grüße
Walter
Re: Logging von Meldungen oder Variablen in Datei
Hallo Walter,
ich wollte mich nochmal in Erinnerung bringen, da ich hier dringend eine Lösung bräuchte.
Bisher habe ich noch folgendes herausgefunden:
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.
Als Workaround kann man alle zu loggenden Variablenwerte mit einem VirtualAdapter ins RevPi Prozessabbild schreiben. Dann ist ein Zugriff daraus mit einem CRON getriggerten Python Skript von der Kommandozeile aus möglich um die Einträge in der Logdatei zu erzeugen.
Ich hoffe auf eine baldige elegantere Lösung
Vielen Dank vorab.
Kai
ich wollte mich nochmal in Erinnerung bringen, da ich hier dringend eine Lösung bräuchte.
Bisher habe ich noch folgendes herausgefunden:
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.
Als Workaround kann man alle zu loggenden Variablenwerte mit einem VirtualAdapter ins RevPi Prozessabbild schreiben. Dann ist ein Zugriff daraus mit einem CRON getriggerten Python Skript von der Kommandozeile aus möglich um die Einträge in der Logdatei zu erzeugen.
Ich hoffe auf eine baldige elegantere Lösung
Vielen Dank vorab.
Kai
Re: Logging von Meldungen oder Variablen in Datei
Hallo Kai.
Ich weiss ja nicht was du für Variablenwerte schreiben und wieder lesen willst. Aber sollte es sein das du nur bestimmte sachen Sichern willst und beim fall eines aussfalls wieder lesen möchtest?
Sollte es so sein dann benutze doch die Load_Save_retaindata.
Sollte dies Passen wie du es haben willst kannst du das gerne verwenden.
die Variablen die du sichern möchtest müssen dann in einer extra variablenliste stehen.
Ich weiss ja nicht was du für Variablenwerte schreiben und wieder lesen willst. Aber sollte es sein das du nur bestimmte sachen Sichern willst und beim fall eines aussfalls wieder lesen möchtest?
Sollte es so sein dann benutze doch die Load_Save_retaindata.
Code: Select all
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
die Variablen die du sichern möchtest müssen dann in einer extra variablenliste stehen.
Code: Select all
GLOBALS Retain_data
VAR_GLOBAL RETAIN
rd_Variable : STRING[100]; (z.B.)
END_VAR
END_GLOBALS
Re: Logging von Meldungen oder Variablen in Datei
Hallo Kai,
haben Dir die Infos von Ingo weitergeholfen?
brauchst Du hier noch weitere Infos?
lg
Walter
haben Dir die Infos von Ingo weitergeholfen?
brauchst Du hier noch weitere Infos?
lg
Walter
Re: Logging von Meldungen oder Variablen in Datei
Hallo Walter,
bitte lies den Thread von Anfang an. Kai möchte Logeinträge in eine Datei schreiben und nicht Variablen retain speichern. Was Ingo da vorschlägt hat mit dem was Kai gefragt hat wenig zu tun. Kannst Du bitte Auskunft geben zu dieser Fragestellung:
bitte lies den Thread von Anfang an. Kai möchte Logeinträge in eine Datei schreiben und nicht Variablen retain speichern. Was Ingo da vorschlägt hat mit dem was Kai gefragt hat wenig zu tun. Kannst Du bitte Auskunft geben zu dieser Fragestellung:
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.
Unser RevPi Motto: Don't just claim it - make it!
Re: Logging von Meldungen oder Variablen in Datei
Hallo Walter,
es geht mir bei meiner Frage nicht nur um das reine Abspeichern von Variablenwerten. Das kann man über da RevPi Prozessabbild erledigen. Es geht mir um ein Ablaufprotokoll. Eine Anforderung die aus dem Qualtiätsmanagement heraus entsteht. Die Anlage soll seltene Abläufe wie z.B. die Selbstreinigung oder besondere Zustände protokollieren. Das ganze soll in eine Textdatei gespeichert werden. Die Meldungen sollen dabei auch Variablenwerte enthalten können.
Beispiel für Protokolleinträge:
Kai
es geht mir bei meiner Frage nicht nur um das reine Abspeichern von Variablenwerten. Das kann man über da RevPi Prozessabbild erledigen. Es geht mir um ein Ablaufprotokoll. Eine Anforderung die aus dem Qualtiätsmanagement heraus entsteht. Die Anlage soll seltene Abläufe wie z.B. die Selbstreinigung oder besondere Zustände protokollieren. Das ganze soll in eine Textdatei gespeichert werden. Die Meldungen sollen dabei auch Variablenwerte enthalten können.
Beispiel für Protokolleinträge:
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.
Kai