Step 7 Maximale DB Größe 64K - Wie wird die Größe gezählt?

AutomationSE

Level-1
Beiträge
33
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuchge gerade eine AWL Datei zu übersetzen, in der ich 39136 Bits erstellen möchte. Nun bricht der Übersetzer allerdings folgender Fehler Meldung ab:

Max Vars Länge von 64K überschritten.

Wenn ich aber meine Bit Anzahl durch 8 Teile komme ich auf 4392 Bytes, welches ja um einiges geringer ist. Warum also diese Fehlermeldung?

Besten Dank vorab.

mfg.
Markus
 
Hast Du zwischen Deinen Bits Lücken? (z.B. Alignment zwischen Strukturen oder Arrays)
Wie sieht die Deklaration/Struktur des DB aus?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich denke ich habe keine Lücken zwischen den Bits. Die AWL Quelle sieht wie folgt aus:

DATA_BLOCK "SUED_1_EG"
TITLE =
VERSION : 0.1
STRUCT
D0 : BOOL; //
D1 : BOOL; //
D2 : BOOL; //
....
D34767 : BOOL; //
D34768 : BOOL; //
D34769 : BOOL; //
END_STRUCT ;
BEGIN
D0 := FALSE;
D1 := FALSE;
D2 := FALSE;
D3 := FALSE;
....
D34767 := FALSE;
D34768 := FALSE;
D34769 := FALSE;
END_DATA_BLOCK

Wenn ich nur die Hälfte der Bits anlege geht das ganze. Im DB Editor sehe ich dann eben als Letzte Adresse die Byte 2150. Ich hab dann auch versucht einfach diese ersten 2150 Bits zu kopieren. Klappt auch soweit, nur wenn ich speichern bekomme ich die Meldung: "Die Schnittstelle überschreitet Größe von 65354 Bytes". Die Anzeige im Editor zeigt beim letzten Bit nur die Adresse 4300.

Besten Dank vorab.

Gruß
Markus
 
Ich denke mein Problem ist das scheinbar jede Deklaration im Hintergrund 2Byte belegt, so daß ich die Konfiguration mittels Doppelworten wahrscheinlich unterbringen kann. Aus der Online Hilfe:

Eine einzelne elementare Deklaration benötigt 2 Bytes. Deklarationen in referenzierten Bausteinen wie Multiinstanzen oder UDTs müssen wie STRUCTs berücksichtigt werden, bei denen jede einzelne Komponente 2 Bytes benötigen.

Trotzdem besten Dank.

Gruß
Markus
 
Gemeint ist nicht die DB-Größe sondern die Online-Beschreibung der Baustein-Schnittstelle (im Ladespeicher). Die ist offensichtlich auf eine maximale Größe von ca. 32700 Elementen begrenzt.

Warum deklarierst Du die tausenden BOOLs einzeln, kannst Du nicht ein "ARRAY [0..34769] OF BOOL" nehmen?
Oder Du verteilst die Bits auf 2 DBs.

Harald
 
Zurück
Oben