Hallo zusammen,
für mein Projekt soll ich Daten vom CANbus in regelmäßigen abständen auf eine SD-Karte schreiben mithilfe einer Wago 750-8203. Leider habe ich das Problem das mit meinem Code der Schreibvorgang extrem lange dauert, denn wenn möglich soll ich alle 10ms einmal die Daten loggen, doch bei mir wird höchstens jede Sekunde einmal in die Datei geschrieben.
Das Projekt muss ich in Codesys 3 schreiben, daher kann ich "WAGO_Datalogger_02.lib" nicht verwenden, da diese library wohl nur in Codesys 2 funktioniert.
Ich habe das "FileUtilitiesExample.package" aus dem Codesys Store als Template verwendet, der Code sieht in etwa wie folgt aus:
CASE istate OF
Der Code wird auch im Tempo meines Timerbausteins wiederholend ausgeführt, doch bis die Daten letztendlich in der CSV Datei gespeichert sind dauert es wesentlich länger und man kann auch nicht einsehen, wann Linux den schreibvorgang beendet hat.
Gibt es also eine Möglichkeit den Code zu ändern oder eine bessere Variante den Schreibvorgang umzusetzen?
Denn selbst in der Beschreibung der "WAGO_Datalogger_02.lib" heißt es: "speichert Eintraege [...] in einem Intervall von min. einer Sekunde in eine CSV-Datei"
Vielen Dank für jegliche Lösungsansätze.
Etty
für mein Projekt soll ich Daten vom CANbus in regelmäßigen abständen auf eine SD-Karte schreiben mithilfe einer Wago 750-8203. Leider habe ich das Problem das mit meinem Code der Schreibvorgang extrem lange dauert, denn wenn möglich soll ich alle 10ms einmal die Daten loggen, doch bei mir wird höchstens jede Sekunde einmal in die Datei geschrieben.
Das Projekt muss ich in Codesys 3 schreiben, daher kann ich "WAGO_Datalogger_02.lib" nicht verwenden, da diese library wohl nur in Codesys 2 funktioniert.
Ich habe das "FileUtilitiesExample.package" aus dem Codesys Store als Template verwendet, der Code sieht in etwa wie folgt aus:
CASE istate OF
0: FileOpen(...)
IF FileOpen.xDone THEN
istate:=1;
END_IF
1:FileWrite(...)
IF FileWrite.xDone THEN
istate:=2;
END_IF2: FileClose(...)
END_CASEIF FileClose.xDone THEN
istate:=3;
END_IF
3: xError := FALSE;Der Code wird auch im Tempo meines Timerbausteins wiederholend ausgeführt, doch bis die Daten letztendlich in der CSV Datei gespeichert sind dauert es wesentlich länger und man kann auch nicht einsehen, wann Linux den schreibvorgang beendet hat.
Gibt es also eine Möglichkeit den Code zu ändern oder eine bessere Variante den Schreibvorgang umzusetzen?
Denn selbst in der Beschreibung der "WAGO_Datalogger_02.lib" heißt es: "speichert Eintraege [...] in einem Intervall von min. einer Sekunde in eine CSV-Datei"
Vielen Dank für jegliche Lösungsansätze.
Etty