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

Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 44 von 44

Thema: FB_FileWrite Writeerror

  1. #41
    Registriert seit
    18.04.2011
    Beiträge
    16
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was du natürlich machen könntest, ist, dass du deine Variable Step als In-Out-Variable im FB deklarierst. Dann würdest du den FB mit Step = 1 aufrufen und er würde dir nach der Bearbeitung Step = 2 zurückgeben. Im nächsten Schritt musst du dann halt den FB mit Step = 2 aufrufen.
    Ich könnte aber auch die Variable einfach als Globale Variable nehmen oder? Ist zwar nicht das sinnvollste, aber vllt auf anhieb das leichteste

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

    Standard

    Zitat Zitat von sps-neuling1234 Beitrag anzeigen
    Ist zwar nicht das sinnvollste, aber vllt auf anhieb das leichteste
    Zwar auf Anhieb das leichteste, aber nichts von Dauer, weil unsauber. Eine VAR_IN_OUT ist die sauberste Variante.
    A programmer is just a tool which converts caffeine into code.

  3. #43
    Registriert seit
    18.04.2011
    Beiträge
    16
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Alles klar, dann werde ich mir das auch mal noch anschauen
    ich hab meinen code nun noch bissel verändert, eventuell kannst du ja mal sagen wie du ihn so findest, ich finds so glaub besser! Weil er am Anfang nun zwingend auf die steigende Flanke (Tastendruck) wartet.


    Code:
    PROGRAM MAIN
    VAR
        fbFileOpen    :FB_FileOpen;
        fbFileClose    :FB_FileClose;
        fbFileWrite    :FB_FileWrite;
    
        bBusy        :BOOL;
        bError1        :BOOL:=FALSE;
        bError2        :BOOL:=FALSE;
        bError3        :BOOL:=FALSE;
    
        nErrId        :UDINT;
    
        Step        :DWORD:=0;
        BuffRead    :ARRAY[1..6] OF DINT;
        hFileDatei    :UINT    := 0;(* file handle*)
        A1:         DINT:=1;
        A2:         DINT:=2;
        A3:         DINT:=3;
    
        LogString: STRING;
        fbRTrig: R_TRIG;
        blogOn: BOOL:=TRUE;
        halter: BOOL;
    END_VAR
    
    
    fbRTrig(CLK:=blogOn);
    
    IF fbRTrig.Q OR halter THEN
    
    
    CASE Step OF
    
        0:    (*Werte laden*)
    
        Buffread[1]:=A1;
        Buffread[2]:=A2;
        Buffread[3]:=A3;
    
       LogString := DINT_TO_STRING(BuffRead[1]);
       LogString := CONCAT(LogString, '$n');
       LogString := CONCAT(LogString, DINT_TO_STRING(BuffRead[2]));
       LogString := CONCAT(LogString, '$n');
       LogString := CONCAT(LogString, DINT_TO_STRING(BuffRead[3]));
       LogString := CONCAT(LogString, '$n');
       LogString := CONCAT(LogString, '$n');
    
       fbRTrig();(*nicht notwendig, nur zur Kontrolle des Wertes*)
       halter:=TRUE;
       Step:=1;
    
        1:    (* open file *)
    
                fbFileOpen(  bExecute := FALSE  );
                fbFileOpen(    sNetId := '',
                    sPathName := 'C:\Dokumente und Einstellungen\Administrator.BECKHOFFKR16\Desktop\test.txt',
                    nMode := FOPEN_MODEAPPEND OR FOPEN_MODETEXT,
                    ePath := PATH_GENERIC,
                    tTimeout :=t#3s,
                    bExecute := TRUE );
            Step :=  2;
    
        2:
    
           fbFileOpen(  );
            IF ( NOT fbFileOpen.bBusy ) THEN
                IF ( fbFileOpen.bError ) THEN
                        nErrId := fbFileOpen.nErrId;
                        bError1 := TRUE;
                       Step := 50;
                ELSE
                        hFileDatei := fbFileOpen.hFile;
                        Step := 3;
                END_IF
            END_IF
    
        3:    (*write data to file*)
    
        fbFileWrite( bExecute := FALSE );
        fbFileWrite(    sNetId:='',
                hFile:=hFileDatei,
                pWriteBuff:= ADR(LogString),
                cbWriteLen:= LEN(LogString),
                bExecute:=TRUE,
                tTimeout:=t#3s );
        Step := 4;
    
        4:
    
        fbFileWrite(  );
        IF ( NOT fbFileWrite.bBusy ) THEN
            IF ( fbFileWrite.bError ) THEN
                nErrId := fbFileWrite.nErrId;
                bError2 := TRUE;
             Step:=50;
            END_IF
        END_IF
         Step:=5;
    
        5:     (* close the file *)
    
        fbFileClose( bExecute := FALSE );
        fbFileClose(     sNetId:= '', 
                hFile:=hFileDatei,
                bExecute:=TRUE,
                tTimeout:=t#3s );
        Step := 6;
    
        6:
    
        fbFileClose(  );
        IF ( NOT fbFileClose.bBusy ) THEN
            IF ( fbFileClose.bError ) THEN
                nErrId := fbFileClose.nErrId;
                bError3 := TRUE;
             Step:=50;
         ELSE
            Step:=50;
            END_IF
        END_IF
    
    
        50:
    (*Fehler beim öffnen oder schreiben aufgetreten, von vorne anfangen*)
        IF (bError1=TRUE OR bError2=TRUE) THEN
            bError1:=FALSE;
            bError2:=FALSE;
            Step := 0;
    (*Fehler beim schließen der Datei aufgetreten, von vorne anfangen*)
        ELSIF (bError3=TRUE) THEN
            bError3:=TRUE;
            Step:=0;
     (*Programm ohne fehler durchgelaufen*)
        ELSE
        halter:=FALSE;
        Step:=0;
    
        END_IF
    
    END_CASE
    
    END_IF

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sieht auf den ersten Blick in Ordnung aus.
    A programmer is just a tool which converts caffeine into code.

  5. Folgender Benutzer sagt Danke zu Cerberus für den nützlichen Beitrag:

    sps-neuling1234 (21.04.2011)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 12.10.2011, 09:48
  2. Fehler bei Benutzung FB_FileWrite ID:1802 :Out of Memory
    Von ysh032 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 22.09.2011, 12:02
  3. FB_FileWrite Probleme mit Array schreiben
    Von FredlFesl im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 20.06.2011, 08:20

Lesezeichen

Berechtigungen

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