



VORSICHT

Wenn Sie Pointer auf Adressen verwenden, können sich beim Online-Change Inhalte von Adressen verschieben! Wenn Sie direkte Adressen verwenden, verschieben sich Inhalte von Adressen beim Online-Change nicht!
Syntax:
%<memory area prefix> ( <size prefix> )? <memory position> <memory area prefix> : I | Q | M <size prefix> : X | B | W | D <memory position> : <number> ( .<number> )* // Depends on the target system
Bei der Angabe einer Adresse werden die Position im Speicher und die Größe mittels
spezieller Zeichenfolgen ausgedrückt. Eine Adresse ist gekennzeichnet mit dem Prozentzeichen
%
, dann folgt der Speicherbereichspräfix, der optionale Größenpräfix und die Speicherposition.
Die Nummerierung, mit der Sie die Speicherposition adressieren, ist zielsystemabhängig.
Speicherbereichspräfix |
|
---|---|
|
Eingangsspeicherbereich für Eingange, "Inputs" Für physikalische Eingänge über Eingangstreiber, "Sensoren" |
|
Ausgangsspeicherbereich für Ausgänge, "Outputs" Für physikalische Ausgänge über Ausgangstreiber, "Aktoren" |
|
Merkerspeicherbereich |
Größenpräfix |
Datentyp |
Datenbreite |
---|---|---|
Kein Größenpräfix |
Einzelnes Bit |
|
|
Einzelnes Bit |
|
|
|
8 Bits |
|
|
16 Bits |
|
|
32 Bits |
Beispiele
|
Einzelbitadresse des Ausgangsbits 7.5 |
|
Wortadresse des Eingangsworts 215 |
|
Bytesdresse des Ausgangsbytes 7 |
|
Adresse eines Doppelworts an Speicherstelle 48 im Merkerbereich. |
|
Wortadresse eines Eingangsworts, Interpretation abhängig von der aktuellen Steuerungskonfiguration |
|
Variablendeklaration mit Adressangabe eines Eingangsworts |
|
Boolesche Variablendeklaration Hinweis: Für boolesche Variable wird intern ein Byte alloziert, wenn keine Einzelbitadresse
angegeben ist. Eine Wertänderung von |
|
Boolesche Variablendeklaration mit expliziter Angabe einer Einzelbitadresse. Beim Zugriff wird nur das Eingangsbit 7.5 gelesen. |
Speicherposition
So stellen Sie sicher, dass die Adresse gültig ist:
Um in einer Applikation eine gültige Adresse zuzuweisen, muss Ihnen zunächst die geforderte
Position im Prozessabbild bekannt sein; das bedeutet der zuständige Speicherbereich:
Eingangs- (I), Ausgangs- (Q) oder Merkerspeicherbereich (M), siehe oben. Weiterhin
müssen Sie das erforderliche Größenpräfix angeben: Bit, BYTE
, WORD
, DWord
(siehe oben: X
, B
, W
, D
)
Eine entscheidende Rolle spielen die aktuell verwendete Gerätekonfiguration und -einstellungen
(Hardwarestruktur, Gerätebeschreibung, E/A-Einstellungen). Beachten Sie hier besonders die Unterschiede in der Interpretation
von Bitadressen, die es zwischen den Geräten mit "Byteadressierungsmodus" und denen
mit "Wordorientiertem IEC-Adressierungsmodus" gibt: Beispielweise adressiert die
Nummer vor dem Punkt der Bitadresse %IX5.5
in einem byteadressierenden Gerät Byte 5, während es in einem wordadressierenden
Gerät Word 5 adressiert wird. Dagegen ist die Adressierung mit Word- oder Byteadresse
unabhängig vom Gerätetyp: Mit %IW5
wird immer Word 5 angesprochen und mit Byteadresse %IB5
immer Byte 5. Abhängig von der Größe und dem Adressierungsmodus können Sie deshalb
mit der gleichen Adressangabe unterschiedliche Speicherzellen ansprechen.
Die nachfolgende Tabelle zeigt die Gegenüberstellung der Byteadressierung und wordorientierten IEC-Adressierung für Bits, Bytes, Words und Double Words. Auch zeigt sie die überlappenden Speicherbereiche, die im Falle der Byteadressierung vorliegen (siehe auch das Beispiel im Anschluss an die Tabelle).
Beachten Sie bei der Syntax, dass der IEC-Adressierungsmodus immer wordorientiert ist. Dabei steht vor dem Punkt die Wordnummer und nach dem Punkt die Bitnummer.

n = Bytenummer
Beispiel für Speicherbereichüberlappung im Falle des Byteadressierungsmodus
D0 enthält B0 - B3, W0 enthält B0 und B1, W1 enthält B1 und B2, W2 enthält B2 und B3. Folglich dürfen Sie, um die Überlappung zu umgehen, W1, aber auch D1, D2, D3 nicht für die Adressierung verwenden!
Siehe auch