Hallo,
vielen Dank für die schnelle Antwort. Die Log-Funktion benötige ich für eine Maschine die hoch-frequent betrieben wird. Diese Funktion soll nur in bestimmten Szenarien aktiviert werden und soll nicht dauerhaft laufen.
Der Code der oben zu sehen ist, habe ich schnell angepasst um hier ins Forum zu posten. Da habe ich jetzt selber schon ein paar Fehler gesehen. Der original Code funktioniert, aber bei etwa mehr als 3 Logs pro ms bekomme ich Probleme.
Die Idee mit dem FOR Loop war um mehrere schritte in eine ms zu machen. Alternativ könnte ich auch mein Base time zu z.B. 100 Mikrosekunden senken. Würde das mehr helfen als ein FOR Loop zu machen? Aktuell benutze ich eine Steuerung von Beckhof CX5130.
Bei meinem Code konnte ich die gleiche Instanz von fb_DLOG_REAL ohne Probleme benutzen um verschiedene Spalten (COLUMN) zu schreiben. Gibt es Probleme die gleiche Instanz zu benutzen wenn COLUMN nicht gleich ist?
Das Demo Programm habe ich mir angeschaut und schaffe auch das ganze ohne Probleme zu betreiben mit Logs über 2ms. Um schnellere Logs zu machen musste ich viele Anpassungen machen aber kriege es nicht schneller als 3 logs pro ms.
Eine andere Idee wäre das ganze in einem WHILE LOOP zu setzen bis die variablen in der CSV geschrieben wurden oder der Buffer leer ist. Gibt es eine Variable die ich mir anschauen kann zu sehen ob die Werte in der CSV geschrieben wurden? Mach diesen Beispiel hier unten Sinn?
b_TRIGGER_M wird mittels einen Clock jede 0,1ms getriggert => log in 10kHz
fb_DLOG_DT(X:=X, COLUMN:='Timestamp');
fb_DLOG_REAL(X:=X, VALUE:= arr_VALUE1, COLUMN:=COLUMN1, N:=2);
fb_DLOG_STORE_FILE_CSV(X:=X, SAVE_DATA:=save_data, ENABLE:=b_enable_log, TRIG_M:=b_TRIGGER_M, TRIG_T:=T#1H, SEP:=59,
FILENAME:= 'TestFile#R.csv', DTI:=dt_Current, AUTO_CLOSE:= T#10MS, ERROR_C=>error_c, ERROR_T=>error_t);
b_VALUES_WRITTEN muss irgend woher gelesen werden um zu wissen ob Werte in der CSV geschrieben wurde. Woher weißt man ob die Werte in der CSV geschrieben sind ?
While NOT b_VALUES_WRITTEN DO
//leave trigger at FALSE so last values are written to CSV
b_TRIGGER_M := FALSE;
fb_DLOG_DT(X:=X, COLUMN:='Timestamp');
fb_DLOG_REAL(X:=X, VALUE:= arr_VALUE1, COLUMN:=COLUMN1, N:=2);
fb_DLOG_STORE_FILE_CSV(X:=X, SAVE_DATA:=save_data, ENABLE:=b_enable_log, TRIG_M:=b_TRIGGER_M, TRIG_T:=T#1H, SEP:=59,
FILENAME:= 'TestFile#R.csv', DTI:=dt_Current, AUTO_CLOSE:= T#10MS, ERROR_C=>error_c, ERROR_T=>error_t);
b_VALUES_WRITTEN muss hier aktualisiert werden
END_WHILE