Page 1 of 2

Logging von Meldungen oder Variablen in Datei

Posted: 02 May 2018, 13:07
by Kai
Hallo,

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

Posted: 02 May 2018, 14:05
by volker
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.

Re: Logging von Meldungen oder Variablen in Datei

Posted: 02 May 2018, 15:29
by Kai
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

Re: Logging von Meldungen oder Variablen in Datei

Posted: 03 May 2018, 00:34
by volker
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...

Re: Logging von Meldungen oder Variablen in Datei

Posted: 04 May 2018, 10:28
by Walter
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

Re: Logging von Meldungen oder Variablen in Datei

Posted: 15 May 2018, 08:52
by Kai
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

Re: Logging von Meldungen oder Variablen in Datei

Posted: 16 May 2018, 18:18
by Ingo
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.

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
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.

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

Posted: 12 Jul 2018, 13:44
by Walter
Hallo Kai,

haben Dir die Infos von Ingo weitergeholfen?
brauchst Du hier noch weitere Infos?

lg
Walter

Re: Logging von Meldungen oder Variablen in Datei

Posted: 12 Jul 2018, 22:29
by volker
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:
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.

Re: Logging von Meldungen oder Variablen in Datei

Posted: 13 Jul 2018, 08:40
by Kai
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:
2018-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.
Grüße
Kai