OSCAT Forum

network.lib => Codesys 2 => Thema gestartet von: gravieren am 24. November 2011, 20:30:12

Titel: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 24. November 2011, 20:30:12
Hi

Kurze Frage zu o.g. Baustein.


Ich erhalte bei dem Demo-Projekt ca. 12-13 Zeilen EXCEL-Messwerte  --> O.K.

Gemessen wird alle 5 Sekunden.

Ich hätte gerne alle 10 minuten eine Messung und alle 3600 Sekunden soll eine EXCEL-Datei erzeugt werden.

TRIG_M und TRIG_T wurden angepasst jedoch ohne Erfolg.

Habe ich da irgendwo einen Denkfehler  ?



2. Z.b. DLOG_REAL --> DELTA wird im Handbuch nicht erklärt.


Danke vorab

Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 24. November 2011, 21:53:04
TRIG_T = 600 macht alle 10 minuten einen aufzeichnung

wenn die aktuelle zeit (in sekunden betrachtet), durch TRIG_T ohne rest geteilt werden kann, wird ein aufzeichnung aufgelöst

TRIG_M sollte eigentlich nur dazu dienen um jederzeit nach wunsch per puls eine aufzeichnung auflösen zu können.
(wenn man z.b. keine zeit sondern event gesteuerte aufzeichnung nutzen möchte)
TRIG_T und TRIG_M funktionieren aber parallel !


damit alle 3600 sekunden (jede stunde) eine neue datei erzeugt wird
must du entweder selber jede stunde den dateinamen ändern, natürlich so das es sinn macht

aber viel intelligenter ist die automatische variante mit dem dynamischen dateinamen

FILENAME := 'LOG_DATA_#N.csv'

wenn es gerade 10:30h ist, dann würde der dateiname 'LOG_DATA_10.csv' sein
damit wird automatisch jede stunde ein neuer dateiname erzeugt, und die daten werden dahin umgeleitet


DLOG_REAL -> delta fehlt in dokumentation
du verwendest die "nicht veröffentlichte" Version 1.20 und benutzt die doku 1.12 dazu
(siehe anhang)


[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 24. November 2011, 22:33:43
Hi peewit


Wäre natürlich schön, wenn man mit Parametern diese eigentliche Aufgabe erledigen könnte.

Wäre doch etwas "gängiges" oder ?
Also z.b. Solaranlage, alle 15 sekunden die Werte aufzeichnen.
Nach 3600 sekunden soll eine neue Datei erzeugt werden.



Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 24. November 2011, 22:49:31
ich muss mich leider wiederholen

es geht doch mit parametern

diese einstellungen machen das was du willst

TRIG_T = 15
FILENAME := 'LOG_DATA_#N.csv'

dann bekommst du insgesamt 24 dateien (pro tag) die immer wieder pro stunde überschrieben werden

achtung !
im filenamen steckt ein '#N' dass wird durch die aktuelle stunde ersetzt, und ergibt automatisch sich ändernde dateinamen
die kürzel kannst du bei DT_TO_STRF nachlesen
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 25. November 2011, 16:57:26
Hallo Peewit


Das habe dann mißverstanden.

Werde gleich mal testen.


Danke vorab.

P.S.  Das PDF ist jetzt lesbar.


Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 25. November 2011, 21:03:46
Hi Peewit

Funktioniert.     :)



FILENAME := 'LOG_DATA_#A.csv'  --> Aufzeichngsdauer 1 Minute
FILENAME := 'LOG_DATA_#N.csv'  --> Aufzeichngsdauer 1 Stunde

Das könnte noch in die Dokumentation  ?


Danke

Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 25. November 2011, 23:58:46
ist doch eine klasse sache oder ?

in der doku von diesen baustein ist ein verweis auf den baustein DT_TO_STRF dokumentiert
und dort sind dann auch die möglichen kürzel dokumentiert
das verhindert redundante dokumentation !
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 26. November 2011, 10:55:46
Hi


ist doch eine klasse sache oder ?
Ja, sogar SuperCool   :-*


in der doku von diesen baustein ist ein verweis auf den baustein DT_TO_STRF dokumentiert
und dort sind dann auch die möglichen kürzel dokumentiert
das verhindert redundante dokumentation !
O.K.   Vom Prinzip her schon.

Nur man ahnt eigentlich nicht, dass durch ändern des Filenamen die Aufzeichnungslänge verändert.
(Ich zumindest nicht  :)  )


Danke Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 28. November 2011, 16:34:07
Hi

Ich arbeite nun mit der DELTA   und  TRIG_M FALSE.


Die Aufzeichnungen funktionieren anscheinend, jedoch die CT+LF hinter den Sätzen fehlen.

(Mache ich was falsch)


Danke Karl

