WinCC flexible Script Zeile einfügen bzw CR LF

Fanta-Er

Level-2
Beiträge
198
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

ich habe ein Problem oder sehe mal wieder den Wald vor lauter Bäumen nicht mehr.

Aufgabe:
Erstelle eine *.csv Datei auf einem Datenträger //Kein Problem erledigt
Schreibe das aktuelle Ergbeniss in die *.csv //Kein Problem erledigt
Sorge dafür, das dass letzte Ergebnis immer OBEN steht. //WHat??? KEINE Ahnung.

Mit codesy ist die Aufgabe kein Problem.
Bei Siemens habe ich keine Möglichkeit gefunden, in der geöffneten Datei, nach dem Header alles eine Zeile nach unten zu schieben (CR,LF) und dann dort das letzte Ergebniss wegzuschreiben/einzutragen.

Support in Nürnberg angerufen, nach 3,5h Rückruf bekommen um dann wurde mir erklärt wo ich alle unterstützten Befehle in der Hilfe suchen/finden kann. Auf die Frage ob es geht oder nicht, sollte ich selbst mal schauen.....Klasse.
Nicht dumm gewesen nach 2Tagen wieder angerufen. Rückruf von anderen Mitarbeiter, Inhaltde Gesprächs gleich. Die guten Leute scheinen nicht mehr da oder in einer anderen Abteilung zu sein.

Wäre schön wenn jemand mal einen Tipp für mich hätte oder sogar mir den "möglichen" Syntax nennen kann.

Es sind leider zu viele Werte, um sie in der CPU zwischen zu speichern und jedesmal die Datei neu zu erstellen.

Danke im vorraus.
Fanta;)

Edit: mit der Suchfunktion habe ich nichts gefunden.
 
Du kannst die Datei zeilenweise einlesen, im Script temponär in einen Array zwischenspeichern.
Neue Zeile schreiben und dann das Array dahinter hängen. Das ganze dann speichern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmmm
wir setzen aber auch mp377 ein.
ein datensatz besteht meist aus: string(name); real; real; real; real; real; real; DOT
jeden tag eine neue datei.
die taktzeit ist teilweise bei <30 sec im dreischicht betrieb. d.h. 24h= 1440min= 2880 datensätze.
das dürfte zu viel für ein array im flexible werden.

werde es trotzdem mal versuchen. Danke.

noch wer einen ansatz?
 
So als Idee:
Die Datei mit den aktuellen Daten sei "daten.csv"

- "daten.csv" in "daten_alt.csv" umbenennen
- Neue Datei "daten.csv" erzeugen und die aktuellen Daten in diese Datei schreiben
- "daten_alt.csv an "daten.csv" anhängen
- "daten_alt.csv löschen

Ich weiß allerdings nicht ob die VB Dateioperationen das Aneinanderhängen von Dateien ermöglicht.

Edit:
Falls das nicht geht, kannst du die Datei "daten_alt.csv" zeilenweise einlesen und in die neue Datei wieder hineinschreiben. Die komplette Datei in ein internen Speicher einlesen ist nicht notwendig.
 
Zuletzt bearbeitet:
Warum so kompliziert denken?

- die vorhandene Datei öffnen zum Lesen und eine neue Datei anlegen zum Schreiben
- die Header-Zeile einlesen und in die neue Datei schreiben
- neue Datensatz-Zeile in die neue Datei schreiben
- in einer Schleife bis zum Dateiende je eine vorhandene Datensatzzeile lesen und in die neue Datei schreiben

Performance:
Egal wie man es programmiert - da im Anfangsbereich einer Datei etwas eingefügt wird, bewirkt diese Operation auf jeden Fall ein komplettes neu-Schreiben der Datei auf dem Datenträger. (es sei denn, man fügt genau ein Vielfaches eines Filesystem-Clusters ein und das Filesystem ist so intelligent, das zu erkennen...) Das hat nichts mit Codesys vs. Siemens zu tun.

Sollte das MP377 es nicht schaffen, die vielleicht bis zu 200kByte in < 30 Sekunden neu zu schreiben, dann mache mehr als eine Datei pro Tag mit weniger als 2880 Datensätzen oder sammele die neuen Datensätze in einem Puffer und schreibe die dann nur alle 5 Minuten in die Datei oder sowas ...

Welche Datenträger bzw. Memory Cards benutzt Du?

Harald
 
Zurück
Oben