Modbus
Übersicht
Modbus ist ein einfaches Kommunikationsprotokoll, das häufig zur Datenübertragung von einem Industriegerät an eine HMI
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") |






