Prozessvariable in .csv Datei schreiben

realload

Level-1
Beiträge
14
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend zusammen,

zunächst ein Lob an die super Plattform.

Ich habe im Moment ein B&R Projekt mit AS 4. In dem Projekt habe ich 15 Variablen (Temperatur, Istwer...) die zyklisch in eine .csv Datei geschrieben werden sollen.
Das FileIO Projekt habe ich mir angeschaut, wie ich die .csv Datei erstelle ist mir soweit auch klar, was mir nicht klar ist, wie bzw. wo werden die Variablen übergeben?
Also wo gebe ich an, welche Variablen geschrieben werden? Wie sieht die Formatierung der Datei aus? Das stelle ich mir auch etwas schwierig vor wenn alle 200ms neue Werte kommen, wie werden diese nachher zugeordnet?

Danke für eure Anregungen!

:roll:
 
Hallo realload,

alle 200ms 15 Variablen zu archivieren und dabei

1. eine neue Datei zu erzeugen oder eine bestehende zu öffnen,
2. 15 Zeilen anzuhängen oder zu aktualisieren,
3. die Datei zu schließen,

und das Ganze mit Bibliotheksfunktionen, die teilweise mehrere Zyklen benötigen/dauern, ist sehr sportlich...


Kannst du uns etwas mehr Hintergrundinfos zu deinem Projekt geben?


Gruß, Fred
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Fred,

mit den 200ms war etwas sportlich, das ist natürlich nicht notwenig.

Es handelt sich um eine Temperaturregelung mit diversen Messwerten die unabhängig von der Regelung sind.
Die Messwerte sollen zur Auswertung für den Betreiber in einer .csv gespeichert werden.
Eine genaue Beschreibung in welchem Abstand die Werte gespeichert werden sollen gibt es noch nicht. Ich gehe davon aus, dass alle paar Sekunden geschrieben wird.
Könnte auch sein, dass die Werte nur alle 30 Sekunden oder mehr gespeichert werden, wie es so oft, war sich der Kunde noch nicht sicher was er will.

Grüße
 
Hallo realload,

in der Automation Studio Hilfe findest du bei der FileIO Bibliothek folgendes:

FWrite.enable = 1
FWrite.ident = dwIdent
FWrite.offset = 0
FWrite.pSrc = adr(byWriteData[0]) - Hier werden die zu Schreibenden Daten übergeben - Dies können einzelne Variablen oder ganze Strukturen verschiedener Variablen sein
FWrite.len = sizeof(byWriteData) - Hier wird noch die Länge der Daten übergeben
(* Call FUB *)
FWrite FUB FileWrite()

Im Thread: B&R Wert periodisch in File speichern kann man sich was über die Formatierung anschauen.

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


ich habe mich mit dem Thema beschäftigt. Datei erzeugen, in die Datei eine Variable schreiben klappt. Was nicht klappt, wenn ich mehrere Variablen in die Datei schreiben möchte,
ich denke ich weiß wo der Fehler liegt, brauchte aber in der Syntax nochmals etwas Hilfe.


ich habe als Test eine Data_Typ angelegt mit den Elementen:


File_data
Var2 STRING[10]
Var3 STRING[10]
Var4 STRING[10]
Var5 STRING[10]
Var1 STRING[10]




Im Programm weiße ich die Werte zu:


Main.File_data.Var1 := '$r$n 12345';
Main.File_data.Var2 := '$r$n tel';
Main.File_data.Var3 := '$r$n Test';
Main.File_data.Var4 := '$r$n Not';
Main.File_data.Var5 := '$r$n Aus';




Die Schrittkette in der File IO sieht so aus:


Handling.Functionblock.FileWrite_0.pSrc := ADR(Main.File_data);
Handling.Functionblock.FileWrite_0.len := strlen( ADR(Main.File_data) );
Handling.Functionblock.FileWrite_0; (* call the function*);





In der erzeugten Datei steht nur " tel" der Rest fehlt allerdings.
Was wäre ein Sinnvoller Lösungsansatz bzw. übersehe ich?



Oder macht es mehr Sinn, wenn ich eine Data_to_Write STRING(200) erzeuge und über den Befehl brsstrcat alle Elemente dranhänge? Und diese dann im Block übergebe?


Danke für die Unterstützung.
 
Hallo realload,

Du schtreibtest :

Handling.Functionblock.FileWrite_0.pSrc:=ADR(Main.File_data);
Handling.Functionblock.FileWrite_0.len:=strlen(ADR(Main.File_data)); - Probiers mal mit SIZEOF(Main.File_data)
Handling.Functionblock.FileWrite_0;(*callthefunction*);

Grüße
 
Hallo realload,

Du schtreibtest :

Handling.Functionblock.FileWrite_0.pSrc:=ADR(Main.File_data);
Handling.Functionblock.FileWrite_0.len:=strlen(ADR(Main.File_data)); - Probiers mal mit SIZEOF(Main.File_data)
Handling.Functionblock.FileWrite_0;(*callthefunction*);

Grüße


Danke, funktioniert bestens!

ich werde mich nun mit der Formatierung rumschlagen. Danke !!
 
Zurück
Oben