OSCAT Forum

network.lib => Codesys 2 => Thema gestartet von: racer am 15. April 2016, 15:38:04

Titel: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 15. April 2016, 15:38:04
Hallo,

wo finde ich das DEMO-Beispiel für oben genannte Funktion.

PS: An den Eingang DTI des Bausteins muss das aktuelle Datum/Uhrzeit angelegt werden. Wie kann ich dies aus dem System auslesen.

Programmierung erfolgt mit Codesys 3.5
Zu programierende Komponente ist eine SPS von ifm GmbH.

Kann mir jemand weiterhelfen?
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 16. April 2016, 21:15:00
in der network lib selber ist ein ordner demo mit ausgeblendeteten bausteine
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 18. April 2016, 08:08:58
Danke.
Wo wird die CSV-Datei abgespeichert.
Filename: 'test_#R.csv'
Error_c und Error_t des "DLOG_STORE_FILE_CSV" sind 0 -> also keine Fehler.
Habe mal ein paar Bilder meines Programms gemacht und angehängHabe das Demoprogramm aus der Bibliothek kopiert, eingefügt und übersetzt.


[gelöscht durch Administrator]
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 18. April 2016, 15:12:54
Nach einer kleinen Überarbeitung sieht das Program wie im Anhang aus und es gibt folgende Fehlermeldungen.

Wer kann mir weiterhelfen?

[gelöscht durch Administrator]
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 19. April 2016, 14:38:32
Mein Datenlogger funktioniert jetzt. Habe aber weitere Fragen:

1.
Ich logge mehrere Sensorwerte vom Typ REAL mit DLOG_REAL.
Wenn ich als Trennzeichen bei "SEP" des DLOG_STORE_FILE_CSV-Baustein ein Komma eingebe werden beim öffnen der CSV-Datei mit Excel alle Sensorwerte in der ersten Spalte gespeichert. Wie schaffe ich es dass pro Sensor (=pro DLOG_REAL-BAustein) eine Spalte verwendet wird (möchte die Daten anschließend graphisch auswerten)?

2.
Die Daten werden ja zwischengespeichert und irgendwann (je nach Einstellung) in eine .csv geschrieben. Können bei der Zwischenspeicherung Daten verloren gehen oder ein Überlauf passieren?

Vielen Dank im voraus.
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 20. April 2016, 08:00:46
hallo

1.
wenn du eine csv erstellt mit "," als trennzeichen dann zeigt excel das nicht korrekt an weil es dein trennzeichen nicht kennt
in europa ist das standard csv-trennzeichen ein ";"
dann funktioniert es auch mit excel automatisch

wenn du aber trotzdem dein trennzeichen weiter verwenden möchtest dann musst du in excel den text import durchführen
dort kannst du alles genau definieren damit der import trotzdem funktioniert

2.
ja daten können verloren gehen
intern werden die daten mittels UNI_CIRCULAR_BUFFER zwischengespeichert
werden daten nicht schnellgenug weiterverarbeitet kommt es zu einen überlauf und daten gehen verloren

wie erkennt man das.
in der aktuellen version nicht so einfach
der UNI_CIRCULAR_BUFFER verwendet die datenstruktur UNI_CIRCULAR_BUFFER_DATA und darin gibt es ein Feld "BUF_USED"
Füllstand (0-100 %) das solltest du mal im auge behalten...

in den neueren version vom data_logger (noch in arbeit)  sind diese probleme extra als fehlermeldung ausgeführt
1. warnung wenn > 90 % des buffers in verwendung sind
2. sobald daten verloren gehen

wenn eines von beiden auftritt sollte man die applikation anpassen !!


Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 20. April 2016, 08:42:42
Danke schonmal.

Ich habe den im Anhang dargestellten Aufruf von BUF_USED getestet.
Allerdings ist die Variable BUF_USED immer '0', obwohl eine CSV-Datei geschrieben wird.
1. Was ist falsch. Möchte, dass ich über Variable "Speicher_voll" bei 90% gewarnt werden.
2. Kann man programmieren, dass bei 90% der Buffer automatisch in eine CSV-Datei geschrieben wird, neue Daten aufgenommmen werden und diese anschließend in einer neuen Datei gespeichert werden.



[gelöscht durch Administrator]
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 20. April 2016, 10:36:15
hi

alle datalogger bausteine sind über die datenstruktur "x" verbunden

das feld ist im UCB Bereich zu finden

siehe Bild (achtung darin sind schon felder der zukünftigen version zu sehen )

 

[gelöscht durch Administrator]
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 20. April 2016, 10:46:55
Danke für die schnelle Antwort.

