Ihre Cookie-EinstellungenDatenschutz-Bestimmungen
Wir haben die Datenerfassung auf unserer Website auf ein Minimum reduziert. Neben den für das Funktionieren der Website notwendigen Cookies verwenden wir Performance Cookies, Funktionale Cookies und Marketing Cookies. Diese helfen uns dabei, die Seite schneller, schöner und nutzerfreundlicher zu machen. Ist das für Sie ok?
Wir verwenden Ihre Daten zu folgenden Zwecken:
In diesem Artikel lernen Sie das Modbus-RTU-Protokoll kennen, das im Prozessleitsystem weit verbreitet ist.
Inhalt:
Das Modbus-Kommunikationsprotokoll basiert auf einer Master-Slave-Architektur. Es verwendet RS-485-, RS-422- und RS-232-Schnittstellen sowie Ethernet-TCP/IP-Netzwerke (Modbus-TCP-Protokoll) für die Datenübertragung.
Die Modbus-RTU-Nachricht besteht aus der Adresse des SlaveID-Gerätes, dem Funktionscode, den speziellen Daten, abhängig vom Funktionscode und der Prüfsumme (Cyclic Redundancy Check - CRC).
SlaveID | Function code | Special data | CRC |
Wenn Sie die SlaveID-Adresse und die CRC-Prüfsumme abtrennen, erhalten Sie die PDU, Protocol Data Unit, die somit aus Function Code unf Special Data besteht.
SlaveID (Lände 1 Byte) ist die Adresse des Geräts, sie kann einen Wert von 0 bis 247 annehmen, Adressen von 248 bis 255 sind reserviert.
Die Daten werden im Modul in 4 Tabellen gespeichert.
Zwei Tabellen sind schreibgeschützt und können nur ausgelesen werden und zwei Tabellen sind Schreib-Lese-Tabellen.
In jede Tabelle kann 9999 Werte umfassen.
Lese-/Schreibzugriff
REGISTERNUMMER | REGISTERADRESSE HEX | TYP | NAME | TYP |
---|---|---|---|---|
1-9999 | 0000 to 270E | lesen-schreiben | Discrete Output Coils | DO |
10001-19999 | 0000 to 270E | lesen | Discrete Input Contacts | DI |
30001-39999 | 0000 to 270E | lesen | Analog Input Registers | AI |
40001-49999 | 0000 to 270E | lesen-schreiben | Analog Output Holding Registers | AO |
Die Modbus-Nachricht verwendet die Registeradresse.
Zum Beispiel hat das erste Register des AO Holding Register die Nummer 40001, aber seine Adresse ist 0000.
Die Differenz zwischen diesen beiden Größen nennt man "Offset".
Jede Tabelle hat jeweils ihren eigenen Offset: 1, 10001, 30001 und 40001.
Nachfolgend ist ein Beispiel für eine Modbus-RTU-Anforderung zum Erhalten des Analog Input-Werts der Holding-Register aus den Registern Nr. 40108 bis 40110 mit der Adresse des Geräts 17 dargestellt.
11 03 006B 0003 7687
11 | DIE ADRESSE VON SLAVEID DEVICE (17 = 11 HEX) |
03 | Function Code |
006B | Die Adresse des ersten Registers (40108-40001 = 107 = 6B hex) |
0003 | Die Anzahl der erforderlichen Register (lesen 3 Register von 40108 bis 40110) |
7687 | CRC Prüfsumme |
Als Antwort auf das Modbus-RTU-Slave-Gerät erhalten wir:
11 03 06 AE41 5652 4340 49AD
Die Werte der Analogen I/O Register sind je 16bit groß. Die Anfrage nach den Werten aus den drei Registern erzeugt also eine Antwort, die 6 Bytes lang ist.
11 | DEVICE ADDRESS (17 = 11 hex) | SlaveID |
03 | Function Code | Funktionskode |
06 | Die Anzahl der Antwort-Bytes (6 Bytes folgen) | Byte-Anzahl |
AE | Der Wert des oberen Registerbytes (AE hex) | Registerwert Hi (AO0) |
41 | Das niederwertige Byte des Registers (41 hex) | Registerwert Lo (AO0) |
56 | Der Wert des oberen Registerbytes (56 hex) | Registerwert Hi (AO1) |
52 | Das niederwertige Byte des Registers (52 hex) | Registerwert Lo (AO1) |
43 | Der Wert des oberen Registerbytes (43 hex) | Registerwert Hi (AO2) |
40 | Das niederwertige Byte des Registers (40 hex) | Registerwert Lo (AO2) |
49 | Prüfsumme | CRC Wert Hi |
AD | Prüfsumme | CRC Wert Lo |
Das analoge Ausgangsregister AO0 hat den Wert AE 41 HEX oder 44609 im Dezimalsystem.
Das Analogausgaberegister AO1 hat den Wert 56 52 HEX oder 22098 im Dezimalsystem.
Das Analogausgaberegister AO2 hat einen Wert von 43 40 HEX oder 17216 im Dezimalsystem.
Der AE 41 HEX-Wert beträgt 16 Bit 1010 1110 0100 0001, kann je nach Darstellung (LSB links oder rechts) auch auf anders aussehen.
Je nach Anwendung können die Werte aber auch anders interpretieren So ergäbe der Wert von Register 40108 in Kombination mit Register 40109 einen 32-Bit-Wert: AE 41 56 52.
Hier einige Beispiele für die Interpretation der Werte der Register 40108 (AE 41) und 40108 in Kombination mit 40109 (AE 41 56 52).
Ansichtstyp | Wertbereich | Beispiel in HEX | In Dezimalform |
---|---|---|---|
Inhalt des Registers 40108, interpretiert als 16-Bit Ganzzahl ohne Vorzeichen | 0 bis 65535 | AE41 | 44,609 |
Inhalt des Registers 40108, interpretiert als 16-Bit Ganzzahl mit Vorzeichen | -32768 bis 32767 | AE41 | -20,927 |
Inhalt des Registers 40108, interpretiert als ASCII-Zeichenkette aus zwei Zeichen | 2 char | AE41 | ® A |
diskreter Ein-/Ausgabe-Wert | 0 und 1 | 0001 | 0001 |
Inhalt der Registers 40108 und 40109, interpretiert als 32-Bit Ganzzahl ohne Vorzeichen | 0 bis 4,294,967,295 | AE41 5652 | 2,923,517,522 |
Inhalt der Registers 40108 und 40109, interpretiert als 32-Bit Ganzzahl mit Vorzeichen | -2,147,483,648 bis 2,147,483,647 | AE41 5652 | -1,371,449,774 |
Inhalt der Registers 40108 und 40109, interpretiert als 32-Bit-IEEE-Gleitkommazahl mit einfacher Genauigkeit | 1,2·10−38 bis 3,4×10+38 | AE41 5652 | -4.395978 E-11 |
Inhalt der Registers 40108 und 40109, interpretiert als ASCII-Zeichenkette aus vier Zeichen | 4 char | AE41 5652 | ® A V R |
Hier ist eine Tabelle mit den Codes zum Lesen und Schreiben der Modbus-RTU-Register.
FUNKTIONSKODE | WAS DIE FUNKTION TUT | WERTTYP | ZUGRIFFSTYP | |
---|---|---|---|---|
01 (0x01) | Liest DO | Read Discrete Output Coil | Diskret | Lesen |
02 (0x02) | Liest DI | Read Discrete Input Contact | Diskret | Lesen |
03 (0x03) | Liest AO | Read Analog Output Holding Register | 16 Bit | Lesen |
04 (0x04) | Liest AI | Read Analog Input Register | 16 Bit | Lesen |
05 (0x05) | Schreibt ein DO | Setzen einer Discrete Output Coil | Diskret | Schreiben |
06 (0x06) | Schreibt ein AO | Setzen eines Analog Output Holding Registers | 16 Bit | Schreiben |
15 (0x0F) | Aufzeichnung mehrerer DOs | Setzen mehrerer Discrete Output Coil | Diskret | Schreiben |
16 (0x10) | Aufzeichnung mehrerer AOs | Setzen mehrerer Analog Output Holding Registers | 16 Bit | Schreiben |
Dieser Befehl dient zum Lesen der Werte der DO-Digitalausgänge.
Die PDU-Anfrage spezifiziert die Startadresse des ersten auszulesenden DO-Registers sowie die Gesamtanzahl der auszulesenden DO-Werte. In der PDU werden die DO-Werte von Null beginnend adressiert.
In der Antwort werden die DO-Werte zu Bytes zusammengefasst, deren Bits den ausgelesenen Werten entsprechen.
Die Bitwerte sind als 1 = EIN und 0 = AUS definiert.
Das LSB (Least Significant Bit) des ersten Datenbytes enthält den DO-Wert, dessen Adresse in der Anforderung angegeben wurde. Die restlichen Bits werden aufsteigend mit den nächsten ausgelesenen Werten besetzt.
Wenn weniger als acht DO-Werte angefordert wurden, werden die verbleibenden Bits in der Antwort mit Nullen aufgefüllt (in der Richtung vom LSB zum MSB). Der Byte Count in der Antwort, wie viele Datenbytes übermittelt werden.
Beispiel für eine DO-Abfrage von Register 20 bis 56 des Gerätes mit SlaveID-Adresse 17: Die Adresse des ersten Registers ist dabei 0013 hex = 19 sein, da die Register ab Adresse 0 gezählt werden (0014 hex = 20, -1 Nullpunktverschiebung = wir erhalten 0013 hex = 19). Wir erwarten als Antwort 37 bits, was 5 Bytes entspricht (leere bits werden mit Nullen aufgwefüllt
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
01 | Funktionaler Code | 01 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 05 | Anzahl der Antwortbytes |
13 | Adresse des ersten Registers Lo Bytes | CD | Registerwert DO 27-20 (1100 1101) |
00 | Anzahl der Register Hi Bytes | 6B | Registerwert DO 35-28 (0110 1011) |
25 | Anzahl der Register Lo Bytes | B2 | Registerwert DO 43-36 (1011 0010) |
0E | Prüfsumme CRC | 0E | Registerwert DO 51-44 (0000 1110) |
84 | Prüfsumme CRC | 1B | Registerwert DO 56-52 (0001 1011) |
45 | Prüfsumme CRC | ||
E6 | Prüfsumme CRC |
Die Ausgabezustände von DO 27-20 werden als die Werte des Bytes CD hex oder im Binärsystem 1100 1101 angezeigt.
Im Register DO 56-52 wurden 5 Bits auf der rechten Seite angefordert, und die restlichen Bits sind bis zum vollen Byte (0001 1011) mit Nullen aufgefüllt.
Kanäle | - | - | - | DO 56 | DO 55 | DO 54 | DO 53 | DO 52 |
---|---|---|---|---|---|---|---|---|
Bits | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
Hex | 1B |
Dieser Befehl wird zum Lesen der Werte der digitalen Eingänge DI verwendet.
Beispiel für eine DI-Anforderung aus den Registern von 10197 bis 10218 des Gerätes mit der SlaveID-Adresse 17. Die Adresse des ersten Registers wird 00C4 hex = 196 sein, da die Register ab Adresse 0 gezählt werden. Über den Befehl (DI auslesen) ist ersichtlich, welcher Offset zu wählen ist.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
02 | Funktionaler Code | 02 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 03 | Anzahl der Antwortbytes |
C4 | Adresse des ersten Registers Lo Bytes | AC | Registerwert DI 10204-10197 (1010 1100) |
00 | Anzahl der Register Hi Bytes | DB | Registerwert DI 10212-10205 (1101 1011) |
16 | Anzahl der Register Lo Bytes | 35 | Registerwert DI 10218-10213 (0011 0101) |
BA | Prüfsumme CRC | 20 | Prüfsumme CRC |
A9 | Prüfsumme CRC | 18 | Prüfsumme CRC |
Dieser Befehl dient zum Lesen der Werte der Analogausgänge AO.
Beispiel für eine AO-Anforderung aus den Registern von 40108 bis 40110 für das Gerät mit der SlaveID 17. Die Adresse des ersten Registers wird 006B hex = 107 sein, da die Register ab Adresse 0 gezählt werden. Über den Befehl (AO auslesen) ist ersichtlich, welcher Offset zu wählen ist.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
03 | Funktionaler Code | 03 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 06 | Anzahl der Antwortbytes bei 16bit pro Wert) |
6B | Adresse des ersten Registers Lo Bytes | AE | Registerwert Hi #40108 |
00 | Anzahl der Register Hi Bytes | 41 | Registerwert Lo #40108 |
03 | Anzahl der Register Lo Bytes | 56 | Registerwert Hi #40109 |
76 | Prüfsumme CRC | 52 | Registerwert Lo #40109 |
87 | Prüfsumme CRC | 43 | Registerwert Hi #40110 |
40 | Registerwert Lo #40110 | ||
49 | Prüfsumme CRC | ||
AD | Prüfsumme CRC |
Dieser Befehl wird zum Lesen der Werte der Analogeingänge AI verwendet.
Beispiel für eine AI-Anforderung aus dem Register # 30009 für das Gerät der SlaveID 17. Die Adresse des ersten Registers ist 0008 hex = 8, da die Register ab Adresse 0 gezählt werden. Über den Befehl (AI auslesen) ist ersichtlich, welcher Offset zu wählen ist.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
04 | Funktionaler Code | 04 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 02 | Anzahl der Antwortbytes |
08 | Adresse des ersten Registers Lo Bytes | 00 | Registerwert Hi #30009 |
00 | Anzahl der Register Hi Bytes | 0A | Registerwert Lo #30009 |
01 | Anzahl der Register Lo Bytes | F8 | Prüfsumme CRC |
B2 | Prüfsumme CRC | F4 | Prüfsumme CRC |
98 | Prüfsumme CRC |
Mit diesem Befehl wird ein Wert des digitalen DO-Ausgangs gesetzt.
Der Wert von FF 00 hex setzt den Ausgang auf ON.
Der Wert 00 00 hex setzt den Ausgang auf OFF.
Alle anderen Werte sind ungültig und werden ignoriert (Ausgabewert bleibt unverändert).
Die normale Antwort auf eine solche Anforderung ist ein Echo (eine Wiederholungsanforderung), das nach Setzen des DO-Zustands zurückgegeben wird.
Beispiel für das Setzen eines DO-Wertes (ON) im Register Nr. 173 des Gerätes mit der SlaveID 17. Die Adresse des Registers ist 00AC hex = 172, da die Register ab Adresse 0 gezählt werden. Über den Befehl (DO setzen) ist ersichtlich, welcher Offset zu wählen ist.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
05 | Funktionaler Code | 05 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 00 | Adresse des ersten Registers Hi Bytes |
AC | Adresse des ersten Registers Lo Bytes | AC | Adresse des ersten Registers Lo Bytes |
FF | Wert der Hi Bytes | FF | Wert der Hi Bytes |
00 | Wert der Lo Bytes | 00 | Wert der Lo Bytes |
4E | Prüfsumme CRC | 4E | Prüfsumme CRC |
8B | Prüfsumme CRC | 8B | Prüfsumme CRC |
In der Anfrage wird bestimmt, dass der Wert auf ON (FF 00) gesetzt werden soll. In der Antwort wird bestätigt, dass dieser jetzt auf ON (FF 00) steht, ungeachtet dessen, welchen Wert (ON oder OFF) er vorher hatte.
Mit diesem Befehl wird ein Wert des Analogausgangs AO gesetzt.
Beispiel für das Setzen eines AO-Wertes im Register Nr. 40002 des Gerätes mit der SlaveID 17. Die Adresse des Registers ist 0001 hex = 1, da die Register ab Adresse 0 gezählt werden. Über den Befehl (AO setzen) ist ersichtlich, welcher Offset zu wählen ist.
Wie beim Setzen eines DO-Wertes, ist auch hier die normale Antwort auf eine solche Anforderung ein Echo (eine Wiederholungsanforderung), das nach Setzen des AO-Wertes zur Bestätigung zurückgegeben wird.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
06 | Funktionaler Code | 06 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 00 | Adresse des ersten Registers Hi Bytes |
01 | Adresse des ersten Registers Lo Bytes | 01 | Adresse des ersten Registers Lo Bytes |
00 | Wert der Hi Bytes | 00 | Wert der Hi Bytes |
03 | Wert der Lo Bytes | 03 | Wert der Lo Bytes |
9A | Prüfsumme CRC | 9A | Prüfsumme CRC |
9B | Prüfsumme CRC | 9B | Prüfsumme CRC |
Dieser Befehl wird verwendet, um mehrere Werte des Digitalausgangs DO auf einmal zu setzen.
Ein Beispiel für das Schreiben in mehrere digitale Ausgänge mit den Registeradressen 20 bis 29 für das Gerät mit der SlaveID 17. Die Adresse des ersten Registers lautet 0013 hex = 19, da die Adressen ab 0 gezählt werden. Die Werte (ein Bit pro Ausgang) werden zu Bytes zusammengefasst und bei Bedarf mit Nullen aufgefüllt. In unserem Beispiel wären das zwei Bytes, 1100 1101 für die Register 27-20 und 0000 0001 für die Register 29 bis 28, wobei Register 29 mit der 1 und 28 mit der 0 beschrieben wird. Die restlichen sechs Bits werden mit Nullen aufgefüllt.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
0F | Funktionaler Code | 0F | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 00 | Adresse des ersten Registers Hi Bytes |
13 | Adresse des ersten Registers Lo Bytes | 13 | Adresse des ersten Registers Lo Bytes |
00 | Anzahl der zu beschreibenden Register Hi Bytes | 00 | Anzahl der gesetzten Register Hi Bytes |
0A | Anzahl der zu beschreibenden Register Lo Bytes | 0A | Anzahl der gesetzten Register Lo Bytes |
02 | Anzahl der Bytes, die die zu setzenden Werte enthalten | 26 | Prüfsumme CRC |
CD | Wert des Bytes für die Register 27-20 (1100 1101) | 99 | Prüfsumme CRC |
01 | Wert des Bytes für die Register 29-28 (0000 0001) | ||
BF | Prüfsumme CRC | ||
0B | Prüfsumme CRC |
Die Antwort gibt die Anzahl der gesetzten Register zurück.
Dieser Befehl wird verwendet um mehrere Werte im Analogen Ausgangsregister AO zu setzen.
Ein Beispiel für das Schreiben zweier Werte ins Register des Analogausgangs an die Registeradressen Nr. 40002 und 40003 für das Gerät mit der SlaveID 17. Die Adresse des ersten Registers lautet 0001 hex = 1, da die Adressen ab 0 gezählt werden.
Als Antwort wird die Anzahl der durch den Befehl beschriebenen Register zurückgegeben.
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
11 | Geräteadresse | 11 | Geräteadresse |
10 | Funktionaler Code | 10 | Funktionaler Code |
00 | Adresse des ersten Registers Hi Bytes | 00 | Adresse des ersten Registers Hi Bytes |
01 | Adresse des ersten Registers Lo Bytes | 01 | Adresse des ersten Registers Lo Bytes |
00 | Anzahl der Register Hi Bytes | 00 | Anzahl der aufgezeichneten Register Hi Bytes |
02 | Anzahl der Register Lo Bytes | 02 | Anzahl der aufgezeichneten Register Lo Bytes |
04 | Anzahl der Bytes, die gesetzt werden sollen. Hier: 2 Werte mit je 16bit. | 12 | Prüfsumme CRC |
00 | Wert Hi 40002 | 98 | Prüfsumme CRC |
0A | Wert Lo 40002 | ||
01 | Wert Hi 40003 | ||
02 | Wert Lo 40003 | ||
C6 | Prüfsumme CRC | ||
F0 | Prüfsumme CRC |
Wenn das Gerät eine Anforderung empfängt, die Anforderung aber nicht verarbeitet werden kann, antwortet das Gerät mit einem geänderten Funktionscode, der angibt, dass die Anfrage nicht bearbeitet werden konnte, und einem Fehlercode, der den Grund dafür nennt.
Die Antwort wiederholt dabei das Bitmuster des Funktionscodes, setzt das Most Significant Bit (MSB) aber auf 1.
Beispiele dazu:
Funktionscode aus der Anfrage | Geänderter Funktionscode als Antwort |
---|---|
01 (01 hex) 0000 0001 (Lies digitalen Ausgang!) | 129 (81 hex) 1000 0001 (Konnte digitalen Ausgang nicht lesen.) |
02 (02 hex) 0000 0010 (Lies digitalen Eingang!) | 130 (82 hex) 1000 0010 (Konnte digitalen Eingang nicht lesen.) |
03 (03 hex) 0000 0011 (Lies analogen Ausgang!) | 131 (83 hex) 1000 0011 (Konnte analogen Ausgang nicht lesen.) |
04 (04 hex) 0000 0100 (Lies analogen Eingang!) | 132 (84 hex) 1000 0100 (Konnte analogen Eingang nicht lesen.) |
05 (05 hex) 0000 0101 (Setze einen digitalen Ausgang!) | 133 (85 hex) 1000 0101 (Konnte den digitalen Ausgang nicht setzen.) |
06 (06 hex) 0000 0110 (Setze einen analogen Ausgang!) | 134 (86 hex) 1000 0110 (Konnte den Analogen Ausgang nicht setzen.) |
15 (0F hex) 0000 1111 (Setze mehrere digitale Ausgänge!) | 143 (8F hex) 1000 1111 (Beim Setzen der digitalen Ausgänge ist ein Fehler aufgetreten.) |
16 (10 hex) 0001 0000 (Setze mehrere analoge Ausgänge!) | 144 (90 hex) 1001 0000 (Beim Setzen der analogen Ausgänge ist ein Fehler aufgetreten.) |
Beispiel für eine Anfrage und Antwort mit Fehler:
BYTE | ANFRAGE | BYTE | ANTWORT |
---|---|---|---|
(Hex) | Feldname | (Hex) | Feldname |
0A | Geräteadresse | 0A | Geräteadresse |
01 | Funktionaler Code (Lies digitalen Ausgang!) | 81 | Funktionscode mit geändertem Bit |
04 | Adresse des ersten Registers Hi Bytes | 02 | Fehlercode (s.u.) |
A1 | Adresse des ersten Registers Lo Bytes | B0 | Prüfsumme CRC |
00 | Anzahl der Register Hi Bytes | 53 | Prüfsumme CRC |
01 | Anzahl der Register Lo Bytes | ||
AC | Prüfsumme CRC | ||
63 | Prüfsumme CRC |
Erläuterung der Fehlercodes
01 | Unbekannter Funktionscode. |
02 | Die in der Anfrage angegebene Registeradresse ist nicht verfügbar. |
03 | Der im Abfragedatenfeld enthaltene Wert ist ein ungültiger Wert. |
04 | Ein nicht behebbarer Fehler trat auf, während der Slave versuchte, die angeforderte Aktion auszuführen. |
05 | Der Slave hat die Anfrage angenommen und bearbeitet sie, aber es dauert lange. Diese Antwort verhindert, dass der Host einen Zeitüberschreitungsfehler erzeugt. |
06 | Der Slave ist mit der Verarbeitung eines Befehls beschäftigt. Der Master muss die Nachricht später wiederholen, wenn der Slave freigegeben wird. |
07 | Der Slave kann die in der Anforderung angegebene Programmfunktion nicht ausführen. Dieser Code wird bei einer erfolglosen Programmanforderung mit Funktionen mit den Nummern 13 oder 14 zurückgegeben. Der Master muss Diagnoseinformationen oder Fehlerinformationen vom Slave anfordern. |
08 | Der Slave hat beim Lesen des Erweiterungsspeichers einen Paritätsfehler festgestellt. Der Master kann die Anforderung wiederholen, aber normalerweise sind in solchen Fällen Reparaturen erforderlich. |
Im Folgenden sind die Programme aufgeführt, die die Arbeit mit Modbus erleichtern.
DCON Utility Pro mit Unterstützung für Modbus RTU, ASCII, DCON. Herunterladen
Modbus Master Tool mit Unterstützung für Modbus RTU, ASCII, TCP. Herunterladen
Modbus TCP client mit Modbus-TCP-Unterstützung. Herunterladen