Herunterladen Inhalt Inhalt Diese Seite drucken

Packen Von Strukturen Bei Indralogic L10/20 - Bosch Rexroth IndraLogic L40 04VRS Bedienungs- Und Programmieranleitung

Inhaltsverzeichnis

Werbung

80/213
Bosch Rexroth AG | Electric Drives
Projektieren und Programmieren
pt := ADR (StructInst);
pt^.Out02 := 16#FF00;
Unzulässige Adressierung
4.11.3

Packen von Strukturen bei IndraLogic L10/20

Beispiel für die Compiler-Anwei‐
sung pack
Rexroth IndraLogic L40 04VRS | Bedien- und Programmieranlei‐
and Controls
(* Zeiger-Initialisierung *)
(* Zugriff auf Strukturelement per Zeiger *)
Die Adressierung eines Strukturelements durch Berechnungen im Code ist un‐
zulässig:
Strukturelementzeiger := ADR (Strukturname.Element);
Strukturelementzeiger := Strukturelementzeiger + n;
Strukturelementzeiger^ := Wert;
Dies ist unzulässig und führt zu Inkompatibilitäten, da die Offsetbildung zur Ad‐
ressierung eines Strukturelements durch Berechnung im Code nicht sicher
möglich ist. Die Anzahl der Füllbytes ist unter den Plattformen unterschiedlich.
Während bei der IndraLogic L40 Strukturen immer gepackt, das heißt ohne
Füllbytes im Speicher abgelegt werden, muss dies bei der IndraLogic L10/20
durch eine entsprechende Compileranweisung (Pragma "pack") bei der Struk‐
turdeklaration erzwungen werden.
Das Pragma {pack} wird ab der IndraWorks Logic-Version 02V09 unterstützt.
Das Pragma {pack} wird vom Compiler der IndraLogic L40 ignoriert, das heißt
es hat keine Auswirkung auf die Übersetzbarkeit und der Lauffähigkeit der Ap‐
plikation in der IndraLogic L40.
Programm:
TYPE Strukturname
STRUCT
{pack}
Element_01 : USINT;
Element_02 : DWORD;
Element_03 : BYTE;
Element_04 : INT;
END_STRUCT
END_TYPE
Die Struktur aus diesem
men folgendermaßen im Speicher abgelegt:
Byte-Ad‐
IndraLogic V,
resse
IndraLogic VEP,
IndraLogic VPP,
IndraLogic L40
0
Element_01
1
Element_02 (Byte 0)
2
Element_02 (Byte 1)
3
Element_02 (Byte 2)
4
Element_02 (Byte 3)
5
Element_03
6
Element_04 (Byte 0)
7
Element_04 (Byte 1)
8
9
Programmlisting
wird bei den verschiedenen Syste‐
IndraLogic L10/L20 oh‐
ne Pragma {pack}
Element_01
Füllbyte
Füllbyte
Füllbyte
Element_02 (Byte 0)
Element_02 (Byte 1)
Element_02 (Byte 2)
Element_02 (Byte 3)
Element_03
Füllbyte
tung
IndraLogic L10/L20 mit
Pragma {pack}
Element_01
Element_02 (Byte 0)
Element_02 (Byte 1)
Element_02 (Byte 2)
Element_02 (Byte 3)
Element_03
Element_04 (Byte 0)
Element_04 (Byte 1)

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis