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

Ergebnis 1 bis 5 von 5

Thema: Dateizugriff mit FB_file(open/write/close)

  1. #1
    Registriert seit
    12.08.2009
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Moin aus Hamburg!

    Ich versuche derzeit ein paar Messwerte in eine einfache Textdatei zu bannen. Das funktioniert auch alles ganz hervorragend.

    Es gab hier im Forum mal etwas Beispielcode zu dem Thema und der lief auch direkt. Mein Problem ist nun, dass Twincat die Datei offensichtlich nicht richtig schließt.

    Ich kann sie zwar öffnen, aber speichern kann ich sie nicht.
    Konkreter Fall: Nachdem die Datei die 1mb grenze überschritten hatte, wollte ich ein paar Zeilen löschen, aber das ging ja leider nicht.
    Daraufhin habe ich im Code einen neuen Dateinamen verwendet, die SPS schreibt nun in diese Datei und ich kann mit der alten wieder alles machen.

    Hier ein Code-Ausschnitt dazu:

    Code:
    CASE zLog OF
    	0:
    		IF bOpenFile THEN
    			zLog := 10;
    			bOpenFile := FALSE;
    		END_IF
    	10:	(* Open file *)
    		oeffnen(	sNetId:= '',
    						sPathName:= sLogFilename,
    						nMode:= FOPEN_MODEAPPEND OR FOPEN_MODEPLUS OR FOPEN_MODETEXT,
    						ePath:= PATH_GENERIC,
    						bExecute:= TRUE,
    						tTimeout:= t#2s,
    						bBusy=> ,
    						bError=> ,
    						nErrId=> ,
    						hFile=> hFile);
    		IF NOT oeffnen.bBusy THEN
    			oeffnen(bExecute:= FALSE);
    			zLog := 20;
    		END_IF
    	20:	(* Write data *)
    		IF bWriteData THEN
    			schreiben(	sNetId:= '',
    							hFile:= hFile,
    							pWriteBuff:= ADR(data_for_disk),
    							cbWriteLen:= LEN(data_for_disk),
    							bExecute:= TRUE,
    							tTimeout:= t#3s,
    							bBusy=> ,
    							bError=> ,
    							nErrId=> ,
    							cbWrite=> );
    			IF NOT schreiben.bBusy THEN
    				bWriteData := FALSE;
    				schreiben(bExecute := FALSE);
    			END_IF
    		ELSE
    			zLog := 30;
    		END_IF
    	30:	(* Close file *)
    		schliessen(	sNetId:= '',
    						hFile:= hFile,
    						bExecute:= TRUE,
    						tTimeout:= t#3s,
    						bBusy=> schlBUSY,
    						bError=>schlERROR ,
    						nErrId=>schlERRID );
    		IF NOT schliessen.bBusy THEN
    			schliessen(bExecute := FALSE);
    			zLog := 0;
    		END_IF
    
    END_CASE
    Zu erwähnen sollte noch sein, das zLog letztenendes bei 0 steht und kein error angezeigt wird.

    Achja, Eckdaten:

    CX1020 mit XP Emb. mit Tc PLC v2.10.0 build 1323

    Geschrieben werden die Programme auf einem XP-PC mit Tc NC PTP v2.10.0 build 1335

    Würde mich freuen, wenn ein paar Anregungen kommen.

    Danke und schönes Wochenende!!!
    Zitieren Zitieren Dateizugriff mit FB_file(open/write/close)  

  2. #2
    freekadelle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.08.2009
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin,

    ich hab grad nochmal mein Posting gelesen und mir fiel auf, dass einige Sachen wohl nicht sehr verständlich dargestellt sind.

    Also nachdem die Datei seitens der SPS geschlossen sein sollte, habe ich sie mit Notepad geöffnet, was auch klappte und dann wollte ich sie halt geändert speichern, das ging nicht. Da sagte er dann etwas so in die Richtung: " ungültiger Dateiname"

    Nachdem ich der SPS eine andere Datei zum reinschreiben gegeben hatte, konnte ich mit Notepad die alte Datei in allen Variationen speichern.

    Gruß aus Hamburg

    Ole

  3. #3
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard

    Hi

    Grundsätzliche Frage:

    Die SPS schreibt in die Datei.
    Notpad schreibt in die Datei.


    Erfolgt das quasi gleichzeitig --> welche daten sollen dann geschrieben werden.


    Ich denke, dass sicherzustellen sein sollte, dass nur "einer" die Datei beschreibt.
    Karl

  4. #4
    freekadelle ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.08.2009
    Beiträge
    3
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin!

    Also nachdem die Variable WriteData auf False geht, sollte die Datei geschlossen werden. Ich sehe ja in der Datei die Ausgaben seitens der SPS.

    Ich hatte WriteData mit einem Taster verknüpft (ebenso Openfile) und somit hat er bei einem ausreichend schnellen druck, nur eine Zeile geschrieben... aber das wäre ja eine andere Baustelle.

    So, nachdem der Taster und somit die Variable WriteData auf FALSE geht, sollte doch zLog:=30 werden und er die Datei schließen. So lange kein neuer Schreibbefehel kommt, verharrt er mit zLog:=0;
    Ich werde mir das alles heut nochmal im Trace angucken, evtl. habe ich einen Denkfehler. Ich komme aus dem Bereich der Hardwarenahen C-Programmierung .(AVR_µC)

    Gruß aus Hamburg

  5. #5
    Registriert seit
    10.05.2005
    Beiträge
    2.005
    Danke
    220
    Erhielt 234 Danke für 205 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi

    Bei jedem Zylus wird der Datenstring geschrieben.

    Normalerweise wird die steigende Flanke des Schreibbefehles abgefragt.

    D.h. die Write-Schleife wird nur 1 x aufgerufen / Daten werden geschrieben.
    Karl

Ähnliche Themen

  1. write in c#
    Von QBert im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 20.04.2011, 09:29
  2. Dateizugriff über ASP Seite
    Von fweisen im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 17.02.2011, 13:13
  3. Mit TwinCat Dateizugriff
    Von Tracer im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 12.03.2009, 11:02
  4. Fetch/Write mit SPS !
    Von Assemble im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 03.06.2008, 22:41
  5. Anfänger- Codefrage LD *close*
    Von excite im Forum Simatic
    Antworten: 20
    Letzter Beitrag: 22.07.2005, 12:19

Lesezeichen

Berechtigungen

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