Datei auf Zielsystem erzeigen - PROBLEM !

maddi67
2007-02-12
2007-02-21
  • maddi67 - 2007-02-12

    Hallo !

    Ich arbeite mit einem Fred P300 und Codesys.

    Ich möchte auf dem Zielsystem eine Datei erzeugen um darin Daten zu speichern.

    Habe dazu die SysLibFile in das Projekt eingebunden.

    Dann versuche ich mit folgendem Code eine Datei zu erzeugen:

    (hFile als DWORD deklariert)

    SzFilePath:='test.csv';

    hfile:=SysFileOpen(szFilePath,'w');

    hfile wird aber immer mit 0 zurückgegeben.

    Beim anschliessenden Schliessen mittels SysfileClose(hFile) schaltet sich

    das Zielsystem aus und wieder an.

    Die o.g. Syntax habe ich aus dem Beispiel hier im Forum, es funzt aber nicht.

    Was mache ich falsch ?

     
  • gravieren - 2007-02-12

    Hi

    Dein Problem ist vermutlich, dass du fortwähren Dateien öffnest.

    Bei jedem Zyklus öffnest du die Datei b.z.w. ein Filehandle.

    Bein 10 Zyklus hast du kein Filehandle mehr und gibt den Returnwert 0.

    Auch ein zerstören des Dateisystems ist möglich !

    (D.h. Filesystem auf deiner Steuerung neu formatieren und übertragen)

    (so funktioniert das zumindestens bei Wago)

    Zitat:
    hfile:=SysFileOpen(szFilePath,'w');

    Diese Zeile wird Zyklisch aufgerufen ? !

    nach ca. 50 ms hast du keine "handles" mehr

    Lade dir mal das Example von meiner Hompage.

    Target ändern, dann sollte es Funktionieren.

    Und wie immer gene zur stelle

     
  • maddi67 - 2007-02-13

    Hallo gravieren,

    erst mal Danke für Deine Antwort.

    Die von Dir vermuteten Fehler sind es aber nicht, d.h. der Aufruf wird

    genau einmal gemacht und anschliessend mit SysFileClose wird (würde)

    eine geöffnete Datei auch wieder geschlossen.

    Habe aus zienlich verlässlicher Quelle erfahren das mein Zielsystem

    erzeugen von Dateien auf z.B. einer RAM-Disk nicht unterstützt.

    mfG MArtin

     
  • maddi67 - 2007-02-14

    An dieser Stelle mal ein Dank an die Fa. Elrest für die freundliche Hilfe !

    Man kann eine Datei auf dem ELREST Zielsystem erzeugen und auch Daten darin abspeichern.

    Man muß halt nur wissen wie.

    Habe schlicht und einfach einen Fehler in der Pfadangabe gemacht.

    Jetzt geht es.

     
  • maddi67 - 2007-02-14

    An dieser Stelle mal ein Dank an die Fa. Elrest für die freundliche Hilfe !

    Man kann eine Datei auf dem ELREST Zielsystem erzeugen und auch Daten darin abspeichern.

    Man muß halt nur wissen wie.

    Habe schlicht und einfach einen Fehler in der Pfadangabe gemacht.

    Jetzt geht es.

     
  • gravieren - 2007-02-17

    Hi maddi67

    Zitat:
    Habe schlicht und einfach einen Fehler in der Pfadangabe gemacht.
    Jetzt geht es.

    Verräts du mir die richtige Pfadangabe/Unterschiede.

    War mein examples nicht für Elrest gültig / richtig ?

     
  • maddi67 - 2007-02-21

    Hallo Gravieren,

    ja sicher verrat ich Dir das...ist ja kein Geheimnis.

    (Ich habe ein Fred P300, also weiß ich nicht ob es bei anderen

    ELREST Steuerungen genauso ist)

    Um auf dem Zielsystem Daten zu speichern muss der Aufruf aus

    CODESYS wie folgt erfolgen:

    hfile:=SysFileOpen(szfilepath,w);

    szFilepath muß dabei mit "/vfs/" beginnen, daran kann ein Dateiname

    angehängt werden. Also z.B.

    szfilepath:='/vfs/test.txt#;

    Auf dem Zielsystem befindet sich nämlich im flüchtigen Speicher ein Verzeichnis /vfs.

    In dieses können Daten geschrieben werden. (Allerdings nicht gerade

    sehr viele).

    Damit diese nach Ausschalten des Zielsystems erhalten bleiben,

    muß danach die Funktion FWSave aufgerufen werden, sonst ist die Datei wieder futsch.

    Damit werden die Daten dauerhaft gespeichert.

    Also: FWSave(4);

    MfG Martin

     

Log in to post a comment.