-> Hier kostenlos registrieren
Hallo SPS Gemeinde,
ich bin absoluter Neuling im Gebiet der SPS. Als System habe ich eine IndraMotion MTX Performance auf einer IndraControl L65 mit diversen Eingängen und Ausgängen. Als Panel PC habe ich ein VPP40 zur Verfügung.
Nun möchte ich die gemessene Spannung eines Analogeingang bei jedem Zyklus mit Zeitstempel in eine .csv Datei schreiben. Ich bin mir bewusst, dass dies die Zyluszeit (erheblich?) verlängern wird. Da dies aber erstmal nur zum Testen eines Sensors ist, sollte dies erst mal nicht wichtig sein und später wieder entfernt werden. Die .csv sollte verzugsweise auf dem Panel PC erstellt und gespeichert werden. Falls das nicht gehen sollte, ist es auch kein großes Problem wenn die Datei auf dem internen Speicher der Steuerung gespeichert wird, da der Sensor erstmal immer nur einige Minuten laufen wird und die Datei deshalb nicht sehr groß sein wird.
Ich habe mich natürlich erstmal durch die Anleitungen der IndraControl geschlagen und geschaut ob es für meinen Anwendungsfall schon etwas passendes gibt, bin aber leider nicht fündig geworden. Man kann zwar Logfiles erstellen lassen, diese beziehen sich aber nur auf Ereignisse oder Fehler und nicht auf bestimmte Variablen. Habe ich vielleicht nach den falschen Buzzwords gesucht? Ich kann mir kaum vorstellen, dass es nicht die Möglichkeit gibt Sensordaten zu loggen.
Nichtsdestotrotzt habe ich mich mal an einem Code versucht. In der Simulation funktioniert der Code. Da ich aber leider keine Erfahrung habe, frage ich euch um Rat. Kann das so überhaupt funktionieren, bzw. erfüllt das den Zweck? In diesem Fall könnte ich ja nur auf der Steuerung selbst speichern oder? Bin für jeden Tipp und Anmerkung dankbar.
Grüße
ich bin absoluter Neuling im Gebiet der SPS. Als System habe ich eine IndraMotion MTX Performance auf einer IndraControl L65 mit diversen Eingängen und Ausgängen. Als Panel PC habe ich ein VPP40 zur Verfügung.
Nun möchte ich die gemessene Spannung eines Analogeingang bei jedem Zyklus mit Zeitstempel in eine .csv Datei schreiben. Ich bin mir bewusst, dass dies die Zyluszeit (erheblich?) verlängern wird. Da dies aber erstmal nur zum Testen eines Sensors ist, sollte dies erst mal nicht wichtig sein und später wieder entfernt werden. Die .csv sollte verzugsweise auf dem Panel PC erstellt und gespeichert werden. Falls das nicht gehen sollte, ist es auch kein großes Problem wenn die Datei auf dem internen Speicher der Steuerung gespeichert wird, da der Sensor erstmal immer nur einige Minuten laufen wird und die Datei deshalb nicht sehr groß sein wird.
Ich habe mich natürlich erstmal durch die Anleitungen der IndraControl geschlagen und geschaut ob es für meinen Anwendungsfall schon etwas passendes gibt, bin aber leider nicht fündig geworden. Man kann zwar Logfiles erstellen lassen, diese beziehen sich aber nur auf Ereignisse oder Fehler und nicht auf bestimmte Variablen. Habe ich vielleicht nach den falschen Buzzwords gesucht? Ich kann mir kaum vorstellen, dass es nicht die Möglichkeit gibt Sensordaten zu loggen.
Nichtsdestotrotzt habe ich mich mal an einem Code versucht. In der Simulation funktioniert der Code. Da ich aber leider keine Erfahrung habe, frage ich euch um Rat. Kann das so überhaupt funktionieren, bzw. erfüllt das den Zweck? In diesem Fall könnte ich ja nur auf der Steuerung selbst speichern oder? Bin für jeden Tipp und Anmerkung dankbar.
Grüße
Code:
PROGRAM LOGGING
VAR
writebuffer: STRING(250);
filenumber: DWORD;
filemode:STRING(1):='a';
delimiter_file: STRING(1):= ';';
delimiter_time: STRING(1):= ':';
voltage: STRING(10);
output: STRING(250);
hour: STRING(2);
minute: STRING(2);
second: STRING(2);
millis: STRING(3);
timestamp: STRING(15);
path: STRING(250) :='S:\..';
systime:SystemTimeDate;
END_VAR
hour := UINT_TO_STRING(systime.Hour);
minute := UINT_TO_STRING(systime.Minute);
second := UINT_TO_STRING(systime.Second);
millis := UINT_TO_STRING(systime.Milliseconds);
voltage := INT_TO_STRING(Analog_In4);
timestamp := CONCAT(hour,delimiter_time);
timestamp := CONCAT(timestamp,minute);
timestamp := CONCAT(timestamp,delimiter_time);
timestamp := CONCAT(timestamp,second);
timestamp := CONCAT(timestamp,delimiter_time);
timestamp := CONCAT(timestamp,millis);
output := CONCAT(timestamp,delimiter_file);
output := CONCAT(output,voltage);
output := CONCAT(output,'\n');
filenumber := SysFileOpen (path, filemode);
writebuffer := output;
SysFileWrite(filenumber, ADR(writebuffer), LEN(writebuffer));
SysFileClose(filenumber);