# Berechnung Speicher für Archiv



## IPC Bernhard (21 Juli 2011)

Hallo 

Ich habe nun mit der Suchfunktion versucht eine brauchbare 
Berechnung für die Größe von Archiven zu finden, leider vergeblich.

Es gibt ja grundsätzlich die Möglichkeit für jede Variable ein Archiv 
anzulegen. Ob das Sinn macht oder nicht ist nicht wichtig.

Aber wie kann ich den benötigten Speicher in einem MP 277 
für die Archive berechnen.

Beispiel 1:
Variable 1 (Real), Aufzeichnung 1 pro Sekunde.

Beispiel 2:
Variable 2 (Real), Aufzeichnung 1 pro 5 Sekunden.

Dann kann ich doch auch nur 10 000 Datenpunkte in
ein Archiv bringen, ist das so richtig?

Wieviel Bytes sind 10 000 Datenpunkte?
1 Datenpunkt = ....Byte.

Welche Archivierungsmethode braucht den 
wenigsten Speicher RDB; CSV; TXT; ...?

Wenn so ein Archiv voll ist wird doch ein weiteres erstellt
wenn die Einstellung "nicht" Umlaufarchiv ist, ist das auch
soweit richtig?

Wie groß darf der CF bzw SD bzw USB Speicher sein 
bei einem MP 277?

Gruß
Bernhard


----------



## PN/DP (22 Juli 2011)

IPC Bernhard schrieb:


> Welche Archivierungsmethode braucht den
> wenigsten Speicher RDB; CSV; TXT; ...?


Den geringsten Speicherbedarf sollte RDB haben, damit habe ich allerdings keine Erfahrung. Außerdem bin ich mir nicht sicher, ob das MP277 überhaupt RDB kann. Die MP277-Betriebsanleitung von 2009 erwähnt nur CSV-Archive.



IPC Bernhard schrieb:


> Wieviel Bytes sind 10 000 Datenpunkte?
> 1 Datenpunkt = ....Byte.


CSV: Die Anzahl Byte je Datenpunkt des Archivs schwankt und ist abhängig von der Länge des Variablennamens, der Anzahl Ziffern des Realwertes, von der Runtimesprache und davon, wie "glatt" der Zeitstempel zufällig ist. Zusätzlich schreibt die Runtime bei jedem Beenden einen Eintrag "$RT_OFF$"... in jedes Archiv. Wenn der Variablenname 10 Zeichen lang ist und der Realwert 2 Stellen + 1 Nachkommastelle hat, dann rechne mit ca. 60 Byte je Datenpunkt. 10000 Datensätze ~ 586kB
Die genaue Gesamtgröße eines Archivs ist nicht vorhersagbar.

WinCCflex gibt zur Information die maximale Archivgröße bei Archiv>Allgemein an, geht dabei aber anscheinend von ca. 100 Byte je Eintrag aus. Die Größe wird für CSV und RDB gleich groß angegeben: 977kB

Tip: starte in WinCCflex die Panel-Simulation (Runtime starten) und schau Dir das erzeugte Archiv mit einem Texteditor oder Hexeditor an. Dann siehst Du den Speicherbedarf Deines Datenpunktes im Archiv.

Hinweis: Wenn Du die Archivdaten auch in einer Kurvenanzeige auf dem MP277 darstellen willst, dann solltest Du maximal 4 Variablen in ein Archiv packen. Jede Kurvenanzeige sollte ein einziges eigenes Archiv benutzen. Die Kurvenanzeige ist so unglaublich ineffizient programmiert ...



IPC Bernhard schrieb:


> Wenn so ein Archiv voll ist wird doch ein weiteres erstellt
> wenn die Einstellung "nicht" Umlaufarchiv ist, ist das auch
> soweit richtig?


Nur bei "Segmentiertes Umlaufarchiv" wird ein Folgearchiv erstellt, bei "Umlaufarchiv" werden ca. 20% der ältesten Einträge gelöscht und ein nicht-Umlaufarchiv wird einfach voll und archiviert dann nicht weiter.
Siehe WinCCflex Hilfe "Verhalten des Archivs bei Erreichen eines bestimmten Füllstands steuern"

