Datei Schreiben mit FBGeneralFile

_Johannes_

Level-1
Beiträge
4
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich arbeite mit den E-Cockpit von Wago und einer 750-8100 Steuerung.

Mit den FunctionBlock FBGeneralFile will ich eine Datei mit den Namen Datei auf die SD Karte schreiben. In der Online Hilfe habe ich ein Beispiel gefunden, wie man dies programmieren könnte und in mein Programm übernommen. Das Problem ist, das sich der FB beim Öffnen aufhängt. Die Datei wird zwar erstellt (siehe Bild), aber xBusy bleibt immer auf True und xTerminated immer False.

Was mache ich falsch?

FBGeneralFile2.PNG
FBGeneralFile1.jpg
 
Hallo Johannes,
Was mache ich falsch?
vieles. Leider ist die Art wie Du programmierst hier häufiger anzutreffen, Dein Problem hatte erst vor kurzem schon jemand.
Der FB kann nur seinen Status (Ausgänge) ändern, wenn er ausgeführt wird. Du rufst ihn in der Case-Anweisung einmal auf und springst dann weiter, dadurch wird er nicht wieder aufgerufen und kann seinen Staus auch nicht mehr ändern, das funktioniert nicht. Wie in diesem Forum schon mehrfach angemerkt sollte die Ausführung des FBs außerhalb der CASE-Anweisung erfolgen, in der CASE-Anweisung werden dann nur die Eingänge des FBs entsprechend gesetzt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hello ,

i just called the Method and forgot to call the function block.
Here is an example:

Code:
CASE iState OF
    0:
        IF xTrigger THEN
            eRes:=FileSystem.Open(sFileName, FAM_WRITE,0,FALSE);
            iState:=1;
        END_IF
    1:
        IF FileSystem.xTerminated THEN
            FileSystem.WriteString("Just a test");
            iState:=2;
        END_IF
    2:
        IF FileSystem.xTerminated THEN
            FileSystem.Close();
            iState:=3;
        END_IF
    3:
        IF FileSystem.xTerminated THEN
            iState:=5;
        END_IF
END_CASE

//SD_File-Handler
//I forgot to call the function block
FileSystem(
    xTerminated=>, 
    xBusy=>, 
    xError=> , 
    eResult=> , 
    xIsOpen=>, 
    xEofReached=>, 
    liGetPos=>, 
    udiRxNBytes=>, 
    bRead=>, 
    sLine=>);
 
Zurück
Oben