Bedien- und Programmieranleitung | Rexroth IndraLogic L40
04VRS
Beispiel
Zulässige Adressierung
StructInst : OutStruct;
pt : POINTER TO StructInst;
StructInst.Out03 := 2#11110000;
Der Compiler kennt die möglichen Einschränkungen der zugrundeliegenden
Prozessorplattform genau und legt die Elemente der Struktur so im Speicher
ab, dass er nur Adressen verwendet, die der Prozessor für die zugehörigen
Datentypen auch verwenden kann.
Werden Strukturen angelegt, die Elemente mit unterschiedlichen Datentypen
beinhalten, so fügt z. B. der Compiler bei der IndraLogic L10/L20 Füllbytes ein,
die für den Anwender nicht sichtbar sind.
Strukturunterschiede zwischen den Steuerungen
Programm:
TYPE OutStruct :
STRUCT
Out01 : BYTE;
Out02 : WORD;
Out03 : BYTE;
Out04 : DWORD;
END_STRUCT
END_TYPE
Diese Struktur bildet sich je nach Plattform wie folgt im Speicher ab; hier im
Vergleich zwischen den Steuerungen IndraLogic L40 DP und L20:
IndraLogic V,
IndraLogic VEP,
IndraLogic VPP,
IndraLogic L40
ADR0 Out01 : BYTE;
ADR1 Out02 : WORD;
ADR3 Out03 : BYTE;
ADR4 Out04 : DWORD;
ADR8 :
Abb.4-76:
Resultierendes, steuerungsabhängiges Speicherabbild
Die Abbildung der Strukturelemente unterscheidet sich, so dass beim Zugriff
auf die Strukturelemente eine kompatible Programmiermethode angewendet
werden muss, die unabhängig von der Abbildung in der Steuerung ist.
Die kompatible Verwendung der Strukturen sieht daher eine direkte Adressie‐
rung der Elemente über den Punkt-Operator vor:
Strukturname.Elementname := Elementwert;
Soll die Adresse einer Struktur über einen Zeiger an unterlagerte Funktionen
übergeben werden, so ist die Adressierung der Elemente ebenfalls nur durch
die Offsetberechnung durch den Compiler zulässig:
Strukturzeiger^.Elementname := Elementwert;
Programm:
(* Deklaration Strukturinstanz *)
(* Deklaration Zeiger auf Strukturinstanz *)
(* Zugriff auf Strukturelement *)
Electric Drives
| Bosch Rexroth AG
and Controls
Projektieren und Programmieren
IndraLogic L10/L20
ADR0 Out01 : BYTE;
ADR1 (Füllbyte)
ADR2 Out02 : WORD;
ADR4 Out03 : BYTE;
ADR5 (Füllbyte)
ADR6 (Füllbyte)
ADR7 (Füllbyte)
ADR8 Out04 : DWORD;
ADR12 :
79/213