DLOG_STORE_FILE_CSV - Anzahl Messwerte

Begonnen von Link5789, 26. Oktober 2016, 12:37:59

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Link5789

Hallo OSCAT Forum,
ich muss mit einer Beckhoff-Steuerung (CX8090) in einem Privathaushalt Energiedaten (elektrisch/thermisch) sammeln und am Ende als csv-Datei für eine anschließende Auswertung zur Verfügung stellen. In zwei von drei derzeitigen Testhaushalten funktioniert dies auch fehlerfrei.

In einem Haushalt habe ich ein Problem beim Erstellen der csv-Dateien. Und zwar verwende ich hierfür die DLOG-Bausteine aus der Beckhoff_network_135 Bibliothek. Den gesamten Schreibvorgang lasse ich in einem eigenen Task ausführen, welcher im 100ms Intervall aufgerufen wird. Jede Minute lasse ich meinen Satz an Messdaten in die Datei schreiben. Je Tag wird eine Datei bei Tageswechsel erstellt (Bsp. Dateiname #B#D#H_H1.csv).

Jetzt habe ich in einem Haushalt den Effekt, dass während des Tages mein Programm die aktuelle Datei abbricht und anschließend eine neue Datei erstellt. Eigentlich sollte dies nur bei Tageswechsel durch den geänderten Dateiname ausgelöst werden. Da sich der Dateiname aber bei dem nicht geändert hat, wird die alte Datei überschrieben und ein Teil meiner Messdaten geht verloren. Dieser Fehler tritt unregelmäßig auf und ich konnte die Ursache noch nicht feststellen. Jedoch tritt diese Fehler in zwei weiteren Haushalten, bei identischen Programaufbau, nicht auf. Dort habe ich seit ca. zwei Monaten eine durchgehende / fehlerfreie Erfassung aller Messwerte.

Ich vermute, dass dies an der Anzahl an Messwerten liegt, welche ich in die csv-Datei schreibe bzw. am Schreibintervall. In dem nicht funktionierenden Haushalt sind dies 116 Messwerte, welche je Minute geschrieben werden. In den anderen Haushalten nur ca. 70.

Hat jemand schon mal eine ähnliche Erfahrung mit den DLOG-Bausteinen gemacht?
Bzw. kann es sein, dass die DLOG-Bausteine ab einer bestimmten Anzahl an zu schreibenden Werten "überlastet" sind?

Für eure Hilfe schon mal jetzt DANKE

peewit

hallo

ein anhaltspunkt ist das du in der fehlerhaften applikation mehr datenfelder aufzeichnest

der datenlogger verwendet intern einen zwischenspeicher "UNI_CIRCULAR_BUFFER_DATA"
der kann natürlich auch mal überlaufen bzw. überlastetet sein was dann zu datenverlust führen kann

in der doku der network.lib im kapitel 4.25 ist die datensatruktur erklärt

du solltest in der applikation online mal diverse werte in der datenstruktur kontrollieren

BUF_USED                   Aktueller Füllstand (0-100 %)
BUF_USED_MAX          Maximal erreichter Füllstand
BUF_DATA_CNT           Anzahl Schreibvorgänge
BUF_DATA_LOST         Anzahl Schreibvorgänge mit Datenverlust


möglich ist also eine überlast aber auch ein programmierfehler deinerseits der sich halt nur unter bestimmten bedingungen zeigt

natürlich auch ein fehler in der lib aber........
bei meinen tests konnte ich dieses verhalten aber noch nie sehen

Link5789

Danke, für die schnelle Antwort!!

Ich werde mein Programm mal auf die genannten Parameter hin untersuchen

peewit

übrigens

ich habe den daten logger so konzipiert das dieser nicht viel zykluszeit braucht bzw. das ganze in vielen einzelzyklus abarbeitet

wenn du den datenlogger nur mit 100ms Intervall aufrufst dann erzeugst du ein nadelöhr und verschlimmerst das ganze noch

den datenlogger im normalen task laufen lassen