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

Ergebnis 1 bis 4 von 4

Thema: in Datei schreiben TwinCat 3

  1. #1
    Registriert seit
    19.08.2013
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Unglücklich


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebe Gemeinde,

    ich habe mir den FAQ zum schreiben in Dateien angeschaut, werde aber nicht schlau daraus.

    Ich möchte bei Programmaufruf eine Datei anlegen lassen, die am besten automatisch durchnummeriert wird, sollte sie schon vorhanden sein. am Ende jedes Zyklus sollen ein paar messwerte (schon geordnet in einem Array) mit Zeitstempel an die schon aufgenommenen Messwerte unten rangepappt werden.

    nun habe ich in der Hilfe folgendes gefunden:

    http://infosys.beckhoff.com/index.ph...example.htm&id



    fbFileOpen( bExecute := FALSE );
    fbFileOpen( sNetId := destNetId,
    sPathName := destFileName,
    nMode := FOPEN_MODEWRITE,
    ePath := PATH_GENERIC,
    tTimeout := tAdsTimeout,
    bExecute := TRUE );

    fbFileWrite( bExecute := FALSE );
    fbFileWrite( sNetId:=DestNetId,
    hFile:=hDestFile,
    pWriteBuff:= ADR(buffRead),
    cbWriteLen:= cbReadLength,
    bExecute:=TRUE,
    tTimeout:=tAdsTimeOut );

    fbFileClose( bExecute := FALSE );
    fbFileClose( sNetId:=destNetId,
    hFile:=hDestFile,
    bExecute:=TRUE,
    tTimeout:=tAdsTimeOut );

    Ich verstehe nicht welche daten jetzt in die destfile geschrieben werden? und was hat es mit sNetId und hFile auf sich? muss ich die wie im beispiel die outputs


    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

    mit berücksichtigen oder kann man das weglassen? gibt es nirgendwo ein einfaches beispiel oder eine ausführlich kommentierte beispielversion?


    über hilfe wäre ich wirklich sehr dankbar!
    Geändert von rafox (09.09.2013 um 15:15 Uhr)
    Zitieren Zitieren in Datei schreiben TwinCat 3  

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

    Standard

    Hallo rafox,

    eigentlich ist das gar nicht so schwierig.

    Wie du schon selbst durch deine Baustein beschrieben hast, benötigst du minimal 3 Stück:
    - FB_FileOpen
    - FB_FileWrite / FB_FileRead
    - FB_FileClose

    Der FB_FileOpen legt dir
    a) eine Datei an
    b) hängt an eine existierende etwas an
    c) überschreibt eine existierende
    definiert durch nMode
    Zurück bekommst du durch diesen Baustein ein Handle -eine Art Zeiger, wo die Datei im Speicher liegt.
    Durch die NetId könntest du dem Baustein sagen, dass er die Datei nicht auf deiner lokalen Steuerung sondern auf einer anderen TwinCAT Maschine anlegen soll.

    Jeder weitere Baustein führt seine Operationen dann unter Nutzung dieses Handles aus.
    Das hat den Vorteil, dass du ein sehr komfortables FileHandling schreiben kannst, mit nur einem FileRead/FileWrite, der jeweils das individuelle Handle der geöffneten Datei bekommt.

    Wenn alle Operationen abgeschlossen sind, wird die Datei wieder geschlossen (FB_FileClose) - ebenfalls durch Übergabe des Handles.

    Vorsicht jedoch: man stößt damit Windows-APIs an. Man kann nicht genau sagen, wann sie beendet werden bzw. tatsächlich auf die ms genau, wann sie ausgegführt werden.

    Ggf. habe ich noch ein kleines Beispiel mit Schrittkette.

    Aber vielleicht hilft das ja schon.

    Gruß,
    mac203

  3. #3
    rafox ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    19.08.2013
    Beiträge
    5
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo,

    danke erstmal!

    wie gesagt über beispielcode würde ich mich wirklich sehr freuen! wenn du mir etwas schicken könntest würde mir das sicher sehr helfen.

    ich sehe nicht welche daten nun in dem oben geposteten code in die datei geschrieben werden etc. naja ich probier mal noch etwas rum.

  4. #4
    Registriert seit
    08.08.2011
    Beiträge
    227
    Danke
    44
    Erhielt 8 Danke für 8 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von rafox Beitrag anzeigen
    fbFileWrite( bExecute := FALSE );
    fbFileWrite( sNetId:=DestNetId,
    hFile:=hDestFile,
    pWriteBuff:= ADR(buffRead),
    cbWriteLen:= cbReadLength,
    bExecute:=TRUE,
    tTimeout:=tAdsTimeOut );

    Ich verstehe nicht welche daten jetzt in die destfile geschrieben werden
    es werden die Daten an der Schnittstelle "pWriteBuff" geschrieben. Wo ist denn dein Problem genau?
    das "hFile" gibst du einfach vom fbFileOpen an die anderen (Write,Close) weiter.

    EDIT: "bExecute" benötigt eine pos. Flanke
    Wer Rechtschreibfehler findet, darf sie behalten!

Ähnliche Themen

  1. Variablenwerte in eine Datei schreiben
    Von Chrissss im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 12.03.2012, 21:41
  2. Twincat NCI Sollwerte in Datei schreiben
    Von odonata im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 29.09.2011, 10:44
  3. Versatz beim Schreiben in Datei
    Von zwuebbl im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 30.06.2011, 11:35
  4. In eine Datei schreiben
    Von Bensen83 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.03.2010, 15:30
  5. Kurvenwerte in Datei schreiben
    Von ssound1de im Forum HMI
    Antworten: 5
    Letzter Beitrag: 18.02.2010, 12:57

Lesezeichen

Berechtigungen

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