Modbus

Übersicht

Modbus ist ein einfaches Kommunikationsprotokoll, das häufig zur Datenübertragung von einem Industriegerät an eine HMI (siehe HMI Modbus-Kommunikation mit AKD) oder SPS verwendet wird. Modbus TCP erweitert das Protokoll auf TCP/IP-Netzwerke durch Einbettung derselben Protocol Data Units in TCP/IP-Pakete. Der AKD unterstützt einen Modbus TCP Servicekanal für die Verbindung mit bis zu drei Mastern.

Die meisten Parameter werden über Modbus TCP unterstützt (see Modbus Parametertabelle), ausgenommen Befehle, die Zeichenfolgen ausgeben. Ausführliche Informationen zum Modbus-Protokoll finden Sie unter http://www.Modbus.org/specs.php.

Modbus Installation und Einrichtung

Die Modbus TCP-Verbindung wird über den Service-Port oben auf dem Servoverstärker (Stecker X11 ebenso wie bei Workbench) hergestellt. Schließen Sie den Servoverstärker und ein Gerät wie z. B. eine HMI an ein funktionierendes Ethernet-Netzwerk an. Schließen Sie zur vereinfachten Überprüfung und Konfiguration einen PC mit WorkBench an dasselbe Netzwerk an.

Nach dem Booten erscheint die blinkende Ethernet-IP-Adresse des Servoverstärkers auf der Anzeige an der Frontseite. Über diese Adresse können Sie für Modbus an Port 502 auf den Verstärker zugreifen. WorkBench verwendet dieselbe Adresse, aber eine andere Port-Nummer.

Sobald die Geräte angeschlossen sind, kann das angeschlossene Gerät mit Hilfe folgender Einstellungen eine Verbindung zum AKD herstellen:

  • IP Adresse: Von der Verstärkeranzeige oder dem WorkBench Verbindungs-Bildschirm ablesen
  • Port: 502
  • Modbus CRC-Code hinzufügen: Nein

Mitteilungsübersicht

Alle Parameter mit einer internen Datenbreite von 32 Bit und weniger werden als 32-Bit-Werte (2 Register) in Modbus abgebildet. Der Inhalt beider Register muss in derselben Nachricht gelesen oder geschrieben werden.Setzen Sie hierzu die Startadresse auf den untersten Index des Parameters und Registerzahl auf 2.

Alle Parameter mit einer internen Datenbreite von 64 Bit werden als 64-Bit-Werte (4 Register) in Modbus abgebildet. Der Inhalt aller vier Register muss in derselben Nachricht gelesen oder geschrieben werden.Setzen Sie hierzu die Startadresse auf den untersten Index des Parameters und Registerzahl auf 4.

Parameters werden wie im Terminal-Fenster von WorkBench skaliert.Beachten Sie jedoch, dass Gleitpunktwerte zur Beibehaltung der Präzision um einen zusätzlichen Faktor von 1000 skaliert werden.


  • Ein Leseversuch von Kommando oder Write-only Parametern gibt den Wert Null zurück.

Unterstützte Funktionen

Derzeit werden zwei Modbus-Funktionen unterstützt:

  • Halteregister lesen. Funktionscode = 0x03 (3).
  • Mehrfachregister schreiben. Funktionscode = 0x10 (16).

Um nur Zugriffe im 32-Bit und 64-Bit-Format zuzulassen, ist die Registerzahl für 32-Bit-Variablen auf 2 und für 64-Bit-Variablen auf 4 begrenzt. Sie können für bestimmte Register auch Lese-/Schreibzugriffe auf ein einzelne Register durchführen. Andere Mengen führen zur Rücksendung einer Ausnahmeantwort.

Halteregister lesen (0x03)

Dieser Funktionscode dient zum Lesen aller Register eines Servoverstärker-Parameters.

Anfrage

Funktionscode

1 Byte

0x03

Startadresse

2 Bytes

0x0000-0xFFFF (siehe Modbus Parametertabelle)

