TIA Frage zur Array länge in DB

Tmbiz

Level-2
Beiträge
590
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich muss gerade für eine Rezeptverwaltung etwas testen. Die Frage ist, ob ich alle nötigen Datensätze in ein Array legen kann, um dann damit einen später selektieren kann. Wir haben einfach mal gesagt, dass es 256 Variablen mit einer Grösse von 64 bit in dem Datensatz gibt. Diesen Prozess-Parameter-Datensatz, gibt es dann in X Variationen. Wie viele Variationen ich speichern kann, will ich testen. Dazu habe ich ein Array aufgebaut.

Array [0..x] of typeProzessParameter

Das UDT habe ich in 2 Versionen getestet.

Einmal habe ich eine UDT mit 256 Variablen mit dem Typ LINT (64bit) angelegt.

1713535401856.png

Dann habe ich ein UDT mit 64 Variablen vom Typ Bool erstellt. Den Typ habe ich dann 265 mal in einem weiteren UDT aufgerufen.

Das Ergebnis ist aber unterschiedlich:
1713537038087.png

Das UDT mit 265 LINT var kann ich 8192 mal in einem Array aufrufen, ohne das direkt eine Fehler angezeigt wird. Das UDT mit 265 Variablen bestehen aus 64 bool Variablen kann ich in dem Array nur 1020 mal aufrufen, ohne das direkt ein Fehler angezeigt wird.


Aber Übersetzen kann ich es nur, wenn ich die LINT Version auf 8000 Array Einträge reduzieren.
1713537243050.png

Kann mir jemand sagen, woher der Unterschied kommt? Warum kann ich das Array länger machen, wenn keine Bool Var verwende?
 

Anhänge

  • 1713535471832.png
    1713535471832.png
    34,2 KB · Aufrufe: 7
:unsure:
Weil Deine Bausteine optimiert sind und somit die Bool-Variablen eine Speichergröße von jeweils 1 Byte belegen.

Also belegt eine Boolvariable 8 bit und nicht 1 bit.

In dem Fall wäre dann ein nicht-optimierter DB optimierter (optimaler) für deine Bedürfnisse ... :cool:
Kann man das allgemein im Bereich Datenspeicherung so sagen? Hat das einen Nachteil, wenn man z.B. mit UDTs usw arbeiten will?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann man das allgemein im Bereich Datenspeicherung so sagen?
Nein.

Fest steht halt:
Bei einer S7-1500 werden die Daten so abgelegt, dass der Zugriff darauf optimiert wird.
Bei einer S7-1200 werden die Daten so abgelegt, dass der Speicherbedarf optimiert wird.
 
Zurück
Oben