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 | Adresse im Endgerät |
---|---|---|---|
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 | Adresse im Endgerät |
---|---|---|---|
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 | Adresse im Endgerät |
---|---|---|---|
Memory[0] | Wort | 16#4000 | 44001 |
Memory[1] | Wort | 16#4001 | 44002 |