Материал: m015000d

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

152 MODBUS-Funktionen

Beschreibung der MODBUS-Funktionen

6.3 Beschreibung der MODBUS-Funktionen

Alle MODBUS-Funktionen, die in dem WAGO ETHERNET TCP/IP FeldbusController realisiert sind, werden in der folgenden Weise ausgeführt:

Mit der Eingabe eines Funktionscodes stellt der MODBUS TCP-Master (z. B. PC) einen entsprechenden Request (Anfrage) an den Controller des Feldbusknoten.

Daraufhin gibt der Controller eine Antwort als Response-Telegramm an den Master zurück.

Erhält der Controller einen fehlerhaften Request, sendet er ein Fehler-

Telegramm (Exception) an den Master.

Dabei hat der in der Exception befindliche Exception Code die folgende

Bedeutung:

Exception Code

Bedeutung

0x01

Illegal Function

 

 

0x02

Illegal Data Address

 

 

0x03

Illegal Data Value

 

 

0x04

Slave Device Failure

 

 

0x05

Acknowledge

 

 

0x06

Server Busy

 

 

0x08

Memory Parity Error

 

 

0x0A

Gateway Path Unavailable

 

 

0x0B

Gateway Target Device Failed To Respond

 

 

In den anschließenden Kapiteln wird für jeden Funktionscode der Telegrammaufbau von Request, Response und Exception mit Beispielen beschrieben.

Hinweis

Bei den Read-Funktionen (FC1 – FC 4) können zusätzlich die Ausgänge geschrieben und zurückgelesen werden, indem für Adressen in dem Bereich

[0 hex - FF hex]ein Offset von 200hex (0x0200) und für Adressen in dem Bereich [6000 hex - 62FC hex] ein Offset von 1000hex (0x1000) zu der MODBUS-Adresse

dazu addiert wird.

WAGO-I/O-SYSTEM 750 ETHERNET TCP/IP

MODBUS-Funktionen 153

Beschreibung der MODBUS-Funktionen

6.3.1 Funktionscode FC1 (Read Coils)

Diese Funktion liest den Inhalt mehrerer Eingangsund Ausgangsbits.

Aufbau des Requests

Die Anfrage bestimmt die Startadresse und die Anzahl der Bits, die gelesen werden sollen.

Beispiel: Eine Anfrage, durch die die Bits 0 bis 7 gelesen werden sollen.

Byte

Feldname

Beispiel

Byte 0, 1

Transaction identifier

0x0000

 

 

 

Byte 2, 3

protocol identifier

0x0000

 

 

 

Byte 4, 5

length field

0x0006

 

 

 

Byte 6

unit identifier

0x01 nicht verwendet

 

 

 

Byte 7

MODBUS function code

0x01

 

 

 

Byte 8, 9

reference number

0x0000

 

 

 

Byte 10, 11

Bit count

0x0008

 

 

 

Aufbau der Response

Die aktuellen Werte der abgefragten Bits werden in das Datenfeld gepackt. Eine 1 entspricht dabei dem Zustand ON und eine 0 dem Zustand OFF. Das niederwertigste Bit des ersten Datenbytes enthält das erste Bit der Anfrage.

Die anderen folgen aufsteigend. Falls die Anzahl der Eingänge kein Vielfaches von 8 ist, werden die restlichen Bits des letzten Datenbytes mit Nullen aufgefüllt

Byte

Feldname

Beispiel

.....

 

 

 

 

 

Byte 7

MODBUS function code

0x01

 

 

 

Byte 8

Byte count

0x01

 

 

 

Byte 9

Bit values

0x12

 

 

 

Der Status der Eingänge 7 bis 0 wird als Byte-Wert 0x12 oder binär 0001 0010 angezeigt. Eingang 7 ist das höchstwertige Bit dieses Bytes und Eingang 0 das niederwertigste. Die Zuordnung erfolgt damit von 7 bis 0 mit OFF-OFF-OFF-ON-OFF-OFF-ON-OFF.

 

Bit:

0

0

0

1

0

0

1

0

 

 

 

Coil:

7

6

5

4

3

2

1

0

 

 

Aufbau der Exception

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Byte

 

 

Feldname

 

 

 

Beispiel

 

 

.....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Byte 7

 

 

MODBUS function code

0x81

 

 

 

 

 

 

 

 

 

 

 

Byte 8

 

 

Exception code

 

 

0x01 oder 0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WAGO-I/O-SYSTEM 750 ETHERNET TCP/IP

154 MODBUS-Funktionen

Beschreibung der MODBUS-Funktionen

6.3.2 Funktionscode FC2 (Read Input Discretes)

Diese Funktion liest den Inhalt mehrerer Eingangsbits (Digitaler Eingänge).

Aufbau des Requests

Die Anfrage bestimmt die Startadresse und die Anzahl der Bits, die gelesen werden sollen.

Beispiel: Eine Anfrage, durch die die Bits 0 bis 7 gelesen werden sollen.

Byte

Feldname

Beispiel

Byte 0, 1

Transaction identifier

0x0000

 

 

 

Byte 2, 3

protocol identifier

0x0000

 

 

 

Byte 4, 5

Length field

0x0006

 

 

 

Byte 6

unit identifier

0x01 nicht verwendet

 

 

 

Byte 7

MODBUS function code

0x02

 

 

 

Byte 8, 9

reference number

0x0000

 

 

 

Byte 10, 11

Bit count

0x0008

 

 

 

Aufbau der Response

