Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Fb_fileOpen Fb_fileClose Fb_file_write

  1. #1
    Registriert seit
    01.05.2007
    Beiträge
    100
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich muss mehrere werte nacheinander in eine Textdatei schreiben. Das Öffnen und schreiben sowie das schließen funktioniert auch.
    Leider wird beim nächsten Durchgang kein neuer eintrag ans Ende der Datei angehängt.

    Laut Information System ist aber FOPEN_MODEAPPEND "a": Öffnet eine Datei zum Schreiben am Ende der Datei (anhängen). Wenn die Datei nicht existiert, wird zuerst eine neue angelegt.

    Hab Ich da einen Denkfehler?

    Vielen Dank für eure Hilfe

    CASE step OF
    (* open destination file *)
    1: fbFileOpen( bExecute := FALSE );
    fbFileOpen( sNetId := '',
    sPathName := 'C:\xyz.txt',
    nMode := FOPEN_MODEAPPEND ,
    ePath := PATH_GENERIC,
    tTimeout := t#5s,
    bExecute := TRUE );
    Step := Step+1;

    2: fbFileOpen( bExecute := FALSE );
    IF ( NOT fbFileOpen.bBusy ) THEN
    IF ( fbFileOpen.bError ) THEN
    nErrId := fbFileOpen.nErrId;
    bError := TRUE;
    Step := 50;
    ELSE
    hDestFile := fbFileOpen.hFile;
    Step := Step + 1;
    END_IF
    END_IF

    3:
    fbFileWrite( bExecute := FALSE );
    fbFileWrite( sNetId:='',
    hFile:=hDestFile,
    pWriteBuff:= ADR(buffRead),
    cbWriteLen:=cbReadLength,
    bExecute:=TRUE,
    tTimeout:=t#5s);
    Step := Step + 1;

    4:
    fbFileWrite( bExecute := FALSE );
    IF ( NOT fbFileWrite.bBusy ) THEN
    IF ( fbFileWrite.bError ) THEN
    nErrId := fbFileWrite.nErrId;
    bError := TRUE;
    Step := 50;
    END_IF
    Step := Step + 1;
    END_IF

    5:
    fbFileClose( bExecute := FALSE );
    fbFileClose( sNetId:='',
    hFile:=hDestFile,
    bExecute:=TRUE,
    tTimeout:=t#5s );
    Step := Step + 1;

    6:
    fbFileClose( bExecute := FALSE );
    IF ( NOT fbFileClose.bBusy ) THEN
    IF ( fbFileClose.bError ) THEN
    nErrId := fbFileClose.nErrId;
    bError := TRUE;
    END_IF
    Step := 50;
    hDestFile := 0;
    END_IF

    50: (*error or ready => cleanup*)
    IF ( hDestFile <> 0 ) THEN
    Step := 5; (* close the destination file*)
    ELSE
    Step := 0; (* ready *)
    bBusy := FALSE;
    END_IF

    END_CASE
    Zitieren Zitieren Fb_fileOpen Fb_fileClose Fb_file_write  

  2. #2
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Wieso setzt du in den Schritten 2, 4 und 6 die Bausteine zurück bevor du deren Status auswertest? Das macht doch keinen Sinn.
    A programmer is just a tool which converts caffeine into code.

  3. #3
    Registriert seit
    15.08.2011
    Beiträge
    383
    Danke
    2
    Erhielt 73 Danke für 71 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Versuch mal beim Öffnen der Datei
    nMode := FOPEN_MODEAPPEND OR FOPEN_MODETEXT

    Mac203

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 20.10.2011, 22:36
  2. Beckhoff TwinCAT FUNCTION_BLOCK FB_FileOpen
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 02.01.2011, 20:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •