# .csv Datei aus CoDeSys Variable



## Terence_Hill (8 November 2007)

Hallo, 
ich bin neu hier und hätte eine Frage bezüglich des erstellens einer .csv Datei mit den Werten aus einer CoDeSys Variablen. Ich möchte das der Wert der Variablen jede Sekunde aufgenommen wird und die Werte anschließend in einer .csv Datei gespeichert werden können. Weiß nicht so recht wie ich das anstellen soll. Kann mir jemand helfen? 
Gruß 
Terence


----------



## zotos (8 November 2007)

Welches Zielsystem? 

Also mal auf die Schnelle was zum Spielen und Diskutieren Läuft bei mir auf dem Rechner mit der CoDeSys RTE bei anderen Plattformen wird der Pfad nicht passen:


```
PROGRAM PLC_PRG
VAR
    myTON            :TON;
    SysFileOpenNum    :DWORD;
    FileName        :STRING := 'D:\CoDeSysCSV.csv';
    FileMode        :STRING := 'w';

    WriteBuffer     : STRING;
    DwWritten         : DWORD;

    myCount            :INT;
    myValue            :INT;

END_VAR

myTON(IN:=NOT myTON.Q, PT:=t#1s); (* Sekunden oszi *)
IF myTON.Q THEN

    CASE myCount OF
    0:        SysFileOpenNum := SysFileOpen(FileName,FileMode);

    1..100:    WriteBuffer := '';
            WriteBuffer := INT_TO_STRING(myValue);
            WriteBuffer := CONCAT(WriteBuffer, ';');
            DwWritten := SysFileWrite(SysFileOpenNum, ADR(WriteBuffer), LEN(WriteBuffer));
    101:    SysFileClose(SysFileOpenNum);
    END_CASE
    IF myCount < 102 THEN
        myCount := myCount + 1;
    END_IF;
END_IF
```


----------



## Terence_Hill (9 November 2007)

Hallo Zotos,
habe dein Programm mal übernommen. Aber CoDeSys erkennt z.B. LEN nicht, obwohl ich die Standart.lib eingebunden habe. Zudem fehlt mir die SysLibFile.lib für SysFileOpen usw. kannst du mir sagen wo ich die und eine aktuelle Standart.lib finde?


----------



## zotos (9 November 2007)

Ich wiederhole meine Frage: Welches Zielsystem?!

Also komisch ist das Du eine Fehlermeldung wegen LEN bekommst da die ja in der Standard.lib vorhanden ist.

Die SysFile.Lib in der sysFileOpen, sysFileWrite, sysFileClose vorhanden ist, findest Du da es sich ja um eine Systemfunktion handelt, im Target Ordner des entsprechenden Targets zum Zielsystem.

Bei mir da ich als Zielsystem die RTE verwende:
C:\Programme\Gemeinsame Dateien\CAA-Targets\3S\Lib_NTRT


----------



## Schmittschmitt (21 Juli 2011)

Ich möchte den speicherpfad überprüfen ob er vorhanden ist. Wie könnte ich das realisieren???


----------



## Oberchefe (21 Juli 2011)

wie wäre es, wenn Du erst mal Zotos Frage beantwortest:



> Welches Zielsystem?!


----------



## Schmittschmitt (22 Juli 2011)

Das zielsystem ist ein Touch Panel von Micro Innovation. Auf diesen Touch Panel läuft WinCE 5.0.


----------



## Michael68 (14 Dezember 2011)

Hallo Zotos,

Sehr guter Beitrag!
Bei mir ist es eine WAGO 750-841 und folglich CoDeSys
Läuft und alles gut, aber  es scheibt keine Datei ... was ist noch zu bedachten?
Zielsystemeinstellungen? Visu einschalten? Bin ratlos!

Bitte im einen Tipp - Danke


----------



## gravieren (14 Dezember 2011)

Hi

OSCAT hat da was "fertiges" .
Infos / Variablen aufzeichnen. (Auch mit Delta-Aufzeichnung)
Die erzeugte Datei wird anschließend auf Wunsch zu einem NAS-Laufwerk übertragen. (Oder Server)


Gruß Karl


----------



## danhw (19 Dezember 2011)

den Satz verstehe ich nicht... würde mich auch interessieren. Anyone?
Grüße
danhw


----------



## gravieren (19 Dezember 2011)

Hi


danhw schrieb:


> den Satz verstehe ich nicht... würde mich auch interessieren. Anyone?
> Grüße
> danhw


Solltest du mich meinen  ?   (Ups, da fehlen ja etliche Zeichen   )


Falls ja:

Zur Homepage gehen --> www.oscat.de  .

Dateien downloaden -->   oscat_basic_332  und codesys_network_112 

Achtung, NICHT die S7 oder PcWorx  laden.

Die Handbücher hierzu sind auch sinnvoll.

Die Networklib öffnen.
Hierin sind Demo-Programme zu finden.
Nimm das passende Demo-Programm, es ist vieles realisiert, das du benötigst.

Gruß Karl


----------



## danhw (19 Dezember 2011)

Hallo Karl,

ja ich meinte dich/deinen Beitrag. Nun verstehe ich den Beitrag - danke für die Ausformulierung 

Grüße
danhw


----------



## phil122 (8 März 2013)

zwar ein bisschen alt der Thrend aber ich wollte nicht ein neuen auf machen ....


und zwar ich hab den Quellcode von Zots genommen und habe folgende Fehlermeldung:

#16: Tasküberwachung fehlgeschlsfen für 'Watchdog expired -> Task = Default Task'

CPU geht in STOP

Kann mir jemand weiterhelfen?


----------



## phil122 (11 März 2013)

nach stundenlangen hacken ist der Fehler habe ich den Fehler behoben danke an zotos für den code )


----------



## dhgroe (14 März 2013)

@Zoto......sehr gute Lösung. gefällt mir.

Mein Einsatzgebiet ist der Controller 750-841 von Wago . Hier fällt bei mir ein String mit 80 Zeichen an, den ich gern im Zielsystem "Profilab Expert 4" 
darstellen würde. Die Kommunikation von Wago-Controller zu PC mit  ProfiLab Expert 4 erfolgt über MODBUS / TCP. DAs heisst ich müsste dort irgendwie
den String in Register packen, per Modbus / TCP zu ProfiLab übertragen und dort dann wieder "auseinanderpflücken".
Ich habe momentan noch keine Lösung. Wäre aber über ein Lösungsanstoss dankbar.


----------