Hinweis: Die in WinCCflex angebbare Anzahl Archive meint die Anzahl der Folgearchive.
Wenn man z.B. Anzahl = 4 eingibt, dann werden 5 Archivdateien erstellt. Wenn alle 5 Archiv-Segmente voll sind, dann wird das älteste Archiv-Segment (die älteste Archiv-Datei) komplett gelöscht und mit neuen Archivwerten gefüllt.



IPC Bernhard schrieb:


> Wie groß darf der CF bzw SD bzw USB Speicher sein
> bei einem MP 277?


Auf dem MP277 läuft WinCE 5.0 -> also normalerweise max. 2GB Speichermedien.
Siehe auch diese Liste von 2010 der unterstützten Speichermedien von Siemens.
In der neueren Liste 2011 gibt Siemens an, daß auch ein Siemens-USB-Stick 8GB unterstützt wird.
Weitere Informationen und Erfahrungsberichte zu Speicherbedarf und Performance findet Du auch in der Forumssuche.

Harald


----------



## IPC Bernhard (22 Juli 2011)

*Archivierungsmethode*

Hallo PN/DP

Erstmal danke für deine ausführlichen Informationen.
Zu dieser Uhrzeit habe ich tief und fest geschlafen 
und nicht an die Archive gedacht auch nicht geträumt davon.

Ich habe noch eine Frage bezüglich der Archivierungsmethode.
Gibt es im Flexible auch die Möglichkeit erst bei einer
Änderung größer "xxx" die Archivierung durchzuführen?
Somit könnte man ja die Datenmenge reduzieren.

Gruß
Bernhard


----------



## PN/DP (23 Juli 2011)

IPC Bernhard schrieb:


> Zu dieser Uhrzeit habe ich tief und fest geschlafen
> und nicht an die Archive gedacht auch nicht geträumt davon.


Hallo Bernhard,

ich bin zur Zeit in einer anderen Zeitzone, da war es noch nicht sooo spät und auch noch nicht mal richtig dunkel. 



IPC Bernhard schrieb:


> Gibt es im Flexible auch die Möglichkeit erst bei einer
> Änderung größer "xxx" die Archivierung durchzuführen?


Ich mache es bei fast allen meinen Variablenarchiven so, daß bei den Variablen die "Erfassungsart Archivierung: Bei Änderung" eingestellt ist. Allerdings kann man nicht die Mindestgröße dieser Änderung festlegen. Sowas gibt es in WinCCflex nicht fertig. Man kann nur direkt einen Wertebereich "Archivierungsgrenzen" festlegen, innerhalb oder außerhalb dessen die Variable archiviert werden soll. Die Archivierungsgrenzen können Variablen sein, mit denen man die Toleranzbeträge flexibel festlegen könnte. Allerdings gibt es kein Ereignis "Bei Archivierung" oder "Archivierungsgrenze überschritten", bei dem man die Archivierungsgrenzen neu festlegen könnte.

Deshalb eine abgewandelte Idee - habe ich zwar noch nicht ausprobiert, könnte mir aber vorstellen, daß das funktioniert:
Bei der zu archivierenden Variable festlegen

Erfassungsart Archivierung: Auf Anforderung
Eigenschaften > Grenzen > Obergrenze: eine interne Variable "ArcVarname_OG"
Eigenschaften > Grenzen > Untergrenze: eine interne Variable "ArcVarname_UG"
Ereignisse > Obergrenze überschritten:
1 LineareSkalierung | Y: "ArcVarname_OG" | a: 1 | X: "ArcVar" | b: <Toleranzbetrag>
2 LineareSkalierung | Y: "ArcVarname_UG" | a: 1 | X: "ArcVar" | b: -<Toleranzbetrag>
3 ArchiviereVariable | Variable: "ArcVar"
Ereignisse > Untergrenze unterschritten:
die selben 3 Funktionen wie bei Obergrenze überschritten
bei den beiden internen Variablen "ArcVarname_OG" und "ArcVarname_UG" den Startwert 0 festlegen.
Ich würde aber wahrscheinlich die Änderungsbetrags-Überwachung in der SPS programmieren und der Visu eine gefilterte Kopie der Variablen zur Archivierung übergeben.

Harald


----------