[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 28. November 2011, 20:30:51
kontrolle doch mal die baustein aufrufreihenfolge
sollte die passen, dann gib mir bitte ein möglichst einfaches test-projekt wo das problem weiterhin besteht
dann werde ich sicherlich auch den grund finden ...

Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 28. November 2011, 21:07:52
Hi

Reihenfolge nach Datenfluß.   -->  !


Grundsätzlich nur ein paar REAL Variablen.


Zeit wird separat ausgelesen.


P.S:   750-881  --> Dein Example läuft jedoch richtig.



P.P.S:  Reicht dieses Example, oder soll ich dir ein komplette Beispiel machen  ?


Danke

Gruß Karl

[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 28. November 2011, 22:34:33
hallo

wenn ich dein programm nehme funktioniert es auch, jedoch hast du nicht die gleichen bedingungen wie ich.
da dein beispiel werte von aussen benötigt (uhrzeit und prozesswerte)

problem ist eben solange es bei mir funktioniert , kann ich auch keinem problem nachgehen

du müsstest das original-demo programm nehmen, und so anpassen das der fehler wieder passiert

aber alle variablen müssen lokal im programm produziert werden selbst du uhrzeit solltest du nicht von extern holen
ansonsten haben wir nicht die gleichen bedingungen, darum verwende ich immer die RTC2 softclock

tritt der fehler nur auf wenn du delta benutzt ?
entferne mal alle delta und teste
dann gibst du einen delta hinzu usw....

irgendwann muss es dann doch anders werden ....


meine test-textdatei ist im anhang, da habe ich einen realwert zyklisch um 0.01 erhöht, damit das delta öfters auflöst
und leider ist kein problem erkannbar

-------------------------
kannst du mal online bei dir folgendes nachsehen

welchen wert hat X.ID_MAX
und eventuell mal von der variable "n" im DLOG_STORE_FILE_CSV eine traceaufzeichnung machen

meiner vermuting ist das der interne X.ID_MAX zähler nicht stimmt
dieser zähler wird im ersten zyklus automatisch aktiviert

hast du eventuell online programmänderungen gemacht
mach mal einen sps-reset und download + start  und teste nochmal


[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: gravieren am 29. November 2011, 16:30:48
Hi


>hast du eventuell online programmänderungen gemacht
>mach mal einen sps-reset und download + start  und teste nochmal

Ja, etliche Programmänderungen und mit "Online-Change".


Bereinigen und komplett neu erzeugen und Reset der Baugruppe.


Jetzt läuft es.   :)

 :'( Sorry, wieder umsonst Rabatz gemacht.  :'(


Nochmals großen Dank.


Gruß Karl
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 29. November 2011, 18:03:16
hallo

hauptsache es funktioniert jetzt, und es war ja nicht umsonst
ich habe erkannt das dies bei onlineänderungen passieren kann

somit werde den baustein etwas optimieren so das sich dieses problem nach dem online änderungen von selber wieder repariert.
und eventuell noch einen hinweis in die doku geben .....

wenn du ideen anregungen dazu hast, bitte mitteilen
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: X-User am 22. Februar 2012, 15:23:47
Hallo liebe Oscat-User,


nun muss ich mich auch zu diesem Thema austauschen.
Möglicherweise stehe ich etwas auf dem Schlauch...
Ich würde gerne alle 15min eine CSV-Datei erstellen und per FTP versenden.
In dieser CSV soll auch nur alle 15min ein Wert eingetragen werden.
Für den 15min Eintrag gebe ich die TRIG_T 900 vor.
Was aber gebe ich für die 15min CSV im Filename ein?

Vielen Dank für Eure Hilfe

Gruß

PS: FTP-Versand funktioniert wunderbar aber die CSV alle 15min leider nicht.
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 22. Februar 2012, 17:58:16
dasa mit den 15 minuten geht leider (noch) nicht automatisch
du musst einfach alle viertel stunde den dateinamen ändern, mehr ist nicht erforderlich !

du nimmst den date_time wert und teilst in durch 900 , und wenn kein rest bleibt dann es genau

15,30,45,00 minuten

auslöser = DT_TO_UDINT(DTI) MOD 900 = 0;
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: X-User am 22. Februar 2012, 22:28:44
Vielen Dank für die schnelle Antwort.
Ich werde das morgen testen.

Grüße
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: X-User am 05. März 2012, 14:22:57
Hallo,

der Logger funktioniert nun einwandfrei. Leider gibt es nun ein weiteres aber sicher letztes Problem.
Der FTP-Versand läuft leider nicht sauber durch. Es kann sein das der Versand über mehrere Stunden einwandfrei funktioniert.
Dann gibts es wieder Phasen da dauert es bis zu 3min bis der Versand erfolgreich statfindet.
Die Steuerung ist immer noch eine Wago 750-841. Ich habe das Programm aber auch schon auf einer 750-880 getestet mit dem gleichen Problem.
Außerdem habe ich au das Demoprogramm DLOG_FILE_CSV_FTP_DEMO getestet mit dem gleichen Ergebnis.
Auch habe ich schon verschiedene FTP-Server ausprobiert, immer mit dem Problem das der Versand nicht auf Anhieb läuft.
Natürlich Firewall & Co. aus. Auch der FTP-Versand auf eine 2. Wago geht nicht immer.

Über Hilfe würde ich mich sehr freuen denn das Programm läuft sonst einwandfrei - vielen Dank übrigends an der Stelle an die Macher der Oscat !!

Grüße
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 05. März 2012, 17:39:30
hallo

das manche massen-hoster den verbindungsaufbau zum ftp oft zeitlich variabel machen, habe ich selber schon gesehen
dies sind meistens aber nur wenige sekunden, und das wird ja nicht dein problem sein.
kommt es hier zu irgendwelche bandbreiten-limits ?

wir müssen aber jetzt bei dir das problem näher beschreiben/definieren.

hast du nur ein ungleichmässiges zeitverhalten, oder kommt es zu abbrüchen bzw fehlermeldungen
beschreibe bitte die situation etwas genauer.......

das beste mittel wäre eine wireshark aufzeichnung des datenverkehr, dann kann man eindeutig bestimmen was hier passiert
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: X-User am 05. März 2012, 17:47:41
Hallo,
der FTP-Server ( Filezilla ) läuft im lokalen Netzwerk.
Einen Wireshark-Mitschnitt kann ich machen.
Oder ich poste hier mal das Programm wenn es von Nutzen ist.
Was mich gewundert hat war, das auch die Demo nicht fehlerfrei gelaufen ist.

Danke erstmal für die schnelle Antwort!

Grüße
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: X-User am 15. März 2012, 14:10:33
Hallo,

nun läuft alles perfekt - bei Gelegenheit kann ich gerne mal das Programm posten.
Ich habe nun die FTP von Wago genommen - mit der funktioniert es prima.
Nun würde ich noch gerne eine weitere Sicherheit einbauen da im Moment falls der Server nicht erreichbar ist, die Dateien auf der Wago abgelegt werden.
Die Sicherheit sollte folgendermaßen aussehen: Die Dateien werden auf der Wago abgelegt. Nun soll z.B. einmal täglich in das Verzeichnis geschaut werden und alle CSV-Dateien die sich darin befinden per FTP übertragen werden.
Gibt es diese Möglichkeit ? Hat sowas schonmal jemand realisiert ?

Grüße
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 15. März 2012, 20:53:35
hallo
genau das haben wir in unseren baustein "DLOG_FILE_TO_FTP" schon integriert
dieser speichert in einen 4kb puffer die zu übertragenden dateiennamen

schau dir doch mal den code von diesen baustein an
du kannst dir ja einfach die relevanten codeblöcke nehmen

(* neue Filenamen speichern *)
IF X.NEW_FILE_RTRIG AND ftrig_old = FALSE THEN
UCBD.D_HEAD := 1;
UCBD.D_MODE := 1;
UCBD.D_STRING := X.NEW_FILE;
UCB(DATA:=UCBD); (* Daten eintragen *)
END_IF;
ftrig_old := X.NEW_FILE_RTRIG;

CASE step OF

00: IF UCBD.BUF_COUNT > 0 AND ftp_busy = FALSE THEN
UCBD.D_MODE := 12; (* Daten lesen und löschen *)
UCB(DATA:=UCBD);
filename := UCBD.D_STRING;
cnt := 0;
step := 10;
END_IF;

10: IF ftp_busy = FALSE THEN

   ..... ftp übertragung durchführen ... der dateiname steht in der variable 'filename'
........
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: Stoky am 27. Mai 2013, 13:51:48
Hallo zusammen,

der Threat ist zwar schon alt, ich denke jedoch meine (teils sehr generellen) Fragen passen hier genau rein, falls nicht bitte ich um Entschuldigung.

Ich bastle gerade an meinem ersten CoDeSys Projekt mit V2.3.9.40, ich benutze eine WAGO 750-880. Ich habe die Oscat Bibliotheken oscat_network_121 und oscat_basic_333 in mein Projekt geladen. (Das funktioniert ohne Fehler beim übersetzen) Die Demos in der Bibliothek habe ich mir angesehn, dies bringt mich aber nicht weiter. Selbiges gilt für die Doku zur Bibliothek.

Im Prinzip möchte ich einmal täglich eine neue CSV-Datei mit Datum erstellen, es soll jedoch nur auf Knopfdruck ein neuer Datensatz entstehen. Die Datensätze bestehen immer aus 2 Elementen (2 Strings). Zu allem Überfluss sollen die CSV dateien auf einen firmeninternen Server (glaube SMB) geschrieben werden.


Fragen:

1. Was bedeuten die X Anschlüsse an DLOG_STORE_FILE_CSV und den zugehörigen DLOG_STRING Bausteinen?
2. Wie  kann ich die beiden Strings in die csv Datei bekommen (mit DLOG_STRING?) ?
3. Kann man überhaupt mit DLOG_STORE_FILE_CSV oder DLOG_FILE_TO_FTP auf einen "normalen" Server schreiben?
4. Kann ich zum testen einen Speicherort auf der lokalen Festplatte nehmen? Wenn ja wie?
5. Da ich derzeit nicht an der echten SPS testen kann wollte ich mein Projekt simulieren. Kann ich beim simulieren überhaupt die csv datei beschreiben?


Meine Anschlüsse am DLOG_STORE_FILE_CSV bisher:

Enable: Boolvariable "Datenerfassung aktiviert"
Trig_m: Boolvariable "Taster Abspeichern"
TRIG_T: 15 (zum testen 15 Sekunden, normal 86400 für einmal am Tag)
Filename: 'E:\Projekte\CoDeSys\CSV\Daten#A_#D_#H.csv'
DTI: SysRtcGetTime
SEP: 59
x: Variable vom Typ DLOG_DATA (Platzhalter ohne Sinn)
ERROR_C: leer
ERROR_T: leer

Beim Übersetzen kommen noch 3 fehler: Fehler 4024 ( Erwarte '(' vor ''), 4268 (Ausdruck erwartet) und 4301 (Baustein verlangt genau 7 Eingänge)

Ich hoffe ihr könnt mir helfen, ich suche schon seit locker fünf Stunden nach einer Lösung.

Gruß Stoky

EDIT: Die drei Fehler verschwanden als ich SysRtcGetTime durch eine beliebige Date_Time Variable ersetzte. Allerdings weiß ich jetzt nicht wie ich die die Systemzeit sonst abfragen soll, da ich diese ja brauche um meine Dateien ordnungsgemäß zu benennen.
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 27. Mai 2013, 17:11:44
hallo

benutzt die 1.30 lib von hier
http://www.oscat.de/community/index.php/topic,1872.msg9862.html#msg9862

1. Was bedeuten die X Anschlüsse an DLOG_STORE_FILE_CSV und den zugehörigen DLOG_STRING Bausteinen?

 das ist eine interne datenstruktur mit der du im detail nichts zu tun hast, du musst sie nur als variable anlegen und überall die gleiche angeben

2. Wie  kann ich die beiden Strings in die csv Datei bekommen (mit DLOG_STRING?) ?

  ja

3. Kann man überhaupt mit DLOG_STORE_FILE_CSV oder DLOG_FILE_TO_FTP auf einen "normalen" Server schreiben?

dlog.._csv schreibt auf das lokale filesystem der sps und dlog ... ftp schreibt auf einen im netzwerk erreichbaren ftp-server

4. Kann ich zum testen einen Speicherort auf der lokalen Festplatte nehmen? Wenn ja wie?

nur wenn das deine sps direkt unterstützt. bei einer klasischen sps ist das aber immer das filesystem auf der sps
flashspeicher bzw. mitunter auch ein gesteckter usb-stick

5. Da ich derzeit nicht an der echten SPS testen kann wollte ich mein Projekt simulieren. Kann ich beim simulieren
überhaupt die csv datei beschreiben?

die normale simulation unterstützt kein filesystem und auch kein netzwerk
damit kannst du nicht testen



in der network.lib befindet sich ein ordner "demo", darin findest di verschiedene dlog... demo varianten
öffne die lib als projekt und exportiere dir die gewünschten bausteine in dein projekt
passe sie deinen bedürfnissen an, und mache die ersten tests damit !

wenn du nicht weisst wie du deine aktuelle systemzeit abfragen kannst, da wende dich an denn sps hersteller

mit dem parameter "TRIG_M" an den dlog... bausteinen kannst du den aufzeichnungs-trigger selber vorgeben
positive flanke löst eine datenaufzeichnung aus

Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: Stoky am 31. Mai 2013, 15:23:45
Hallo,

vielen Dank für die Antwort, das hat mir sehr geholfen. Leider stehe ich jetzt vor einem neuen Problem:

Ich habe die Bausteine nach bestem Gewissen angeschlossen, allerdings scheint die SPS keine CSV-Datei zu erstellen.

Im Anhang befindet sich ein Screenshot aus dem Onlinemodus (mit SPS verbunden). Er zeigt, dass die gewünschten Parameter wie Stringwerte oder Datum+Uhrzeit am Baustein anliegen.

Nach meinem Verständnis müsste die SPS eigentlich einmal pro Minute eine neue CSV-Datei im internen Speicher erzeugen. Jedesmal wenn die Variable Abspeichern 1 wird, wird der aktuelle Datensatz (die zwei Strings und der Real-Wert) in die CSV-Datei geschrieben. An den Eingängen Column wird ein STRING Wert übergeben, der die Spaltenüberschriften darstellt.

Nicht sicher bin ich mir bei den Anschlüssen AUTO_CLOSE und Delta (und Column).

Habe ich vielleicht einen der Bausteine falsch angeschlossen oder könnte der Fehler wo anders liegen?

Gruß Stoky

[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 01. Juni 2013, 18:52:49
Hallo

Probiere das vorgerfertigte demo in der bibliothek
Dann sehen wir gleich ob es an deinem programm liegt,oder etwas anderes schuld ist

Beschreibung zum demo baustein habe ich beim letzten posting angegeben

Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: Stoky am 03. Juni 2013, 09:30:21
Guten Morgen,

ich habe die Demo eingebaut und siehe da es funktionierte. Durch eine Änderungen funktionierte das Demo Programm plötzlich nicht mehr oder zumindest nicht mehr so wie ich es erwartet hatte. Sobald ich am Anschluss FILENAME des DLOG_STORE_FILE_CSV Bausteins den Namen von "Test#R.csv" in "Test#N:#R.csv" änderte wurde nicht mehr minütlich eine CSV-Datei erstellt. In meinem Programm habe ich die den dateinamen in #R geändert und siehe da auch mein Programm funktionierte. Ich vermute, dass mit #N:#R stündlich eine Datei erstellt wird. Das wäre natürlich schlecht für mich, da ich ja das komplette Datum und die Uhrzeit im Dateinamen haben möchte und die SPS mir sonst nur einmal im Jahr eine Datei erstellen würde, bzw. wohl eher dann wenn der interne Zwischenspeicher voll ist.

Gibt es da irgendeine Lösung wie man jede Minute eine Datei erstellt bekommt und trotzdem das Datum im Dateinamen stehen haben kann?

Gruß Stoky


EDIT: Der Fehler lag in den Trennzeichen zwischen den #! Erlaubt sind wohl nur "." und "_", ":" und "/" hingegen nicht. Daher wird bei den nicht erlaubten Zeichen gar keine Datei erstellt. Mit den etrlaubten Zeichen funktioniert das einwandfrei! Ich habe jetzt einfach #A_#D_#H_#N.#R.csv eingegeben und es funktioniert wunderbar :).
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 03. Juni 2013, 17:49:49
hallo

welche zeichen im dateinamen vorkommen dürfen hängt natürlich von deiner sps bzw. vom filesystem ab

jedoch sind fast immer folgende zeichen nicht verwendbar          <>: "\ / | *?

das kann ja selbst dein windows nicht !
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: karst am 13. März 2014, 21:18:01
Vielleicht kann jemand mir bestätigen was Ich hier unten behaupte.

DLOG_STORE_FILE_CSV hat ein Fehler wenn in ein Datei mehr geschrieben wird als im PT.BUFFER passt.
Wenn Ich meine log Dateien nachsehe vermisse Ich in regelmäßige Abstände ein Zeigen.
Soweit Ich jetzt diese wunderschöne Funktionsbausteine verstehe wird hier auf die Falze "size" begrenzt.

20:   IF X.UCB.BUF_COUNT > 0 THEN (* Einträge vorhanden *)
      X.UCB.D_MODE := 10;
      UCB(DATA:=X.UCB); (* Element lesen , aber noch nicht entfernen *)
      IF X.UCB.D_HEAD = WORD#16#FF00 THEN (* LOG_STOP Command *)
         X.UCB.D_MODE := 11;
         UCB(DATA:=X.UCB); (* Element entfernen *)
         log_stop := TRUE;
         step := 40; (* Daten schreiben *)
      ELSIF idx + LEN(X.UCB.D_STRING) + 2 < SIZEOF(PT) THEN (* Platz für Element vorhanden ? *)


Wie Ich es sehe muss nur auf die Abmessung der Buffer geachtet werden und nicht auf die Abmessung von ganzen PT. Also:
      ELSIF idx + LEN(X.UCB.D_STRING) + 2 < SIZEOF(PT.BUFFER) THEN
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 14. März 2014, 08:23:12
hallo

1. ja , du hast recht das ist ein fehler
2. diesen fehler habe ich aber schon lange behoben, bzw. gibt es schon länger eine überarbeitete version

http://www.oscat.de/community/index.php/topic,1872.msg9862.html#msg9862

es freut mich, wenn jemand nicht nur die oscat benutzt, sondern auch bei einem problem selber die ursache sucht und auch findet !

Titel: Weiter mit DLOG_FILE_TO_FTP
Beitrag von: karst am 27. März 2014, 23:02:17
Dass loggen der Daten lauft ja mittlerweile.
Nächste Schritt soll dass übertragen zu einem Server sein.

Dass loggen wird gemacht auf ein Eaton (Micro Innovation) XVS-460-15MPI, ein sogenanntes HMI-PLC.
CodeSys 2.3.9.35 mit "oscat_basic_333.lib" und "codesys_network_130.lib".
Auch den Demo "DLOG_FILE_CSV_FTP_DEMO" kommt mit ERROR_T = 2 und ERROR_C = FF 00 00 00

Irgendwie vermute Ich dass SYSLIBSOCKETS_OPTION ein bestimmte Wert haben soll.
Welche?
Ist dass irgendwo dokumentiert?
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 28. März 2014, 11:18:23
je nach plattform kann es sein das du SYSLIBSOCKETS_OPTION anpassen musst
es kann auch sein das es nicht funktioniert !

Zusatzinformation für Codesys
Mit der globale Variable SYSLIBSOCKETS_OPTION kann mit dem Wert 1 auf
einen Kompatibilitätsmodus umgeschaltet werden. Dadurch wird beim
Verbindungsaufbau intern die Funktion SYSSOCKSELECT verwendet. Dies
ist z.B. bei die Runtime „CoDeSys SP PLCWinNT V2.x“ notwendig bzw. bei
allen ähnlichen Systemen.

diese option findest du unter globale variablen
dort ist aber auch eine textbeschreibung mit bei

   (* Configuration for SysLibSocket.lib                   *)
    (* Bit 0 = 1 -> PLCWinNT                                *)
    (* Bit 1 = 1 -> PLC WAGO 750-841                        *)
    (* Bit 2 = 1 -> PLC WAGO 750-881                        *)
   SYSLIBSOCKETS_OPTION : BYTE := BYTE#2#0000_0000;
   (* ---------------------------------------------------- *)

da probierst du einfach alle möglichkeiten

es ist aber durchaus möglich das es ein ganz anderes logisches problem gibt

das prinzipielle funktioneren von ethernet kommunikation über die oscat lib solltest du vorab mal direkt mit irgendwelchen einfachen kommunikation testen  z.b. modbus tcp client etc....

deine fehlermeldung besagt das die verbindung für den ftp steuerkanal nicht aufgebaut werden konnte
bei ftp kann man ja auch einen aktiv oder passiv mode nutzen weil es mitunter durch firewall antivirus blockiert werden kann.
Titel: FTP_CLIENT
Beitrag von: karst am 05. April 2014, 13:45:05
Gut, mittlerweile kann Ich ein kleine Datei Senden mit den Einstellung SYSLIBSOCKETS_OPTION := BYTE#2@0000_0001;
Dass heißt das wahrscheinlich fast alle Moeller / MicroInnovation / Eaton targets mit diese Einstellung die Netlib von Oscat nutzen können.

Aber, wie gesagt, kleine Dateien kann Ich über FTP senden. Große Dateien aber nicht   ???

Eine Fehler habe Ich gefunden im IP_CONTROL.
IF S_BUF.SIZE > 0 THEN
   IF c_ready AND c_enable THEN
      IF NOT s_active AND IP_C.MAILBOX[2] = 0 THEN
         (* Gesamtanzahl an Bytes limitieren und uebergeben *)
         s_total := LIMIT(0,UINT_TO_INT(S_BUF.SIZE),r_max_size);

Dass muss wahrscheinlich s_max_size sein.
Wenn Ich das anpasse werden von größere Dateien nur die erste 4 KB gesendet. In FTP_CLIENT werden die Schritten 200 und 210 verschiedenen mahlen wiederholt. Doch vermute Ich dass da etwas Falsch geht mit das anordnen der Dateistückchen. Ein bisschen Hilfe könnte Ich hier sicher nutzen.
Anbei mein Programm und ein Beispiel von ein Datei die Ich gerne über FTP senden möchte.


[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 06. April 2014, 17:20:28
das was du entdeckt hast ist sicherlich ein schönheitsfehler den wir ausbessern werden

jedoch werden im ip_control beide variablen immer mit ansich konstanten werten beschrieben
und beide variablen haben gleichen inhalt das sende und empfangspuffer gleich gross sind.
die groesse von r_buf.buffer und s_buf.buffer wird von einer globalen compilervoreinstellung bestimmt
und ändert sich zur laufzeit natürlich nicht.
 
VAR_GLOBAL CONSTANT
   NETWORK_BUFFER_LONG_SIZE : UINT := 4095;
   NETWORK_BUFFER_SHORT_SIZE : UINT := 1407;

TYPE
   NW_BUF_LONG  : ARRAY[0..NETWORK_BUFFER_LONG_SIZE] OF BYTE;
END_TYPE

TYPE NETWORK_BUFFER :
STRUCT
   SIZE : UINT;
   BUFFER : NW_BUF_LONG;
END_STRUCT
END_TYPE
----------------

ip_control:
   r_max_size := SIZEOF(R_BUF.BUFFER);
   s_max_size := SIZEOF(S_BUF.BUFFER);

somit kann eigentlich deine änderung keine positive veränderung verursachen

überprüfe doch nochmals das ganze...
deine ergebnis kann ich nicht nachvollziehen...

da die bausteine prinzipiell auf den von mir getesteten plattformen laufen, ist es schwer
eine plattform zu testen die man nicht hat bzw. simulieren kann

Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: lexy am 01. August 2014, 12:32:28
Hallo zusammen :)

Ich bin Neu hier im Forum und habe mich schon eingelesen und selbst viel probiert. Durch die Lösungsansätze konnte ich zumindest schon mal so alles gestalten, dass ich das Programm auf eine Wago 750-841 (FW11) übertragen konnte. Arbeiten tue ich mit CoDeSys V2.3

Aber nun zum Problem:

Ich mache zur Zeit mein Abschlussprojekt und habe die Aufgabe Messwerte aus einem Array in eine csv Datei zu schreiben und da mit hilfe von Excel auszuwerten.
Habe mich schon mit dem Demo Baustein des DLOG_STORE_FILE_CSV auseinandergesetzt und den so 1:1 übernommen. Aber leider erstellt er keine Dateien bzw. ich weiß noch nicht so recht wo er die Dateien erstellt. Ich habe folgendes bei Filename eingetragen: 'G:\testneu.csv' ...  Zur Zeit ist die SPS direkt mit meinem Rechner verbunden und ich habe gedacht, dass so die Datei auf meinem Laufwerk G abgespeichert wird, aber ist leider nicht der Fall. Ich hoffe, dass ich mit eurer Unterstützung das Problem lösen kann.

Viele Grüße

PS: Habe nochmal einen Screenshot vom programm beigefügt.

EDIT: Ok die Datenspeicherung im internen Speicher der Wago funktioniert! :) Jetzt möchte ich die Daten auf meinen PC übertragen. Habe dazu mit Hilfe der Software FilleZilla Server einen FTP Server aufgesetzt und möchte da meine Daten abspeichern. Ich sehe in der Software, dass die SPS zugreifen will, aber es irgendwie nicht schafft.. Passwort und Benutzername vom FTP sind richtig unter ftp_url eingetragen. Auch die Software Firewall habe ich ausgeschaltet, leider ohne Erfolg.

Fehlermeldugnen bekomme ich folgende:

error_c : 65280
error_t: 2

[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 07. August 2014, 14:30:07
hi

das du von der sps aus direkt auf dein pc laufwerk g: schreiben kannst kann ich mir nicht wirklich vorstellen.
zumindest ist mir dieser kniff nicht bekannt das man ein pc laufwerk auf die sps mappen kann.

warum die ftp übertragen nicht klappt ist von hier aus nicht festzustellen

fehler 2 / 65280 bedeutet

Störung: FTP Steuerkanal
Die genaue Bedeutung von ERROR_C ist beim Baustein IP_CONTROL nachzulesen

es konnte keine tcp-verbindung zum ftp server ausgebaut werden.
das kann verschiedenste gründe haben....
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: lexy am 10. August 2014, 14:58:22
Hallo,

mittlerweile läuft die Datenübertragung sehr gut. Mein Fehler war in dem Sinne, dass ich auf meinem PC einen FTP Server laufen gelassen habe und das hat der SPS wohl nicht so geschmeckt. Habe dann einen kostenlosen FTP Server im Netz eingerichtet und dann lief alles  prima :)

Womit ich zur Zeit noch kämpfe ist die eMail Übertragung. Ich habe auch schon das Demo Programm probiert und auch damit bekomme ich keine eMails verschickt. Meine 750-841 die ich hier stehen habe hat noch Firmware V11 drauf. Wie ich bereits gelesen habe, könnte es an der veralteten Firmware liegen, ansonsten kann ich es mir mittlerweile nicht mehr anders erklären.

Ein weiteres Problem ist die Sortierung der einzelnen Spalten. Ich habe gedacht, dass dies von der Beschriftung der Bausteine abhängig ist. Also z.B. x1 - Erste Spalte - Zeitstempel usw.
Das hat auch prima bis x6 funktioniert und dann ab x7 hat er den Wert vom Baustein aufeinmal wieder in die erste Spalte geschrieben. Habe dann den x7 Baustein umbenannt, aber leider blieb auch dies ohne Erfolg und die Reihenfolge hat sich dadurch gar nicht geändert. Jetzt ist meine Frage, wie ich die Spalten so sortieren kann wie ich es gerne hätte? :)

Viele Grüße

lexy
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 10. August 2014, 18:31:14

bei den email baustein musst da beachten dass inzwischen fast alle email provider nur mehr mit verschlüsselter kommunikation funktionieren, das ist auch bei dem network demo programm mit dem gmx konto der fall.
die ssl kommunikation kann man als sps baustein nicht nachbilden, das geht nur mit unterstützung durch das betriebsystem
das dauert noch bis alle sps hersteller hier ihrer systeme updaten....

datenlogger reihenfolge:

die spalten werden genauso so in der reihenfolge angelegt so wie die bausteine auch durchlaufen werden
es kann sein das deine bausteine nicht die richtige reihenfolge aufweisen bzw. was bei codesys öfters der fall ist das du über das menü die funktion reihenfolge neu anordner ausführen musst.
ansonsten kann es sein das die bausteine zwar optisch in der richtigen reihenfolge sind jedoch für codesys nicht.
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: lexy am 11. August 2014, 13:20:02
Der Hinweis auf die Reihenfolge war Goldwert :) Jetzt funktioniert soweit alles. Vielen Dank für die nette Unterstützung

Viele Grüße

lexy
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: karst am 07. Oktober 2014, 16:32:54
überprüfe doch nochmals das ganze...
deine ergebnis kann ich nicht nachvollziehen...

da die bausteine prinzipiell auf den von mir getesteten plattformen laufen, ist es schwer
eine plattform zu testen die man nicht hat bzw. simulieren kann

Überprufen, daß habe Ich gemacht ja letzten Zeit, viel Zeit! Es fehlt mich an detail Kenntnis von FTP-protocol um genau zu beurteilen was hier falst geht. Siehe Anhang Log_03. Nachricht auf Zeile 21 ist am Datakanal der FTP-Server gesendet und nicht am Steuerkanal wie im Log_01.
Log_03: Eaton XV4 Panel HMI/SPS mit FTP_CLIENT_DEMO und syslibsockets_option auf 16#01. Den Datei "TST 22 KB.CSV" wird sogar angelegd auf denn Oscat test Server, und hat 4096 Bytes.
Log_01: Wago 750-881 mit FTP_CLIENT_DEMO und syslibsockets_option auf 16#04. Den Datei "TST 22 KB.CSV" wird komplett gesendet.
Was muss Ich Ausprobieren / Testen um hier weiter zu kommen?

Für ein Platform zum testen bitte Kontakt über pm.

P.S. Habbe noch ein bischen aufs Forum rundgeschaut und Ich war nicht den Ersten mit diesem Problem: http://www.oscat.de/community/index.php/topic,1825.msg9681.html#msg9681


[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: mfreye am 14. Dezember 2014, 11:35:38
Hallo zusammen.

Ich loge bei mir die Temp und die Feuchtigkeit der KWL mit. Das ganze läuft soweit auch gut.

Aber ;) Ich möchte gerne das die neuen Werte gleich in die Datei geschrieben werden und auch immer in die gleiche Datei.

Also alle X Minuten logen und gleich in die Datei schreiben (anhängen).

Geht das???

Ach und noch eine Frage, was muss ich ändern das die Daten (remanente variablen) auch nach einen Neustart der SPS gespeichert bleiben.
Gruß
Maik

Siehe auch Anhang

[gelöscht durch Administrator]
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: peewit am 14. Dezember 2014, 17:31:08
probiere mal diese version aus, hier wurde das verhalten mittels "auto_close" verbessert
damit man gezielt die daten öfters schreiben lässt bzw die datei auch wieder freigegeben wird.

http://www.oscat.de/community/index.php/topic,1872.msg9862.html#msg9862


den datenbuffer remanent setzten
1. eine normale sps hat viel zu wenig remanten speicher sodass es kaum sinn macht
2. damit das funktioniert müsste man einiges am baustein ändern, da ist es besser wenn du eine usv anhängst
    wenn es so wichtig ist, dann sollte man an sowas denken.

schreiben in immer die gleiche datei
hast du dir gedanken gemacht über die dateigroesse, denn irgendwann ist kein platz mehr am flash....
Titel: Re: DLOG_STORE_FILE_CSV
Beitrag von: mukazz am 30. Oktober 2018, 06:53:55
Hallo liebe Oscat Gemeinde,

Ich arbeite mit einer Wago 750-881 und schreibe mit dem DLOG_STORE_FILE_CSV Baustein 7 REAL-Werte in eine CSV Datei.
Das funktioniert auch alles recht gut. Nur leider werden ich sage mal 3x am Tag 1 oder 2 Stellen in der CSV Datei nicht geschrieben.
Es fehlt immer ein "," was ich als Trennzeichen nutze.
Meine 7 REAL Werte beziehe ich von einer anderen Wago 750-881 Steuerung über Netzwerkvariablen.
Die Abarbeitung läuft in der Standardtask.

Bsp.
2018-10-30 01:00:00,35.13,28.32,29.20,25.35,100.00,57.14,28.00
2018-10-30 01:01:00,35.17,28.29,29.21,25.35,100.00,58.36,28.00
2018-10-30 01:02:00,35.21,28.25,29.21,25.36,100.00,59.44,28.00
2018-10-30 01:03:00,35.25,28.21,29.22,25.36,100.00,60.37,28.00
2018-10-30 01:04:00,35.3028.18,29.22,25.36,100.00,61.13,28.00
2018-10-30 01:05:00,35.31,28.18,29.22,25.36,100.00,61.83,28.00
2018-10-30 01:06:00,35.36,28.16,29.23,25.37,100.00,62.50,28.00
2018-10-30 01:07:00,35.36,28.14,29.23,25.37,100.00,63.09,28.00


Bitte kann mir einer helfen?   
Gruß mukazz