ich habe seit einiger Zeit den FB “DLOG_STORE_FILE_CSV” erfolgreich laufen.
Ich speichere die Daten erfolgreich in eine Datei “Wetterdaten_#A-#D.csv” auf der SD-Karte.
Zusätzlich sollen die Daten täglich (23:59:59) auf einer NAS gesichert werden, was auch grundsätzlich funktioniert.
Allerdings gibt es am Monatsende immer das Problem, dass die Datei auf der NAS leer ist. Grundsätzlich ist mir klar, dass dies ein Problem mit dem Monatswechsel beim FB “DLOG_STORE_FILE_CSV” ist, weis aber nicht wie ich das lösen kann.
Vielleicht hat ja jemand eine Idee.
MfG
Dirk
…
CAL DLOG_Wetterdaten_speichern(
ENABLE:=1 ,
TRIG_M:= ,
TRIG_T:= ,
FILENAME:='/media/sd/Wetterdaten_#A-#D.csv' ,
DTI:=Uhrzeit_aktuell_global ,
SEP:=59 ,
AUTO_CLOSE:= ,
X:=DLOG_Daten ,
RETAIN_DATA:=DLOG_Retain_Daten ,
ERROR_C=>DLOG_Fehlercode ,
ERROR_T=>DLOG_Fehlertype )
(*Dateienname für NAS Sicherung zusammenstellen*)
(*lokaler Pfad*)
LD UTC_DATE
DATE_TO_STRING
MID 7,3
CONCAT '.csv'
ST FTP_HM_Dateiname
LD '/media/sd/Wetterdaten_'
CONCAT FTP_HM_Dateiname
ST FTP_Dateiname
(*NAS Pfad*)
LD UTC_DATE
DATE_TO_STRING
MID 10,3
CONCAT '.csv'
ST FTP_HM_Dateiname_URL
LD 'ftp://wetterdaten:1234&@xxx.xxx.xxx.xxx/disk1/Wetterdaten/Wetterdaten_'
CONCAT FTP_HM_Dateiname_URL
ST FTP_Dateiname_URL
(*Daten auf NAS sichern*)
(*IP von DNS*)
LD xxx
ST FTP_DNS_IP4
SHL 8
ADD xxx
ST FTP_DNS_IP4
SHL 8
ADD xxx
ST FTP_DNS_IP4
SHL 8
ADD xxx
ST FTP_DNS_IP4
(*IP von Wago*)
LD xxx
ST FTP_PLC_IP4
SHL 8
ADD xxx
ST FTP_PLC_IP4
SHL 8
ADD xxx
ST FTP_PLC_IP4
SHL 8
ADD xxx
ST FTP_PLC_IP4
(*Einmal am Tag Daten sichern*)
LD UTC_TOD
EQ TOD#23:59:59
ST FTP_Dateiuebertragung_starten
CAL FTP_Wetterdaten_to_NAS(
ACTIVATE:=FTP_Dateiuebertragung_starten ,
FILENAME:=FTP_Dateiname ,
FTP_URL:=FTP_Dateiname_URL ,
FTP_DOWNLOAD:= ,
FTP_ACTIV:= ,
FILE_DELETE:= ,
TIMEOUT:=t#30s ,
DNS_IP4:=FTP_DNS_IP4 ,
PLC_IP4:=FTP_PLC_IP4 ,
DONE=>FTP_Kopiervorgang_fertig ,
BUSY=>FTP_Kopiervorgang_laeuft ,
ERROR_C=>FTP_Fehlercode ,
ERROR_T=>FTP_Fehlertype )
das grundproblem zu erkennen ist hier etwas schwierig
aber genau das was du machen möchtest gibt es ja auch als fertige lösung
schau dir mal den demo programm “DLOG_FILE_CSV_FTP_DEMO”
dort wird der baustein DLOG_FILE_TO_FTP mitverwendet
das erspart dir dann den extracode für die namenbildung
und die lösung hat einen eigenen filebuffer und eigene verwaltung die dann mit fehlerbehandlung und wiederholung alles steuert etc
also alles für dich macht
nimm das mal und adaptiere nur das notwendigste damit es tut was du willst
dann kannst du sehen ob es funktioniert
um es dann schrittweise anzupassen
ja ich weis, es hat etwas länger gedauert.
Habe jetzt zusätzlich zum Baustein “DLOG_STORE_FILE_CSV” und “FTP_CLIENT” mal Testweise “DLOG_FILE_TO_FTP” eingebunden.
Die beiden alten Bausteine funktionieren weiterhin. Leider funktioniert der Baustein “DLOG_FILE_TO_FTP” nicht.
Folgendes habe ich programmiert:
xxx.xxx.xxx.xxx steht für die IP der Nas
FTP_DNS_IP4 = IP des DNS
FTP_PLC_IP4 = IP der Wago
Mit diesen IP’s funktionieren die anderen Bausteine.
wieder mal Asche auf mein Haupt.
Jetzt funktioniert es Grundsätzlich. Mein Problem war/ist, dass ich nicht wirklich aus der Doku erkennen kann, wann welcher Baustein die Daten speichert.
“FTP_CLIENT” ist klar. Mit steigender Flanke an “ACTIVATE”
“DLOG_FILE_TO_FTP” ist jetzt auch klar. Bei Namensänderung am Eingang “FILENAME” vom Baustein “DLOG_STORE_FILE_CSV”
“DLOG_STORE_FILE_CSV” ist mir irgendwie immer noch nicht klar. Reicht eine steigende Flanke am Eingang “ENABLE” und er schreibt die gesammelten Daten vom “X” in die CSV-Datei? Wenn “ENABLE” dauerhaft “TRUE” ist, werden dann die Daten von “X”, wenn sich diese ändern, immer in die CSV geschrieben? Die Eingänge “TRIG_M” und “TRIG_T” sind klar.
Ich möchte eigentlich folgendes erreichen:
Daten werden in eine Variable vom Typ “DLOG_DATA” eingetragen.
Diese Daten möchte ich nur jede Stunde auf die SD-Karte der Wago in einer CSV speichern, die Monatlich den Namen ändert (z.B. Daten_2018.04, Daten_2018.05 usw.).
Zusätzlich möchte ich die selben Daten Täglich auf meine NAS sichern (z.B. Daten_2018.04.15, Daten_2018.04.16 usw.)
Wie kann ich das lösen? Wie schon geschrieben klappt es Grundsätzlich mit den Bausteinen “DLOG_STORE_FILE_CSV” und “FTP_CLIENT” bis auf den Monatswechsel, da ist meine Datei auf der NAS leer.
den dateinamen so erstellen das jedes monat eine neue datei erstellt wird
wenn du zum DLOG_STORE_FILE_CSV den DLOG …FTP kombinierst dann wird dieser jede neue Datei (also monatlich eine) auf den FTP-Ort überrtragen
die tägliche daten sicherung macht dir in diesen fall das dlog-system nicht
dazu kannst du aber vielleicht aktiv von der nas auf den ftp der sps zugreifen und die files direkt kopieren !
Ein klares Jein, zur Zeit mache ich die tägliche Sicherung mit dem Baustein “FTP_CLIENT”. Ich nehme mir täglich die Datei von der SD-Karte, erweitere den Dateinamen um den Tag und kopiere diesen auf die NAS. Wie gesagt, es funktioniert auch bis auf den Monatswechsel.
Deine Alternative mit der NAS muss ich mir erst einmal anschauen.
Aber ich muss noch mal explizit nachfragen:
Der Baustein “DLOG_STORE_FILE_CSV” ist mir irgendwie immer noch nicht klar. Wenn ich “ENABLE” auf “TRUE” setze schreibt er doch immer Daten in die CSV, wenn “X” neue Daten erhält oder? Das möchte ich eigentlich vermeiden.
Der Baustein "DLOG_STORE_FILE_CSV" ist mir irgendwie immer noch nicht klar. Wenn ich "ENABLE" auf "TRUE" setze schreibt er doch immer Daten in die CSV, wenn "X" neue Daten erhält oder? Das möchte ich eigentlich vermeiden.
wenn enable = true und trigger_m oder trigger_t löst aus dann werden die daten in die angegebene Datei geschrieben (gesammelt)
nach jeden erneuten trigger werden immer wieder die daten hinzugefügt
das ist die aufgabe und funktion des bausteines und wenn das etwas ist was du nicht möchtest dann musst du etwas anderes machen / verwenden
danke für Deine Antwort. Ich möchte Dir erst einmal meinen tiefsten Respekt engegenbringen, für das was Du geleistest hast.
Allerdings habe ich das Gefühl, das man mich falsch versteht.
Ich bin was die codesys betrifft nicht gut bewandert und versuche mich einzuarbeiten. Ich möchte den Baustein “DLOG_STORE_FILE_CSV” einfach verstehen, um Ihn für meine Belange bestmöglichst einzusetzen. Natürlich kann ich es auch ausprobieren, aber ich dachte Du könntest mir meine Fragen einfach beantworten. Wie man trigger_m und trigger_t benutzen kann ist mir mittlerweile klar. Allerdings werden auch Daten in die csv geschrieben, wenn ich weder den einen noch den anderen trigger verwende. Dafür ist ja der “ENABLE” Eingang “TRUE”. Mich hätte jetzt einfach nur interessiert, ob es reichen würde den Eingang “ENABLE” vom Baustein einmal die Stunde mit einer Flanke freizugeben.
Ich werde es einfach testen.