Daten spannungsausfallsicher ablegen

mkersch

Level-1
Beiträge
111
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forenmitglieder,

möchte bei einer Anwendung mit dem CP6607 von Beckhoff (128MB RAM 32 MB Flash) Rezepte spannungsausfallsicher ablegen.

Bisher habe ich die Daten in das NOVRAM abgelegt. Jedoch ist es mir bei der Inbetriebnahme schon passiert (ONLINE Reset usw) das diese Daten gelöscht wurden.

Welche Möglichkeiten gibt es diese Rezepte spannungsausfallsicher abzulegen ?

mfg.

mkersch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die Info

Wird diese Datei in meinen 32MB On-Board-Flash geschrieben ?
Oder benötige ich hierfür eine externe Compact Flash Karte ?


Die Rezeptdaten möchte ich in einen Zweidimensionalen Array halten. Um jedoch diese Daten vernünftig in eine Datei ablegen zu können, muss dieses Array vorher in "String Zeilen" (je Datensatz eine Zeile) gewandelt und entsprechen abgelegt werden.

Gibt es eine Art Datenbankfunktion um diese Werte ohne großen Aufwand geordnet in eine Datei zu speichern bzw. zu lesen ?

mfg.

mkersch
 
Hallo,

der interne Speicehr müsste für diese Zwecke ausreichen.

Warum willst du es in einen String wandeln?

Du kannst das Array auch direkt in eine Datei schreiben und später wieder einlesen. Das Problem an der Sache, man kann die Daten nicht im Klartext sehen und man sollte die Daten auch nicht ändern. Aber zur Rezepturverwaltugn sollte das OK sein.
 
Danke für die Info,

habe es natürlich gleich ausprobiert.

Zuerst habe ich einen String mit 20 Bytes in das File geschrieben.
In der Datei steht dieser String korrekt.

Danach habe ich versucht ein Array mit 10 Elementen vom Typ INT (20 Bytes) in ein File zu schreiben (File wurde im Binärmodus geöffnet).
Mit dem Hex-Editor kontrollierte ich den Inhalt.
Obwohl die Länge (laenge) bem Schreiben (20 Bytes) korrekt war, habe ich 40 Bytes in meinem Binärfile.

0000010002000300040005000600070008000900
0000000000000000000000000000000000000000

a_rezept[0] := 0
a_rezept[1] := 1
.
.
a_rezept[9] := 9

Was mich wundert ist, das im Binärfile 0000,0100,0200,0300, .. usw steht.

Nachdem ich mein Binärfile wieder in das Array zurückgelesen haben, ist der Inhalt der Arrayelemente 0.

Was mache ich falsch ?


laenge := SIZEOF(a_rezept);
M_FB_FileWrite(
sNetId:= '127.255.255.1.1.1' ,
hFile:=fh,
pWriteBuff:= ADR(a_rezept[0]),
cbWriteLen:= laenge,
bExecute:= TRUE,
tTimeout:= t#1000ms,
bBusy=> bB,
bError=> bE,
nErrId=>err ,
cbWrite=>flen );

mfg

mkersch
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

versuch mal die Datei zu löschen, neu zu schreiben und dannach wieder einlesen.

Das mit den 40 Bytes kommt wahrscheinlich davon das du zweimal in die Datei geschrieen hast?

Alternativ hier mal meine 2 Bausteine im Anhang
 

Anhänge

  • RW FILE.zip
    976 Bytes · Aufrufe: 33
Zuletzt bearbeitet:
Nun, dafür sollten persistente Daten auch ausreichen. Ganz spannungssicher ist aber beides nicht, wenn direkt beim Schreiben die Spannung ausfällt! NovRam ist da besser.
 
Hallo,

NovRam ist nur sicher wenn man ihn über Bausteine schreibt, also mit dem FB_NovRamReadWriteEx. Wenn man den NovRam direkt über den Manager verknüpft kann es passieren, das die Daten weg sind z.B.: Über Online Reset.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nochmals vielen Dank für Eure schnelle und kompetente Hilfe.

Es funktioniert.
Mein Fehler war das ich nach dem Öffnen und Schreiben meines Arrays in die Datei den Dateizeiger nicht wieder auf den Dateianfang gesetzt habe.

Wenn ich mit folgender Sequenz arbeite ist die Dateilänge auch 40 obwohl ich nur 20 Bytes schreibe

-fopen
-fwrite
-fread
-fclose

Setze ich den Dateizeiger auf 0 ist die Datei auch korrekt 20 Bytes lang und der Arrayinhalt ist auch wieder korrekt gefüllt

==> korrekt
-fopen
-fwrite
- fseek (Dateizeiger auf den Anfang setzen)
-fread
-fclose


===========

Thema NOVRAM

Ich habe mir auch überlegt die Daten im NOVRAM abzulegen, jedoch will ich den Anwender die Möglichkeit schaffen über BACKUP bzw. RESTORE
diese Daten noch zusätzlich in eine Datei abzulegen.

Euer Hinweis die Daten mittels Programm ins NOVRAM zu schreiben werde ich noch testen. Da ich beim verknüfen mit den Manager bereis negative Erfahrungen (wie ONLINE RESET) gesammelt habe.

mfg.

mkersch

PS.
Wo kann ich die Bewertung (Danke) im Forum abgeben ?
 
Zurück
Oben