Die aktuellen Werte der abgefragten Bits werden in das Datenfeld gepackt. Eine 1 entspricht dabei dem Zustand ON und eine 0 dem Zustand OFF. Das niederwertigste Bit des ersten Datenbytes enthält das erste Bit der Anfrage.

Die anderen folgen aufsteigend. Falls die Anzahl der Eingänge kein Vielfaches von 8 ist, werden die restlichen Bits des letzten Datenbytes mit Nullen aufgefüllt.

Byte

Feldname

Beispiel

.....

 

 

 

 

 

Byte 7

MODBUS function code

0x02

 

 

 

Byte 8

Byte count

0x01

 

 

 

Byte 9

Bit values

0x12

 

 

 

Der Status der Eingänge 7 bis 0 wird als Byte-Wert 0x12 oder binär 0001 0010 angezeigt. Eingang 7 ist das höchstwertige Bit dieses Bytes und Eingang 0 das niederwertigste. Die Zuordnung erfolgt damit von 7 bis 0 mit OFF-OFF-OFF-ON-OFF-OFF-ON-OFF.

 

Bit:

0

0

0

1

0

0

1

0

 

 

 

Coil:

7

6

5

4

3

2

1

0

 

 

Aufbau der Exception

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Byte

 

 

Feldname

 

 

 

Beispiel

 

 

.....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Byte 7

 

 

MODBUS function code

0x82

 

 

 

 

 

 

 

 

 

 

 

Byte 8

 

 

Exception code

 

 

0x01 oder 0x02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WAGO-I/O-SYSTEM 750 ETHERNET TCP/IP

MODBUS-Funktionen 155

Beschreibung der MODBUS-Funktionen

6.3.3 Funktionscode FC3 (Read multiple registers)

Diese Funktion dient dazu, eine Anzahl von Eingangsworten (auch ”Eingangsregister”) zu lesen.

Aufbau des Requests

Die Anfrage bestimmt die Adresse des Startwortes (Startregister) und die Anzahl der Register, die gelesen werden sollen. Die Adressierung beginnt mit 0.

Beispiel: Abfrage der Register 0 und 1.

Byte

Feldname

Beispiel

Byte 0, 1

Transaction identifier

0x0000

 

 

 

Byte 2, 3

protocol identifier

0x0000

 

 

 

Byte 4, 5

length field

0x0006

 

 

 

Byte 6

unit identifier

0x01 nicht verwendet

 

 

 

Byte 7

MODBUS function code

0x03

 

 

 

Byte 8, 9

reference number

0x0000

 

 

 

Byte 10, 11

Word count

0x0002

 

 

 

Aufbau der Response

Die Registerdaten der Antwort werden als 2 Bytes pro Register gepackt. Das erste Byte enthält dabei die höherwertigen Bits, das zweite die niederwertigen.

Byte

Feldname

Beispiel

.....

 

 

 

 

 

Byte 7

MODBUS function code

0x03

 

 

 

Byte 8

Byte count

0x04

 

 

 

Byte 9, 10

Value Register 0

0x1234

 

 

 

Byte 11, 12

Value Register 1

0x2345

 

 

 

Aus der Antwort ergibt sich, dass Register 0 den Wert 0x1234 und Register 1 den Wert 0x2345 enthält.

Aufbau der Exception

 

Byte

Feldname

Beispiel

 

 

.....

 

 

 

 

 

 

 

 

 

Byte 7

MODBUS function code

0x83

 

 

 

 

 

 

 

Byte 8

Exception code

0x01 oder 0x02

 

 

 

 

 

 

 

 

 

 

 

WAGO-I/O-SYSTEM 750 ETHERNET TCP/IP

156 MODBUS-Funktionen

Beschreibung der MODBUS-Funktionen

6.3.4 Funktionscode FC4 (Read input registers)

Diese Funktion dient dazu, eine Anzahl von Eingangsworten (auch ”Eingangsregister”) zu lesen.

Aufbau des Requests

Die Anfrage bestimmt die Adresse des Startwortes (Startregister) und die Anzahl der Register, die gelesen werden sollen. Die Adressierung beginnt mit 0.

Beispiel: Abfrage der Register 0 und 1.

Byte

Feldname

Beispiel

Byte 0, 1

Transaction identifier

0x0000

 

 

 

Byte 2, 3

protocol identifier

0x0000

 

 

 

Byte 4, 5

length field

0x0006

 

 

 

Byte 6

unit identifier

0x01 nicht verwendet

 

 

 

Byte 7

MODBUS function code

0x04

 

 

 

Byte 8, 9

reference number

0x0000

 

 

 

Byte 10, 11

Word count

0x0002

 

 

 

Aufbau der Response

Die Registerdaten der Antwort werden als 2 Bytes pro Register gepackt. Das erste Byte enthält dabei die höherwertigen Bits, das zweite die niederwertigen.

Byte

Feldname

Beispiel

.....

 

 

 

 

 

Byte 7

MODBUS function code

0x04

 

 

 

Byte 8

Byte count

0x04

 

 

 

Byte 9, 10

Value Register 0

0x1234

 

 

 

Byte 11, 12

Value Register 1

0x2345

 

 

 

Aus der Antwort ergibt sich, dass Register 0 den Wert 0x1234 und Register 1 den Wert 0x2345 enthält.

Aufbau der Exception

Byte

Feldname

Beispiel

.....

 

 

 

 

 

Byte 7

MODBUS function code

0x84

 

 

 

Byte 8

Exception code

0x01 oder 0x02

 

 

 

WAGO-I/O-SYSTEM 750 ETHERNET TCP/IP