Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Dateihandling für 4000 Variablen

2010-01-08
2013-09-20
  • mbongi81@gmx.ch - 2010-01-08

    Hallo Miteinander

    ich bin ein Absoluter Programmierneuling und hab darum auch ein wenig Schwierigkeiten folgendes Problem zu lösen.

    Für ein Projekt ist es erforderlich 4000Variablen möglichst schnell in so etwas wie eine Datei zu schreiben und diese bei bedarf wieder herauszulesen.

    Ein gangbarer Weg, denke ich wäre, die Variablen in Stings zu wandeln und diese dann in ein .txt zu schreiben. Leider habe ich hier bei bedenken betreffend der zeitlichen Anforderung und bis jetzt keine dienlichen Infos gefunden sie ich ein solches Dateihandlin erstellen kann.

    Des weiteren habe ich vernommen es sei möglich sogenannte .TAB files zu erstellen in welchen die Daten, ähnlich wie in einem .xls abgelegt werden können. Dies wäre für die Anwendung phantastisch da die Daten nicht gewandelt werden müssten.

    Kann mir hierbei irgendjemand helfen?????

    Besten Dank und Gruss

    Manuel

     
  • gravieren - 2010-01-08

    Hi

    Welche Hardware ?

     
  • mbongi81@gmx.ch - 2010-01-09

    Hi!

    Es ist ein 12" Touch-Panel HMI-PLC XV-440 mit einem RISC, 32Bit 400MHz Prozessor. Die Daten und die Software sind auf Compact-Flashcards gesichert (die Dateien mit den Variablen sollten ebenfalls auf dem Flash abgelegt werden.

    Besten Dank für deine Bemühungen.

    Manuel

     
  • gravieren - 2010-01-09

    Hi

    Hersteller ist die Moeller GmbH.

    Da kann ich dir leider nicht helfen.

     
  • Sascha - 2010-01-11

    Hi

    Musst du nur den Inhalt der Variablen in eine Datei schreiben oder muss der Variablenname auch mit geschrieben werden?

    Wenn nur der Inhalt geschreiben werden muss, könnte es eventuell in der Bibliothek für das Panel auch ein Filehandling geben.

    Gruß Sascha

    P.S.: Siehe SysLibFile.Lib wenn als Zielsystem "3S CoDeSys SP PLCWinNT V2.4" ausgewählt ist.

     
  • Erik Böhm - 2010-01-11

    Hi

    Hast du dir schon mal das Thema Watchlisten angeschaut ?

    Zumindest über die Visu mit SAVEWATCH / LOADWATCH können damit solche Aufgaben erledigt werden.

    Gruß

    Erik

     
  • mbongi81@gmx.ch - 2010-01-11

    Hi Sascha

    ja es soll nur der Inhalt der Variablen in die Datei geschrieben werden evt. noch einen Header mit allg. Parameter. Ich habe mich im erstellen der Dateien mittels der SysLibFile.Lib versucht brachte es aber nicht zustande eine Datei zu erstellen und in diese einen Inhalt zu schreiben (oder vielleicht fand ich diese auch einfach nicht Falls du Beispiele hättest wäre dies Phantastisch!!!!

    Hi Erik Böhm

    werde mich gleich mal schlau machen!

    Besten Dank allen unterstützern!!!

    Manuel

     
  • J Schohaus - 2010-01-14

    Hallo Manuel ist es nowendig das die Daten mit ein Text Editor gelesen werden kann oder werden die Daten nur in der Steuerung benötigt.

    Dann könntest Du deine Variablen in einer Strucktur legen.

    Dann ist es sehr einfach den inhalt in eine Datei schreiben oder lesen.

     
  • mbongi81@gmx.ch - 2010-01-15

    Hi J Schohaus

    Die Daten sind in zwei Strukturen abgelegt. Es handelt sich dabei um Produktionsdaten. Wechselt der Kunde das Objekt müssen die neuen Daten geladen werden die aktuellen, evt. geänderten, gespeichert werden.

    Die Dateien sollen nur schnell und sicher abgelegt und aufgerufen werden können. Aufrufe der Dateien von anderen Systemen ist nicht geplant!!

    besten Dank

    Manuel

     
  • J Schohaus - 2010-01-18

    Hallo dann sollte mein Beispiel dir weiterhelfen.

    MyData ist eine beliebige Strucktur.

    IF xDataWrite THEN 
     xDataWirte := FALSE ;
     sFileName := 'C:/MyFile.Dat' ;
     (* Öffnen zum Daten schreiben *)
     idFile := SysFileOpen( FileName := FileName , 'w' );
     SysFileWrite(File := idFile , 
       Buffer := ADR( MyData ) , 
       Size := SIZEOF( MyData ));
     SysFileClose(File := idFile );
    END_IF
    IF xDataRead THEN 
     xDataRead := FALSE ;
     sFileName := 'C:/MyFile.Dat' ;
     (* Öffnen zum Lesen der Daten *)
     idFile := SysFileOpen( FileName := FileName , 'r' );
     SysFileRead(File := idFile , 
       Buffer := ADR( MyData ) , 
       Size := SIZEOF( MyData ));
     SysFileClose(File := idFile );
    END_IF
    

    mfG Jochen

     
  • mbongi81@gmx.ch - 2010-01-20

    Hi Jochen!!

    Besten dank für die fantastische Hilfe! Das Programm funktioniert so Hervorragend! Ich schreib jetzt ca. 6000 Variablen in die Datei! Macht richtig Laune vielen vielen Dank!!!!!

    Manuel

     
  • Bongi - 2013-09-19

    Hallo Zusammen,

    naja alte Schandtaten holen einem bekanntlich immer wieder ein und nun Jahre später darf ich mich wieder mal mit dem Thema auseinandersetzen.

    Die Lösung von damals Funktioniert einwandfrei. Allerdings mit dem Nachteil, dass die Daten im File nicht leserlich dargestellt werden. Nun soll dies geändert werden.

    Bevor ich mich an die Arbeit mache wollt ich mal nachfragen ob jemand weiss warum dies so ist und ob es allenfalls Abhilfen dafür gibt. Die Struktur die zum einschreiben übergeben wird ist folgende:

    TYPE Beispiel :
    STRUCT
    st01 : ARRAY[1..32] OF TYP_aa; (Typ_bb Besteht aus einem Array [1..200] eines Typ_cc welcher ein Array [1..12] of Word beinhaltet. ~Sinngemäss)
    st01 : ARRAY[1..64] OF TYP_dd; (Typ_ee Besteht aus einem Array [1..20] eines Typen_dd welcher ein Array [1..12] of Byte beinhaltet. ~Sinngemäss)
    stTyp01 : Typ01;
    stTyp02 : Typ02;
    stTyp03 : Typ03;
    END_STRUCT
    END_TYPE

    Ansonsten mach ich mich daran die Funktionen von SysLibFile und SyslibFileAsynch auszunutzen...

    Besten Dank an alle
    Gruss
    Manuel

     
  • Erik Böhm - 2013-09-20

    Moin
    Wenn du die Daten lesen willst, dann musst du eben ASCII Zeichen schreiben. Sprich: STRINGS.
    Gruß Erik

     

Log in to post a comment.