Anzahl Register

2 Bytes

2 (32-Bit-Werte) oder 4 (64-Bit-Werte)

Normale Antwort

Funktionscode

1 Byte

0x03

Byte-Zählung

1 Byte

2 x N*

Registerwert

N* x 2 Bytes

Daten

*N = Anzahl Register

Fehlerantwort

Funktionscode

1 Byte

0x83

Ausnahmecode

1 Byte

Siehe Ausnahme Antwortcodes

Das Beispiel unten zeigt einen Lesezugriff auf die Positionsregelkreis-Rückführung PL.FB an Index 588 (0x024C) mit einem Istwert von 0x1 2A05 F200.

Anfrage

Funktion

03

Startadresse

02 4C

Anzahl Register

00 04

Antwort

Funktion

03

Byte-Zählung

08

Register 588

00 00

Register 589

00 01

Register 590

2A 05

Register 591

F2 00

Mehrfachregister schreiben (0x10)

Dieser Funktionscode dient zum Schreiben aller Register eines Servoverstärker-Parameters.

Anfrage

Funktionscode

1 Byte

0x10

Startadresse

2 Bytes

0x0000-0xFFFF (siehe Modbus-Index in Parameterlisten)

Anzahl Register

2 Bytes

2 (32-Bit-Werte) oder 4 (64-Bit-Werte)

Byte-Zählung

1 Byte

2 x N*

Registerwert

N* x 2 Bytes

Daten

*N = Anzahl Register

Normale Antwort

Funktionscode

1 Byte

0x10

Startadresse

2 Bytes

0x0000-0xFFFF

Anzahl Register

2 Bytes

2 oder 4

Fehlerantwort

Funktionscode

1 Byte

0x90

Ausnahmecode

1 Byte

Siehe Ausnahme Antwortcodes

Das folgende Beispiel zeigt die Einstellung des Modus von Digitaleingang 1 (DIN1.MODE) an Index 122 (0x007A) auf den Wert 3.

Anfrage

Funktion

10

Startadresse

00 7A

Anzahl Register

00 02

Byte-Zählung

04

Register 122

00 00

Register 123

00 03

Antwort

Funktion

10

Startadresse

00 7A

Anzahl Register

00 02

Ausnahme Antwortcodes

Standardcodes

Beschreibung Ausnahmecode

Illegale Funktion

1

Illegale Datenadresse

2

Illegaler Datenwert

3

Slave Ausfall

4

Acknowledge

5

Slave beschäftigt

6

Speicher Paritätsfehler

8

Gateway nicht verfügbar

10

Gateway Ziel antwortet nicht

11

Herstellercodes

Beschreibung Ausnahmecode

Illegale Blockgröße (muss auf 2 Register für 32-Bit-Parameter und 4 Register für 64-Bit-Parameter lauten)

32

Unbekannter Parameter (fehlerhafte Adresse)

33

Error Processing Command (z. B. Datenwert liegt über dem Maximum)

34

Angefordertes Byte-Zählung ist ungültig

35

Liest die Produkt Seriennummer über Modbus

Die folgenden Registeradressen werden zum Lesen einer Seriennummer über Modbus benutzt.

Beschreibung Modbus Register Adresse Attribut
Registerinhalt 6000 16 Bit
Zeichen 1 und 2 6001 16 Bit
Zeichen 3 und 4 6002 16 Bit
Zeichen 5 und 6 6003 16 Bit
Zeichen 7 und 8 6004 16 Bit
Zeichen 9 und 10 6005 16 Bit
Zeichen 11 und 12 6006 16 Bit

Beispielsweise kann die Produktseriennummer "R-6789-12345" wie folgt ausgelesen werden.

Modbus Register Adresse Wert
6000 6
6001 0x522D ("R-")
6002 0x3637 ("67")
6003 0x3839 ("89")
6004 0x2D31 ("-1")
6005 0x3233 ("23")
6006 0x3435 ("45")