String in eine Datei schreiben beim CP

olitheis

Level-1
Beiträge
488
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hatte vor einiger Zeit eine Frage zu einem BK9000 und String in eine Datei schreiben.
-Also Datei erzeugen oder öffnen.
-Dann den String in die Datei schreiben (anhängen ans Ende)
-Und Datei wieder schliessen
Am Ende hat auch alles recht gut funktioniert, jedoch jetzt möchte ich das gleiche mit einem CP62... machen aber der String wird nicht mehr geschrieben.
1. Frage kann ich die gleichen FB's aus der gleichen Lib verwenden, bzw. welche FB's aus welcher Lib muss ich verwenden?
(FB_FileOpen, FB_FilePuts, FB_FileClose)
Das Problem ist, dass mir der FB_FileOpen sofort einen bError=True gibt sobald ich versuche meine c:\test.txt zu öffnen.
Bei der NetID muss ich doch bei allen drei Bausteinen die des CP angeben, richtig?
Und die datei, in die geschrieben wird liegt dann auch auf dem CP, oder?
Vielen Dank
Oli
 

Anhänge

  • fileoperation.jpg
    fileoperation.jpg
    11 KB · Aufrufe: 65
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ja, auf dem CP läuft Win CE.
Die Fehlercodes:
FB_FileOpen: 1804
FB_FilePuts: 1795
FB_FileClose: 1795
ich habe dazu meine Bausteine mal mit angehängt.
Vielleicht kann man hier erkennen, wo der Fehler liegt.
Kann ich so überhaupt auf dem CP eine Datei anlegen? Oder kann bzw. muss ich
auf Netzwerk oder USB-Flash speichern?
 

Anhänge

  • Variablen.jpg
    Variablen.jpg
    81 KB · Aufrufe: 30
  • Baustein.jpg
    Baustein.jpg
    54,6 KB · Aufrufe: 43
Zuletzt bearbeitet:
Na anstelle von C:\ wählst du die passende Verzeichnisstruktur deines CE.

Logg dich mal mit CERHOST ein und schau mit dem Explorer die Platte an.
Hab kein CE hier. Ich meine es war irgend was mit \Hard Disk\...
 
Du könntest auch den nackten Dateinamen als sPathName verwenden und für ePath den Wert PATH_BOOTPATH. Dann wird die Datei weitgehend Plattformunabhängig im TwinCAT Boot-Ordner erzeugt.

Gruß,
witkatz
 
Super, das mit BOOTPATH hat funktioniert.
Ich habe gelesen, dass nur lokal auf dem System Dateien angelegt und geschrieben werden können.
Nun möchte ich aber nicht die CF Karte mit meiner Datei "überfüllen".

Kann ich auch mit einer entsprechenden Pfadangabe auf einen gesteckten USB-Stick speichern?
Danke nocheinmal
 
Schau doch mal im Explorer unter welchem Pfad dein USB-Stick liegt. Diesen kannst du dann in deinem FB_FileOpen-Baustein verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, es ist (in meinem Fall) 'Hard Disk2\file1.txt' zum Schreiben auf den USB-Stick. Klappt prima.

Eine Frage bzw. Bitte habe ich noch:
Denkst Du, es ist Möglich, ein Macro für Excel zu schreiben, indem ich dann
meinen *.txt File über einen Button einlesen kann.
Also Excel Datei öffnen,
Button betätigen,
die zu importierende datei suchen/auswählen
oder halt immer aus dem gleichen verzeichnis heraus öffnen,
und dann die 20 Werte, die ich Semikolon getrennt in meiner Datei stehen habe einlesen.
Das müsste dann so aussehen, dass in den Zellen A1-T1 (oberste Zeile) die Bezeichnung für die einzelnen Werte stehen (z.B. Temp1, Temp2, Temp3...) und jeweils darunter die entsprechenden Werte (Zeile für Zeile, so wie ich sie aus TwinCAT in die Datei geschrieben habe).
Das wäre das Non+Ultra :-D.
Zotos hat mir da auch schon einmal bei etwas ähnlichem geholfen.
Nochmals Danke
 
Zuletzt bearbeitet:
Das öffnen mit Excel ist eigentlich nicht das Problem. Die txt Datei lässt sich auch so problemlos mit Excel öffnen. Nur müsste ich danach alles händisch umformatieren (Text in Spalten, Variablenbezeichnungen zu den Spalten hinzufügen usw...)
Mir geht es hautpsächlich darum, dass ich die Daten relativ einfach "in Form" bringen kann.
Also nachdem die Daten von TwinCAT aufgezeichnet wurden, möchte ich in Excel ein fertiges Arbeitsblatt öffnen, dass per Knopfdruck die txt Datei einliest und in eine vorgeferetigte Tabelle einträgt.
Das wäre perfekt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das öffnen mit Excel ist eigentlich nicht das Problem.

Hallo,
aber es ist die Lösung.

Wenn du wie schon vorgeschlagen, in der ersten Zeile die Spaltenbezeichnungen in die Datei schreibst, in der nächsten Zeile die werte und die Spalten mit einem ';' oder Tab oder ',' trennst, dann hast du was du willst - musst du nur noch xxx.csv benennen, damit Excel das als CSV interpretiert....

bg
 
Prinzipiell ist das richtig, aber zum Einen habe ich nicht die Möglichkeit, die erste Zeile meiner Datei zu beeinflussen, da sie von TwinCAT erzeugt wird. Das möchte ich auch nicht. Und zum Anderen möchte ich das in Excel über ein Makro "automatisieren".

Manuell würde ich es so machen:
1. Excel öffnen
2. Öffnen: Beispiel.txt (Daten sind hier Semikolon getrennt)
3. Textkonvertierungsassi: Daten Getrennt
4. Trennzeichen: Semikolon
5. Fertigstellen

Jetzt sind die Daten nacheinander in der 1. Zeile in Zellen verteilt.

Aber: ich möchte das halt über einen einzigen Button klick realisieren, d.h. Button klicken, Aufforderung zum Öffnen der .txt Datei. Werte einlesen wie oben beschrieben, jedoch erst ab der 2. Zeile, da in der ersten Zeile meine Header stehen.
Kann auch sein, dass ich da jetzt etwas auf dem Schlauch stehe.
Danke euch
Oli
 
Bezugnehmend auf Deine PN:

Keine Ahnung ob ich die Aufgabe verstanden habe, aber ich habe mal eines meiner Makros angepasst.

Siehe Anhang
 

Anhänge

  • olitheis_CSV_V0.1.zip
    17,7 KB · Aufrufe: 22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zotos,
das ist schon sehr gut so.
Könntest Du das evtl. noch etwas für mich erweitern:

1. den Button für Open CSV anders positionieren: so ca. auf A3 damit ich oberhalb noch etwas Platz für Überschriften und Header habe.

2. einen 2. Button anlegen so bei C3, der folgende Funktion hat:
öffnet eine Eingabemaske in der die Spalten Überschriften nacheinander eingegeben werden können
Variable1: in C8
Variable2: in D8
Variable3: in E8
.
.
.
Variable20: in V8

Spalte A sollte generell vorgesehen sein für das Datum
Spalte B sollte generell vorgesehen sein für die Zeit
(die beiden variablen muss ich noch zu meinem String hinzufügen, die fehlen noch)
Denkst Du, das ist machbar?
Vielen Dank
Oli
 
Zurück
Oben