Mein oben beschriebenes Problem änder sich nicht.
Rufe den Speicher jetzt so wie du gezeigt hast auf. (x.UCB.BUF_USED)
Zusätzlich frage ich zur Kontrolle mal die BUF_SIZE und BUF_count ab
Alle drei bleiben immer Null. Was ist falsch?
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 20. April 2016, 18:00:25
wenn deine sps schnell arbeitet dann ist fast immer alles null in den einträgen
soweit ok

was ist denn den eigentliches problem ?
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 21. April 2016, 08:21:53
Ich möchte verhindern das Daten im Zwischenspeicher, bevor sie in die .csv geschrieben werden verloren gehen.
Ich möchte 200 Temperatursensoren überwachen und alle 10 Sekunden für jeden Sensor den Messwert loggen. Das ganze vielleicht über ein paar Stunden.

Wann werden die zwischengespeicherten Daten in die .csv geschrieben?
Kann man die Größe der csv-Datei abfragen?
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 21. April 2016, 09:33:19
wenn daten verloren gehen erkennst du das sofort weil dann die die daten versetzt sind
alle 10 sekunden speichern ist normalerweise kein zeitliches problem

es kann aber sein das die 200 Spaltenüberschriften und 200 Werte mehr als 4096 bytes brauchen
dann kann das alles nicht auf einmal im buffer eingelagert werden

da hilft dann eine buffer vergroesserung !


für buf_used kannst dir was programmieren

var max_buf_used

if x.ucb.buf_used > max_buf_used then
  max_buf_used = x.ucb.buf_used
end if

das was du vorhast ist eine lösbare aufgabe, da ich genau das vor einigen tagen mit der neuen data-logger version gemacht habe

die groesse der datei ist nicht direkt relevant
du musst dir nur überlegen wieviele dateien insgesamt werden aus deiner sps lliegen (gesamtspeicherbedarf)
da ist es von vorteil wenn du wiederkehrende dateinamen benutzt damit dann alte dateien automatisch von den neuen überschrieben werden
und der gesamtspeicherbedarf kann dir nicht entgleiten...
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 21. April 2016, 13:49:42
Danke.

wo nehme ich die Buffer-Vergrößerung vor, falls die 4096Byte nicht ausreichen sollten.
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: peewit am 22. April 2016, 08:07:17
da bislang der ucb buffer dem netzwerkbuffer entsprach ist es sinnvoll für ucb eine eigene type zu deklarieren
da ansonsten der speicherbedarf explodiert


TYPE
   UCB_BUF  : ARRAY[0..8191] OF BYTE;   (* hier kannst du die groesse vorgeben *)
END_TYPE

TYPE UNI_CIRCULAR_BUFFER_DATA :
STRUCT
   D_MODE : INT;
   D_HEAD : WORD;
   D_STRING : STRING(STRING_LENGTH);
   D_REAL : REAL;
   D_DWORD : DWORD;
   BUF_SIZE : UINT;
   BUF_COUNT : UINT;
   BUF_USED : USINT;
   BUF : NW_BUF_LONG;     --> ändern auf    BUF : UCB_BUF
   _GetStart : UINT;
   _GetEnd : UINT;
   _Last : UINT;
   _First : UINT;
END_STRUCT
END_TYPE
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 22. April 2016, 08:38:49
Danke peewit für deine Hilfe und Unterstützung. :)
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: racer am 20. April 2017, 16:08:29
Hallo nochmal,

ach langer Zeit mal wieder eine Frage dazu.

Wo mss ich diese Ergänzungen und Änderungen, die peewit am 22.04.2016 geschrieben hat vornehmen.
In der Bibliothek?

Wenn ich bei Codesys V3.5 über den Bibliotheksverwalter die Network-Bibliothek öffne und den "UNI_CIRCULAR_BUFFER_DATA" öffne, kann ich da nichts ändern.
Wie muss ich das machen?

PS: Mein Problem ist, dass ich 144 Sensoren gleichzeitig überwachen will und die Werte mit "DLOG_Store_File_CSV" in eine CSV Schreiben will. Nach 80 Spalten oder so ggibt es einen ungewollten Zeilenumbruch in der CSV-Datei. Der Baustein DLOG_Store_File_CSV wird nur einmal verwendet.
Titel: Re: DEMO_Beispiel für DLOG_STORE_FILE_CSV
Beitrag von: mattsches am 21. April 2017, 12:28:56
Öffne die Bibliothek mal nicht über den Bibliotheksverwalter, sondern über Datei / Projekt öffnen. Nach durchgeführter Änderung dann Datei / Projekt speichern und ins Bibliotheks-Repository installieren und dann das Steuerungsprojekt öffnen. Beim Laden müsste er dann neu übersetzen, und die Änderungen sind aktiv.