Modbus Einführung
Der VARIPACK hat eine eingebaute Modbus-RTU-Schnittstelle (XC3), welche die Überwachung des Frequenzumrichters ermöglicht. Die Schnittstelle kann für den Anschluss des Feldbusses (Modbus) oder des BEST Schnittstellenkonverters genutzt werden. Wenn der Feldbus angeschlossen ist, können die Betriebsparameter mit der BEST Software über Ethernet überwacht werden.
Konfiguration der Modbus Kommunikationsparameter
Die Konfiguration und Voreinstellungen finden sich in BEST unter "Konfiguration" in der Parametergruppe "Kommunikation". Die Parametrierung kann über BEST mit dem BEST Schnittstellenkonverter oder Ethernet erfolgen.
Verwendete Datentypen und Skalierung
Datentypen:
- int8: 8-Bit-Ganzzahl mit Vorzeichen
- uint8: 8-Bit-Ganzzahl ohne Vorzeichen
- int16: 16-Bit-Ganzzahl mit Vorzeichen
- uint16: 16-Bit-Ganzzahl ohne Vorzeichen
- uint32: 32-Bit-Ganzzahl ohne Vorzeichen
- float32: 32-Bit-Fließkommazahl
- string: Zeichenfolge
Skalierung der Werte:
- Skala 1: Der Wert ist der exakte Wert.
- Skala 10:
- Um einen Wert zu übertragen, muss er mit 10 multipliziert werden, d.h. 12,3 --> 123
- Ein empfangener Wert muss durch 10 geteilt werden, d.h. 123 --> 12,3
- Skala 100:
- Um einen Wert zu übertragen, muss er mit 100 multipliziert werden, d.h. 1,23 --> 123
- Ein empfangener Wert muss durch 100 geteilt werden, d.h. 123 --> 1,23
- Skala 1000:
- Um einen Wert zu übertragen, muss er mit 1000 multipliziert werden, d.h. 1,23 --> 1230
- Ein empfangener Wert muss durch 1000 geteilt werden, d.h. 1230 --> 1,23
- Skala 3600:
- Ein empfangener Wert muss durch 3600 geteilt werden, d.h. 360000 --> 100
32-Bit-Werte lesen und schreiben
32-Bit-Werte müssen als zwei aufeinander folgende Modbus-Register gelesen und geschrieben werden (Anzahl Register = 2).
Während Modbus.org spezifiziert hat, dass 16-Bit-Werte mit dem höchstwertigen Byte zuerst übertragen werden ("most significant byte first" oder "big endian byte order"), gibt es keinen Standard zur Anordnung der "Word", die bei 32-Bit-Werten oder Zeichenfolgen mit 2 oder mehr Registern ins Spiel kommen.
Standardmäßig überträgt der VARIPACK FDU .. FKU 32-Bit-Werte mit dem niederwertigsten "Word" zuerst ("least significant word first" oder "little endian word order").
Mittels Parameter kann jedoch auch die Übertragung mit dem höchstwertigen "Word" zuerst aktiviert werden ("most significant word first" oder "big endian word oder").
In den folgenden Tabellen ist dies beispielhaft für die Zahl 123456789 dargestellt, der die Hexadezimalzahl 75BCD15 entspricht.
Niederwertigstes "Word" zuerst:
Register X | Register X+1 | |||
|---|---|---|---|---|
Word 0 | Word 1 | |||
Byte 1 | Byte 0 | Byte 3 | Byte 2 | |
Bit 16 .. 9 | Bit 8 .. 0 | Bit 32 .. 25 | Bit 24 .. 17 | |
Binär | 11001101 | 00010101 | 00000111 | 01011011 |
Hexadezimal | CD | 15 | 07 | 5B |
Höchstwertigstes "Word" zuerst:
Register X | Register X+1 | |||
|---|---|---|---|---|
Word 1 | Word 0 | |||
Byte 3 | Byte 2 | Byte 1 | Byte 0 | |
Bit 32 .. 25 | Bit 24 .. 17 | Bit 16 .. 9 | Bit 8 .. 0 | |
Binär | 00000111 | 01011011 | 11001101 | 00010101 |
Hexadezimal | 07 | 5B | CD | 15 |
Zeichenfolgen per Modbus lesen
Mittels eines Byte lässt sich ASCII codiert ein Zeichen übertragen. Ein "Word" bzw. Register ermöglicht somit, zwei Zeichen zu übertragen.
Um längere Zeichenketten übermitteln zu können, werden daher meist mehrere Register für den string-Datentyp genutzt.
Die Zahl der zu lesenden Register ist in "Anzahl Register" aufgeführt.
Die Zeichenfolgen werden von links nach rechts übertragen und immer mit dem höchstwertigsten "Word" ("most significant word first" oder "big endian word order") und dem niederwertigsten Byte ("least significant byte first" oder "little endian byte order") zuerst.
In der folgenden Tabelle ist dies für beispielhaft für die Zeichenfolge ABCD dargestellt, die in einem String mit 3 Registern zur Verfügung gestellt wird.
Register X | Register X+1 | Register X+2 | ||||
|---|---|---|---|---|---|---|
Word 2 | Word 1 | Word 0 | ||||
Byte 4 | Byte 5 | Byte 2 | Byte 3 | Byte 0 | Byte 1 | |
Bit 40 .. 33 | Bit 48 .. 41 | Bit 24 .. 17 | Bit 32 .. 25 | Bit 8 .. 0 | Bit 16 .. 9 | |
Binär | 01000010 | 01000001 | 01000100 | 01000011 | 00000000 | 00000000 |
Hexadezimal | 42 | 41 | 44 | 43 | 0 | 0 |
ASCII | B | A | D | C | ||
Sonderfall:
Beim VARIPACK der 1. Generation werden bei Zeichenfolgen die ersten 4 Zeichen doppelt übertragen. Um dies zu umgehen, sollten die ersten beiden Register ignoriert werden.
Dazu sollte gegenüber der Dokumentation die Register-Adresse um 2 erhöht und die Anzahl der Register um 2 reduziert werden.
Modbus-Funktionscodes
Die folgenden Funktionscodes wurden aus dem Standard-Modbus-Protokoll implementiert:
Funktion | Code (hexadezimal) | Code (dezimal) |
|---|---|---|
Read holding registers (H) | 03 | 03 |
Read input register (I) | 04 | 04 |
Write single register (H) | 06 | 06 |
Write multiple registers (H) | 10 | 16 |
Read/write multiple registers (H) | 17 | 23 |
Alle Input-Register (I) können auch als Holding-Register (H) gelesen werden.
Modbus-Ausnahmecodes
Die folgenden Ausnahmecodes wurden aus dem Standard-Modbus-Protokoll implementiert:
Code | Name | Bedeutung |
|---|---|---|
01 | Illegal function | Der Funktionscode ist nicht gültig. |
02 | Illegal data address | Das angegebene Register ist nicht gültig. |
03 | Illegal data value | Der Wert ist nicht zulässig. |
04 | Server device failure | Unbehebbarer Fehler im Server-Gerät. |
Empfehlungen zur Kabelführung
- Es muss ein abgeschirmtes Kabel mit paarweise miteinander verdrillten Adern verwendet werden, das für die RS485-Kommunikation geeignet ist und eine nominelle Impedanz von 100 .. 130 Ω aufweist. Die beiden Signaldrähte müssen sich im gleichen Adernpaar befinden.
- Die Verdrahtungstopologie muss als "Daisy Chain" (Reihenschaltung) mit 120 Ω Abschlusswiderständen an jedem Ende der Busleitung erfolgen. Der VARIPACK hat einen kleinen Schalter rechts neben der Schnittstellenbuchse, mit dem der Abschlusswiderstand ein- oder ausgeschaltet werden kann.
- Schalter in rechter Position: Abschlusswiderstand ist nicht gesetzt (Werkseinstellung).
- Schalter in linker Position: Abschlusswiderstand ist gesetzt.
- Die maximale Kabellänge des Modbus-Kabels ist abhängig von der verwendeten Baudrate und der Anzahl der Geräte.
- Das Modbus-Kabel sollte so verlegt werden, dass der Einfluss der Leistungskabel minimiert wird. Bei Kreuzung von Leistungskabeln sollte ein 90°-Winkel erreicht werden. Parallel verlaufende Modbus- und Leistungskabel sollten durch einen möglichst großen angemessenen Abstand getrennt werden, ca. 20 .. 25 cm. Alternativ kann ein geerdetes Schirmblech oder ein geerdetes Metallrohr verwendet werden.
- An einem Modbus-Strang sollten max. 10 IQ Produkte angeschlossen sein. Sind andere Geräte an denselben Modbus-Strang angeschlossen, muss die maximale Stromaufnahme dieser anderen Geräte beachtet werden. Der Vorspannungswiderstand des gesamten Strangs sollte mindestens 450 Ohm betragen. Dieses IQ Produkt hat einen Vorspannungswiderstand von 10 kOhm (--> 1 kOhm bei 10 Geräten).
- Die CSV und der VARIPACK der 1. Generation haben eine galvanisch getrennte RS485-Schnittstelle.
- Die Abschirmung darf nur an einem Ende des Busses angeschlossen werden (bevorzugt am Client-Gerät), um unerwünschte Erdströme in der Abschirmung zu vermeiden. Nur Data+ und Data- müssen angeschlossen werden. COM1 GND kann angeschlossen werden, wenn dies für das Client-Gerät erforderlich ist. Die Abschirmung muss jedoch über die gesamte Bus-Länge ununterbrochen sein.

Siehe folgendes Beispiel zur Kabelführung:
