B&R Wert periodisch in File speichern

cypher

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich möchte gerne eine Integer-Variable meiner Steuerung in Zeitabständen von 15 Minuten in ein File schreiben.
Das File sollte den Zeitpunkt der Aufnahme (Datum/Uhrzeit) und den Wert enthalten.
Ich weiß zwar wie ich eine Abfrage alle 15 Minuten umsetze, jedoch nicht wie man Werte in ein File schreibt.
(Programm in Structured Text geschrieben)
Kann mir jemand weiterhelfen?

Gruß,
cypher
 
Hallo,

Um in ein File zu schreiben kannst du die FileIO Library verwenden von B&R.
Hierzu gibt es auch einen Beispieltask den du dir ins Studio über logical View / Objekt hinzufügen / Beispiele / Bibliotheksbeispiele / FileIO ins Projekt holen kannst. ( Ist in der AS Hilfe auch beschrieben)

Bevor du deinen Eintrag ins File machst empfiehlt es sich deinen Fileeintrag zusammenzustellen.

Hierzu holst du dir die Zeit (Funktionen hierzu in AsTime), wandelst es in einen String um ( XXX_TO_STRING Funktion).
An diesen String hängst du dann den zuvor in String gewandelten Wert an. ( Anhängen mit Strcat Funktion / AsString). Am Besten hängst noch ein \n hinten dran, damit du immer eine neue Zeile anfängst.

Beim FileIO Schreiben darauf achten, dass du jeweils die bisherige Filelänge als Offset verwendest, damit dein neuer Eintrag immer hinten angehängt wird und deine alten Einträge nicht überschrieben werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@Sera, ich habe auch diese Beispiel verwendet. Wenn ich an den Beispielstring ein "\n" anhänge wird kein Zeilenumbruch gemacht.

P.s. Es gibt in der Hilfe ein weiteres Beispiel. Dies ist aber in C geschrieben.
 
Wenn ich eine CSV Datei erstelle, reicht \n
Ansonsten ist es vom Editor oder der Editoreinstellung abhängig ob ein Zeilenumbruch mit \n durchgeführt wird.
Für Zeilenumbruch kann auch \r\n (Wagenrücklauf, Zeilenumbrauch) funktionioren.

http://de.wikipedia.org/wiki/Steuerzeichen
printf("Ein\tTab\nZeilenumbruch\rWagenrücklauf");

PS: printf ist vom wiki kopiert.
strcpy((UDINT)&Buffer1,"Date Time;Wert1;Wert2\n");
 
Zuletzt bearbeitet:
Also ich mache z.B. ein File mit:
STRING[5]dann STRING[1] als ";" (Semikolon) dann wieder STRING[5] und dann USINT[0..1] gefüllt mit den Werten 13 und 10 "/r/n".

Speichere dies als csv oder txt, und kann diese normalerweise im Editor oder Excel gut öffnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
\n war Datenobjekt. Sorry. Im File "$r$n" in den String schreiben:

Im Sampletask also:

'This is a test string! $r$n1234567890'

führt im File zu:

This is a test string!
12345678900


Hab eben noch kurz in die AS Hilfe geschaut. Findet man auch unter "Programmierung \ Normen \Literale in IEC Sprachen" in der Hilfe. Auf der Seite dann Zeichenkettenliterale.
 
Zuletzt bearbeitet:
Zurück
Oben