46
BECKHOFF / Re: DLOG_STORE_FILE_CSV für Hochfrequente Daten
« am: 24. April 2020, 13:15:32 »
Hallo
Für das was du machen möchtest benötigst du eine hochperformante Steuerung
Was verwendest du denn überhaupt für eine ?
Ein Grundproblem ist das alles unter 1ms mal prinzipiell nicht vorgesehen ist
Das Problem mit TRIG_M - Positive Flanke ist real keines denn damit du so etwas machen kannst benötigst du so wieso eine Steuerung die weit unter ms arbeitet
du kannst auch theoretisch den datalog baustein einfach zweimal hintereinander aufrufen mit TRIG_M 0 / 1
Wenn du wirklich im 1ms takt loggen möchtest musst du sowieso einen task wählen der ein vielfaches schneller aufgerufen wird als 1ms
Was hinzukommt ist das der datenlogger beim daten speichern und beim schreiben des datenbuffers in eine Datei asynchron arbeitet
und diese vorgänge viele zyklen benötigen
bei den meisten steuerungen ist das Dateisystem relativ langsam angebunden sodass du mehr daten produzierst als überhaupt schnell genug gespeichert werden können
Das was du programmiert hast ist so nicht funktionsfähig
Für jeden Wert den du loggen willst benötigst du einen eigene Bausteininstant
du hast jedoch in deinem Code den fb_DLOG_REAL zweimal drinnen mit der gleichen Instant
somit wird auch die anzahl der datenspalten korrekt erkannt
Auch das mit den beiden for schleifen kann ich nicht nach vollziehen
du solltest mal beginnen mit einen normalen sauberen programm das mal prinzipiell funktioniert und vorab mal nur alle 10 sekunden etwas loggt
er wenn das korrekt funktioniert solltest du an die optimierungen machen und die zeiten herabzusetzen
irgendwann wist du vermutlich merken das die sps die daten nicht schnell genug speichern kann und es zu fehlern dadurch kommt
schau dir doch mal die vorhandenen datalogg demo bausteine in (FUP geschrieben) an
Für das loggen in ms takt benötigst du wie gesagt eine hochperformante sps oder eine log-funktion innerhalb der steuerung
Hast du mal ausgerechnet wieviele bytes du pro sekunde im log-file produzierst ?
Für das was du machen möchtest benötigst du eine hochperformante Steuerung
Was verwendest du denn überhaupt für eine ?
Ein Grundproblem ist das alles unter 1ms mal prinzipiell nicht vorgesehen ist
Das Problem mit TRIG_M - Positive Flanke ist real keines denn damit du so etwas machen kannst benötigst du so wieso eine Steuerung die weit unter ms arbeitet
du kannst auch theoretisch den datalog baustein einfach zweimal hintereinander aufrufen mit TRIG_M 0 / 1
Wenn du wirklich im 1ms takt loggen möchtest musst du sowieso einen task wählen der ein vielfaches schneller aufgerufen wird als 1ms
Was hinzukommt ist das der datenlogger beim daten speichern und beim schreiben des datenbuffers in eine Datei asynchron arbeitet
und diese vorgänge viele zyklen benötigen
bei den meisten steuerungen ist das Dateisystem relativ langsam angebunden sodass du mehr daten produzierst als überhaupt schnell genug gespeichert werden können
Das was du programmiert hast ist so nicht funktionsfähig
Für jeden Wert den du loggen willst benötigst du einen eigene Bausteininstant
du hast jedoch in deinem Code den fb_DLOG_REAL zweimal drinnen mit der gleichen Instant
somit wird auch die anzahl der datenspalten korrekt erkannt
Auch das mit den beiden for schleifen kann ich nicht nach vollziehen
du solltest mal beginnen mit einen normalen sauberen programm das mal prinzipiell funktioniert und vorab mal nur alle 10 sekunden etwas loggt
er wenn das korrekt funktioniert solltest du an die optimierungen machen und die zeiten herabzusetzen
irgendwann wist du vermutlich merken das die sps die daten nicht schnell genug speichern kann und es zu fehlern dadurch kommt
schau dir doch mal die vorhandenen datalogg demo bausteine in (FUP geschrieben) an
Für das loggen in ms takt benötigst du wie gesagt eine hochperformante sps oder eine log-funktion innerhalb der steuerung
Hast du mal ausgerechnet wieviele bytes du pro sekunde im log-file produzierst ?