DLOG_STORE_FILE_CSV legt keine Datei an und schreibt keine Daten

Begonnen von puma8080, 19. April 2019, 23:11:50

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

puma8080

Hallo,

ich habe das Problem, dass ich ein paar Daten in eine CSV loggen möchte. Bekomme es aber nicht hin und weiß nicht warum.
Das folgende Programm soll einfach nur alle 5s die gewünschten Daten in das Logfile schreiben: Warum tut es das nicht?

PROGRAM PLC_PRG
VAR
   b_EnableStoreCSV:BOOL:=TRUE;
   b_SetRTC:BOOL;
   fb_StoreCSV:OSCAT_NETWORK.DLOG_STORE_FILE_CSV;
   st_DLogData:OSCAT_NETWORK.DLOG_DATA;
   Log_test:OSCAT_NETWORK.DLOG_STRING;
   Log_counter:OSCAT_NETWORK.DLOG_DINT;
   Log_timestamp:OSCAT_NETWORK.DLOG_STRING;
   c_RealTimeClock:OSCAT_BASIC.RTC_2;
   t_DateTime:DT;
   tTimer:TIME;
   counter:DINT:=0;
   test : BOOL;
END_VAR


c_RealTimeClock(SET:=b_SetRTC,
   SDT:=DT#2016-02-22-09:00:00,
   UDT => t_DateTime);

IF TIME()-tTimer > T#5S THEN
      tTimer := TIME();
      counter := counter + 1;
       
      Log_test(STR:='test',
         COLUMN:='Ergebnis',
         X:=st_DLogData);
         
      Log_timestamp(STR:='tTimer',
         COLUMN:='timestamp',
         X:=st_DLogData);
      
      Log_counter(VALUE:=counter,
         COLUMN:='Counter',
         DELTA:=,
         X:=st_DLogData);
      
      fb_StoreCSV(ENABLE:=b_EnableStoreCSV,
         TRIG_M:=true,
         TRIG_T:=1,
         FILENAME:='/home/pi/TestCSV.csv',
         DTI:=t_DateTime,
         SEP:=59,
         ERROR_C:=,
         ERROR_T:=,
         X:=st_DLogData);
END_IF


Wenn ich mich einlogge sehe ich im X unter Buf_Size, dass er sich alle 5s erhöht. Aber warum schreibt er denn nicht in meine CSV?

Vorab schon besten Dank für eure Hilfe
Grüße Timo

Edit: Wo finde ich denn eine Ausführliche Beschreibung über alle Funktionen, wie z.B. welche Funktionen gibt es für z.B. eine automatische Namensgenerierung abhängig vom Datum?


[gelöscht durch Administrator]

peewit

du machst grundlegende fehler

der bedingte aufruf macht mal grundsätzlich ein problem ist völlig überflüssig
IF TIME()-tTimer > T#5S THEN


du musst das ganze zyklisch durchlaufen und mittels TRIG_T = 5 sagtst du dem baustein das er alle 5 sekunden daten sammeln soll

schau dir in der network.lib im ordner demo die datenlogger demos an
auf basis dessen kannst du dann deine eigenen ideen umsetzen



puma8080

Danke für die Info.
Leider nicht ganz so einfach für mich. Die Beispiele aus der Network.lib bekomm ich nur in Codesys 2.3 geöffnet und nicht in 3.5. Dann sind Sie nicht in ST! Dazu kommt, dass ich aus 2.3 nichts auf meinem Raspberry testen kann.
Oder ich blicke es gerade einfach nicht! Auch möglich.

So ich habe mein Programm mal versucht aufs minimalste zu reduzieren:

PROGRAM PLC_PRG
VAR
   b_EnableStoreCSV:BOOL:=true;
   b_SetRTC:BOOL;
   fb_StoreCSV:OSCAT_NETWORK.DLOG_STORE_FILE_CSV;
   st_DLogData:OSCAT_NETWORK.DLOG_DATA;
   Log_test:OSCAT_NETWORK.DLOG_STRING;
   Log_counter:OSCAT_NETWORK.DLOG_DINT;
   c_RealTimeClock:OSCAT_BASIC.RTC_2;
   t_DateTime:DT;
   counter:DINT:=0;
END_VAR

---------------------------------------------------------------------------------------

c_RealTimeClock(SET:=b_SetRTC,
   SDT:=DT#2016-02-22-09:00:00,
   UDT => t_DateTime);

counter := counter + 1;

Log_counter(VALUE:=counter,
   COLUMN:='Counter',
   DELTA:=,
   X:=st_DLogData);
             
Log_test(STR:='test',
   COLUMN:='Ergebnis',
   X:=st_DLogData);

fb_StoreCSV(ENABLE:=b_EnableStoreCSV,
         TRIG_M:=,
         TRIG_T:=5,
         FILENAME:='/home/pi/testfile.csv',
         DTI:=t_DateTime,
         SEP:=59,
         ERROR_C:=,
         ERROR_T:=,
         X:=st_DLogData);

Die Zykluszeit vom mainTask habe ich auf 500ms eingestellt.
Laut meinem Verständnis sollten jetzt alle 5s zehn neue Werte in mein testfile.csv geschrieben werden, oder?
Die testfile.csv sollte dann so aussehen:
Counter; Ergebnis
1; test
2; test
3; test
...

Macht es aber nicht! Irgenwie bin ich gerade irgendwo auf dem Holzweg.
Kann mir bitte irgendwer, irgenwie helfen?

Danke & Grüße
Timo

peewit

die codesys 2.3 bausteine solltest du auch in 3.5 importieren können

mögliche fehlerquellen

t_DateTime sollte eine funktionierende laufende DAtum/Uhrzeit liefern

so wie ich das sehe hast du keine funktionierende laufende Datum/Zeit in der Variable t_dateTime , oder ??
dann kann nichts funktionieren wenn das so ist


was werden bei ERROR_C und ERROR_T für werte ausgegeben

bist du dir sicher das der dateipfad auf deinem system auch so funktioniert ?