hallo christian
ich habe mir das alles nochmals angesehen
es gibt keine andere möglichkeit wenn man eine bestehende datei beliebig beschreiben möchte als das man den append mode benutzt.
darum kann ich die bibliothek gar nicht anpassen (verbessern)
deswegen habe ich die Fa. SEW-Eurodrives kontaktiert und sie von dem Problem informiert
inzwischen habe ich auch schon eine rückmeldung erhalten
der fehler in der syslibfile.lib bei deiner SPS wurde mir bestätigt, und wird auch höchstwahrscheinlich mit erscheinen der nächsten firmware-release behoben sein.
du solltest deshalb in ein paar wochen nachschauen ob es eine neue firmware für deine sps gibt.
die aktuelle firmware deiner sps lautet "1820 7588.15 Build 1081" diese hat aber noch diesen besagten "schönheitsfehler"
sobald du eine neuere version findest, solltest du diese ausprobieren !
einen schönen dank noch an den netten techniker von SEW-Eurodrives !
Hallo
Ich habe mich, wie versprochen, dem Thema angenommen.
Aus unserer IEC-Doku geht folgende Zuordnung der Mode-Argumente für den fOpen-Baustein hervor:
Priorität | IEC-Modus | C-fopen Umsetzung |
1 (höchste) | „rw“ (oder „wr“) | „w+b“ |
2 | „r" | „rb“ |
3 | „w" | „wb“ |
4 (geringste) | „a" | „ab“ |
Umsetzung laut
http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.htmlOpening a file with append mode (a as the first character in the mode argument) shall cause all subsequent writes to the file to be forced to the then current end-of-file, regardless of intervening calls to fseek().
Das Setzen des Filepointers ans Ende der Datei ist somit keine Fehlfunktion.
Nach Rücksprache mit unserer Firmwareentwicklung wird die Funktion, auch aus Gründen der Abwärtskompatibilität, nicht geändert.
Sie haben trotzdem die Möglichkeit die Funktion ohne Firmwareänderung wie gewünscht zu verwenden.
Sie müssen statt der Funktion "SysFileOpen" aus der "SysLibFile.lib" die Funktion
"SysFileStreamFOpen" aus der
"SysLibFileStream.lib" nutzen.
An diesem Baustein können die Argumente wie in C üblich übergeben werden.
FUNCTION SysFileStreamFOpen : DWORD
(* wrapper for ANSI C function
FILE *fopen( char *filename, char *mode );
*)
VAR_INPUT
FileName: STRING;
Mode: STRING [20]; (* can contain 'w' (write), 'r' (read), 'a' (append), '+', 'b', 't' *)
END_VAR
VAR
END_VAR
mfg
Christian@SEW