Modbus Adressbereiche

Modbus definiert Zugriffsfunktionen für verschiedene Datenbereiche. Diese Datenbereiche werden in einem TwinCAT SPS-Programm als Variablen, beispielsweise als Word-Arrays, deklariert und dem Modbus-Slave-Funktionsbaustein als Eingangsparameter übergeben. Um die Bereiche eindeutig zu unterscheiden, hat jeder Bereich eine andere Modbus-Startadresse. Dieser Offset muss bei der Adressierung berücksichtigt werden.

Inputs

Der Datenbereich Inputs beschreibt üblicherweise die physikalischen Eingangsdaten, auf die nur lesend zugegriffen werden kann. Das können digitale Eingänge (Bit) oder Analogeingänge (Word) sein. Es liegt in der Hand des SPS-Programmierers, ob er dem Kommunikationspartner den direkten Zugriff auf die physikalischen Eingänge erlauben möchte. Es ist ebenfalls möglich, für die Modbus-Kommunikation einen Input-Bereich zu definieren, der nicht mit den physikalischen Eingängen identisch ist:

Definition der Modbus-Input-Daten als direktes Abbild der physikalischen Eingänge. Anfang und Größe des Datenbereichs können frei festgelegt werden und sind durch die reale Größe des Eingangsprozessabbildes der verwendeten Steuerung begrenzt.

VAR
Inputs AT%IW0 : ARRAY[0..255] OF WORD;
END_VAR

Definition der Modbus-Input-Daten als separater Modbus-Datenbereich unabhängig von den physikalischen Eingängen

VAR
Inputs : ARRAY[0..255] OF WORD;
END_VAR

Die maximale Größe des Input-Datenbereiches beträgt 2048 Words (ARRAY[0..2047] OF WORD).

Der Zugriff auf den Input-Bereich durch einen Modbus-Master ist mit folgenden Modbus-Funktionen möglich:

2 : Read Input Status
4 : Read Input Registers

Adressierung

Der Input-Bereich wird mit einem Offset 0 adressiert, das heißt, dass die im Telegramm übertragene Adresse 0 das erste Element im Input-Datenbereich anspricht.

Beispiele:

SPS-Variable

Zugriffsart

Adresse im
Modbus-Telegramm

Adresse im Endgerät
(Geräte-abhängig)

Inputs[0]

Wort

16#0

30001

Inputs[1]

Wort

16#1

30002

Inputs[0], Bit 0

Bit

16#0

10001

Inputs[1], Bit 14

Bit

16#1E

1001F

Outputs

Der Datenbereich Outputs beschreibt üblicherweise die physikalischen Ausgangsdaten, auf die lesend und schreibend zugegriffen werden kann. Outputs können digitale Ausgänge (Coils) oder Analogausgänge (Output Register) sein. Wie bei den Inputs ist kann der Bereich als physikalische Ausgangsvariable oder als einfache Variable deklariert werden.

Definition der Modbus-Output-Daten als direktes Abbild der physikalischen Ausgänge. Anfang und Größe des Datenbereichs können frei festgelegt werden und sind durch die reale Größe des Ausgangsprozessabbildes der verwendeten Steuerung begrenzt.

VAR
Outputs AT%QW0 : ARRAY[0..255] OF WORD;
END_VAR

Definition der Modbus-Output-Daten als separater Modbus-Datenbereich unabhängig von den physikalischen Ausgängen

VAR
Outputs : ARRAY[0..255] OF WORD;
END_VAR

Die maximale Größe des Output-Datenbereiches beträgt 14336 Words (ARRAY[0..14335] OF WORD).

Der Zugriff auf den Output-Bereich durch einen Modbus-Master ist mit folgenden Modbus-Funktionen möglich:

1 : Read Coil Status
3 : Read Holding Registers
5 : Force Single Coil
6 : Preset Single Register
15 : Force Multiple Coils
16 : Preset Multiple Registers

Adressierung

Der Output-Bereich wird mit einem Offset 16#800 adressiert, das heißt, dass die im Telegramm übertragene Adresse 16#800 das erste Element im Output-Datenbereich anspricht.

Beispiele:

SPS-Variable

Zugriffsart

Adresse im
Modbus-Telegramm

Adresse im Endgerät
(Geräte-abhängig)

Outputs[0]

Wort

16#800

40801

Outputs[1]

Wort

16#801

40802

Outputs[0], Bit 0

Bit

16#800

00801

Outputs[1], Bit 14

Bit

16#81E

0081F

Memory

Der Datenbereich Memory beschreibt einen SPS Variablenbereich ohne physikalische I/O-Zuordnung.

Definition der Modbus-Memory-Daten als SPS-Merker. Anfang und Größe des Datenbereichs können frei festgelegt werden.

VAR
Memory AT%MW0 : ARRAY[0..255] OF WORD;
END_VAR

Definition der Modbus-Memory-Daten als Variable ohne Merkeradresse

VAR
Memory : ARRAY[0..255] OF WORD;
END_VAR

Die maximale Größe des Memory-Datenbereiches beträgt 16384 Words (ARRAY[0..16383] OF WORD).

Der Zugriff auf den Memory-Bereich durch einen Modbus-Master ist mit folgenden Modbus-Funktionen möglich:

3 : Read Holding Registers
6 : Preset Single Register
16 : Preset Multiple Registers

Adressierung

Der Memory-Bereich wird mit einem Offset 16#4000 adressiert, das heißt, dass die im Telegramm übertragene Adresse 16#4000 das erste Wort im Memory-Datenbereich anspricht.

Beispiele:

SPS-Variable

Zugriffsart

Adresse im
Modbus-Telegramm

Adresse im Endgerät
(Geräte-abhängig)

Memory[0]

Wort

16#4000

44001

Memory[1]

Wort

16#4001

44002