Ich möchte nochmals auf die Adressierung zurückkommen.
Ich habe ein Struct mit 21 Einträgen
z.B
Code:
TYPE ST_Diag :
STRUCT
SFCCurrentStepRef :STRING (40);
SFCCurrentStepSystem :STRING (40);
etc....
Nun mache ich den Zugriff auf dieses Struct mit einem Pointer
Code:
ArrayDiagTemp := ADR (Diag);
Code:
ArrayDiagTemp: POINTER TO ARRAY [0.. n] OF STRING; (*This is the diag array which hold all the temp machine status*)
(*to access the diag infos more easly there is a struct defined which points to the same array*)
(*use this array only in *)
Frage 1;
Wieviel Speicherplatz wird nun für das ArrayDiagTemp reserviert?
Könnte dies auch mit
STRING (40) limitiert werden da die Daten im Struct nicht grösser sein können?
Was passiert nun wenn das Array keine explizite hat Zuweisung hat?
Es werden 80 Byte reserviert pro Array reserviert, oder?
Da mein Eintrag im Struct mit 40 Byte limitiert ist bleiben dann der Speicherplatz von 41-80 immer leer?
Frage 2;
Warum zeigt es nur bei der ersten Zeile im Array den Korrekten Text vom Struct an?
Ist jetzt nicht zu erwarten dass beim Array am Speicherplatz 81 sich der nächste String befindet?
Gemäss vorherigem Post sind die Daten im ASCII abgelegt. Warum ist nun aber 1 Eintrag korrekt und der Rest ist Müll?
Frage 3;
Warum befinde ich mich im Speicherabbild der SPS?
Ich hätte erwartet, dass ich mich lediglich im Speicher vom ArrayDiagTemp befinde.
Sorry dass ich hier nochmals nachhacken muss, aber es lässt mich nicht in Ruhe wenn ich die Funktionsweise nicht verstehe.
Danke für Eure Unterstützung?