Modbus-Ausnahme - Antwort-Codes und - Fehlersuche: Vollständige Analyse von 01 bis 11
Schlüsselwörter:Modbus-Ausnahme - Codes, Modbus-Troubleshooting, Modbus-Fehlercode, Modbus-Ausnahme - Code, Modbus-Kommunikationsfehler
In der industriellen Automatisierung ist Modbus-Kommunikationsfehler eines der größten Kopfschmerzen für Ingenieure. Wenn die Masterstation eine Anfrage sendet, gibt die Zwangsstation keine normalen Daten zurück, sondern eine "Ausnahmeantwort" - was darauf hindeutet, dass die Kommunikationsverbindung kein Problem hat, aber ein Fehler in der Geschäftslogik-Ebene aufgetreten ist. Das Verständnis der Bedeutung jedes Ausnahmecodes, der Auslöserbedingungen und der Fehlerbehebungsmethoden ist für jeden Automatisierungsingenieur ein Muss.
In diesem Artikel werden die Triggermechanismen, Probenabläufe und Lösungen für alle 11 Standard-Ausnahmecodes ausgehend von der Modbus-Protokollspezifikation (V1.1b3) und in Verbindung mit realen industriellen Fälle eingehend untersucht. Egal, ob Sie zum ersten Mal mit Modbus in Kontakt sind oder ein Veteran, der Ihr Wissen systematisch erkämmen möchte, finden Sie in diesem Artikel eine praktische Referenz.
Grundmechanismus der Modbus-Ausnahme - Antwort
1.1 Normale Reaktion vs. Außerordentliche Reaktion
Im Modbus-Protokoll sendet der Master (Master / Client) eine Anforderungsnachricht an die Slave (Slave / Server) und die Slave-Station gibt eine Antwortnachricht zurück. Wenn alles in Ordnung ist, entspricht der Funktionscode der Antwort genau dem angeforderten Funktionscode:
请求: [从站地址] [功能码 0x03] [起始地址高字节] [起始地址低字节] [寄存器数量高字节] [寄存器数量低字节] [CRC低] [CRC高]
正常响应: [从站地址] [功能码 0x03] [字节数] [数据...] [CRC低] [CRC高]Wenn der Slave-Station die Anfrage nicht ordnungsgemäß verarbeiten kann, setzt er das höchste Bit des Funktionscodes (Bit 7) auf 1 und legt einen Ausnahmecode in den Datenbereich ein. Das heißt,Ausnahme-Funktioncode = Anforderung-Funktioncode + 0x80。Wenn beispielsweise der Anforderungsfunktionscode 0x03 eine Ausnahme auftritt, wird der Antwortfunktionscode 0x83.
异常响应报文结构(RTU 模式):
[从站地址] [功能码+0x80] [异常码] [CRC低] [CRC高]
示例 - 请求不存在的寄存器地址:
请求: 01 03 27 10 00 01 [CRC]
异常响应: 01 83 02 [CRC]
→ 功能码 0x83 = 0x03 + 0x80,异常码 0x02 = 非法数据地址1.2 Die Logik der ungewöhnlichen Reaktionen
Wenn Sie die Daten von der Station in Debugger-Tools (z. B. Modbus Poll, ModScan) sehen, ist es sehr einfach zu bestimmen, ob es sich um eine Ausnahme-Reaktion handelt:
- Überprüfen Sie, ob der Antwort-Funktioncode größer als 0x80 ist (d. h. die höchste Bit ist 1).
- Wenn der Funktionscode > 0x80 ist, ist das zweite Byte ein Ausnahmecode.
- Entsprechend der Ausnahmecode-Suche - Tabelle zu bestimmen, den Fehlertyp
In der Programmierung Implementierung, die Erkennung Logik wie folgt:
// C 语言异常响应检测示例
if (response_function_code & 0x80) {
uint8_t exception_code = response_data[0];
switch (exception_code) {
case 0x01: // 非法功能码
case 0x02: // 非法数据地址
case 0x03: // 非法数据值
// ... 其他异常码处理
}
}II, 11 Standard-Ausnahmecodes vollständig aufgelöst
Die Modbus-Protokoll - Spezifikation definiert 11 Standard-Ausnahmecodes (0x01 ~ 0x0B). Im Folgenden werden die Bedeutung jedes Ausnahmecodes, die Auslösungsbedingungen, typische Szenarien und die Probemethoden eingehend analysiert.
Ausnahmecode 0x01 - Illegale Funktion
Bedeutung:Der angeforderte Funktionscode wird nicht unterstützt. Dies ist einer der häufigsten Ausnahmecodes und tritt normalerweise auf, wenn der Master-Standort einen Funktionscode verwendet, der nicht von der Slave-Standort implementiert wurde.
Typische Auslöser-Szenarien:
- Funktionscode außerhalb des Bereichs:Der Master-Station hat den Funktionscode 0x14 gesendet (Lese-Datei - Datensatz), aber die Slave-Station hat nur 0x03, 0x04, 0x06 und 0x10 implementiert
- PLC-Modelle nicht unterstützt:Einige Low-End - SPS unterstützen nur 0x03 und 0x06, 0x10 (Schreiben mehrerer Register) wird 0x01 zurückgegeben
- Gerätekonfigurationsfehler:Modbus-Implementierung von einigen Geräten aktiviert / deaktiviert Funktionscode über Konfigurationsschalter, wenn die entsprechende Funktion deaktiviert ist, gibt auch 0x01 zurück
- Gateway-Konvertierungsproblem:Modbus TCP-to - RTU-Gateways unterstützen möglicherweise nicht die Übertragung bestimmter Funktionscodes
Probeschritte:
- Überprüfen Sie das Gerätesanleitung, um festzustellen, welche Funktionscodes von Slave-Stationen unterstützt werden
- Testen Sie die Funktionscodes einzeln mit Tools wie Modbus Poll, um das Problem zu verringern
- Überprüfen Sie die Funktionscode-Filterkonfiguration des Gateways / Wandlers
- Überprüfen Sie, ob die Funktionscode-Konstanten definiert sind, wenn Sie ein Selbststudium verwenden
Praxisbeispiel:Bei einem Wasseraufbereitungsprojekt bedient der Hostcomputer das Schneider PM800 - Stromzähler mit dem Funktionscode 0x17 (Lesen / Schreiben mehrerer Register) und gibt immer den Ausnahmecode 0x01 zurück. Bei der Überprüfung des Handbuchs wurde festgestellt, dass PM800 nur 0x03 und 0x10 unterstützt. Lösung: Aufgeteilt in zwei Schritte, zuerst 0x03 Lesen und dann 0x10 Schreiben.
0x02 - Illegal Data Address (illegaler Datenadresse)
Bedeutungen:Die angeforderte Registeradresse existiert nicht in der Slave-Station. Dies ist der Ausnahmecode, dem Ingenieure am häufigsten in der Debuggerphase begegnen.
Typisches Trigger-Szenario:
- Adress-Ofset - Fehler:Die Modbus-Adresse des PLCs beginnt normalerweise mit 0, aber bei der Konfiguration des Host-Computers kann die Startadresse
- mit 1 ausgefüllt werden.Die angeforderte Startadresse + - Anzahl überschreitet den maximalen Registerbereich der Slave Station
- Adresszuordnung Fehler:Einige Geräte verwenden eine andere Adresszuordnungstabelle (z.B. einige Geräte 40001 entspricht der internen Adresse 0, einige korrespondieren zu 1)
- Verwirrung des Datentypes:32 - Bit-Flowerkomma - Zahl nimmt 2 Registers ein, wenn nur 1 Register angefordert wird, kann das Grenzüberschreiten auslösen
Probeschritt:
- Ermitteln Sie den gültigen Adressbereich mit dem Funktionscode 0x03, beginnend mit der Adresse 0 auslesen
- Überprüfen Sie, ob die Adresse im Gerätesanleitung „Protokol-Adresse" oder „PLC-Adresse" ist - die beiden können sich unterscheiden 1
- Bei 32 - Bit-Daten stellen Sie sicher, dass die Anzahl der angeforderten Registers gerade ist
- Überprüfen Sie, ob die Bytefolge der Adresse in der Nachricht korrekt ist
Ausnahmecode 0x03 - Illegal Data Value
Bedeutungen:Der Wert in der Anfrage liegt außerhalb des zulässigen Bereichs für die Slave-Station. Es geht nicht um die Frage der Adresse, sondern um den „Wert".
Typische Auslöser-Szenarien:
- Schreibwert außerhalb des Bereichs:Temperatur-Einstellungsbereich von 0 bis 100 ° C, aber die Masterstation schreibt 150
- Ungültige Registeranzahl:0x10 Funktionscode hat das Feld "Registeranzahl" bei 0 oder überschritten den maximalen prozentualen Wert, den der Slave verarbeiten kann (normalerweise 123)
- Die Anzahl der Bytes nicht übereinstimmt:0x10 Funktionscode hat das Feld "Bytesanzahl" nicht mit "Registeranzahl x 2" übereinstimmt
- Nachrichtenlängefehler:Die tatsächliche Länge der gesamten Nachricht entspricht nicht der angegebenen Länge im Header
Probeschritt:
- Konzentrieren Sie sich auf die Nachrichtstruktur von 0x10 (Schreiben mehrerer Registers) - das ist das am häufigsten fehlerfreie Szenario
- Überprüfen Sie, ob "Bytes = Registerzahl x 2" stimmt
- Überprüfen Sie, ob der Schreibwert im Bereich liegt, der im Gerätesanleitung angegeben ist
- Überprüfen Sie den Bereich des Schreibwertes für 0x06 (Schreiben eines einzelnen Registers)(0x0000 ~ 0xFFFF)
Ausnahmecode 0x04 - Slave Device Failure
Bedeutungen:Bei der Verarbeitung der Anforderung ist ein unwiederherstellbarer interner Fehler aufgetreten. Es handelt sich um einen Ausnahmecode von „Million Gold Oil", der darauf hindeutet, dass es ein ernsthaftes Problem mit der Station selbst gegeben hat.
Typische Auslöser-Szenarien:
- EEPROM / Flash-Schreibfehler:Das Schreiben von Konfigurationen in den nicht-flüchtigen Speicher der Slave-Station ist fehlgeschlagen
- Sensorfehler:Der angeschlossene Sensor der Slave-Station ist beschädigt und liefert keine gültigen Leswerte
- Interne Kommunikationsfehler:Ausnahme der Kommunikation zwischen dem Master-Chip und Peripheriegerät innerhalb der Slave-Station
- Dateisystemfehler:Funktionscode (0x14, 0x15) für Dateioperationen Auftritt auf Dateisystem-Ausnahme
Fehlerbehebungsverfahren:
- Überprüfen Sie, ob die Stromversorgung des Slave-Geräts stabil ist
- Überprüfen Sie den Status der LED-Lampe des Slave-Geräts (normalerweise mit Ausfallbeleuchtung)
- Versuchen Sie, den Slave-Standort neu auszuschalten
- Kontaktieren Sie den Gerätehersteller für ein Diagnosewerkzeug oder Firmware-Upgrade
Ausnahmecode 0x05 - Bestätigung (Acknowledge)
Bedeutungen:Die Station hat die Anfrage akzeptiert, die Bearbeitung dauert aber länger. Es ist kein Fehler, sondern ein Signal „Bitte warten". Die Slave-Station führt den Vorgang durch und gibt eine normale Antwort zurück, wenn die Verarbeitung abgeschlossen ist.
Typische Auslöser-Szenarien:
- Längere Zeit für das Schreiben von EEPROM:Das Schreiben von nicht-flüchtigen Speichern auf einigen Geräten kann Hunderte von Millisekunden dauern
- Firmware-Upgrade - Aktionen:Längere Zeit für das Schreiben von Speichern
- Motor-Aktionen:Slave-Station führt eine physische Aktion aus (z. B. Ventilschalter)
Programmierungsschläge:Nachdem die Masterstation den Ausnahmecode 0x05 empfängt, sollte sie nicht sofort erneut versuchen oder einen Fehler melden, sondern eine angemessene Zeit warten, um erneut abfragen zu können. Es wird empfohlen, die Zustandsmaschine zu verwenden:
// 异步处理确认响应的状态机
enum { IDLE, WAITING, POLLING } state = IDLE;
void modbus_handler(uint8_t func, uint8_t* data) {
if (func & 0x80) {
if (data[0] == 0x05) {
state = POLLING;
start_poll_timer(500); // 500ms 后重新查询
}
}
}0x06 - Slave Device Busy (Slave-Gerät beschäftigt)
Bedeutungen:Der Slave verarbeitet einen langen Befehl und kann vorübergehend nicht auf neue Anfragen reagieren Der Unterschied zu 0x05 ist: 0x05 bedeutet „Ich habe gerade eine Anfrage bearbeitet" und 0x06 bedeutet „Ich habe keine Zeit zur Bearbeitung einer Anfrage".
Typisches Trigger-Szenario:
- Ausführen zeitaufwändiger Aktionen von der Slave-Station:Z. B. Firmware-Upgrade, große Datenkopien
- CPU-Lastung der Slave-Station:Die Hardware-Leistung ist begrenzt, um Modbus-Anfragen nicht rechtzeitig zu verarbeiten
- Die Slave-Station führt eine Selbstdiagnose durch:Einige Geräte führen beim Start eine Selbsttest durch, während der Kommunikation nicht reagiert
Schritte zur Untersuchung:
- Vergrößern Sie das Polling-Intervall für die Master-Station (z. B. von 100 ms auf 500 ms)
- Reduzieren Sie die Anzahl der gleichzeitigen Slaves
- Überprüfen Sie die Firmware-Version der Slave-Station, um festzustellen, dass es bekannte Leistungsprobleme gibt
Ausnahmecode 0x07 - Negative Acknowledge
Bedeutungen:Die Slave-Station konnte die in der Anforderung angegebene Programmierungsfunktion nicht ausführen. Dies ist ein Ausnahmecode, der speziell für 0x0D (Programmierungsfunktion) entworfen wurde und zeigt, dass die Programmieranforderung abgelehnt wurde.
Typisches Trigger-Szenario:
- Programmieraufforderungstyp Nicht unterstützt:Der Slave hat begrenzte Programmierfunktionen und unterstützt bestimmte Programmiervorgänge nicht
- Ungültige Programmierparameter:Die Anforderung enthält nicht unterstützte Programmierparameter
Hinweis:Der Ausnahmecode 0x07 ist in der Modbus-Protokollspezifikation V1.1b3 definiert, aber die meisten Modbus-Geräte implementieren den Funktionscode 0x0D (Programmierung) nicht, so dass dieser Ausnahmecode in der Realität selten auftritt.
Ausnahmecode 0x08 - Memory Parity Error
Bedeutungen:Bei dem Lesen von Dateien von der Station wurde ein Memory Parity Error erkannt. Nur für Dateioperationsfunktionen (0x14, 0x15)
Typisches Trigger-Szenario:
- Dateiprotokolle beschädigt:Datenspeicherbereich durch Stromausfall oder andere Ursachen beschädigt
- Alterung des Flash-Speichers:Häufiges Schreiben verringert die Zuverlässigkeit der Flash-Speichereinheit
Ausnahmecode 0x0A - Gateway Path Unavailable
Bedeutungen:Das Gateway konnte keinen internen Kommunikationspfad zum Zielgerät erstellen. Dies geschieht in der Regel, wenn ein Gateway mehrere nachgelagerte Geräte verbindet.
Typisches Trigger-Szenario:
- Downstream-Gerät offline:Modbus-RTU - Gerät nach dem Gateway wird ausgeschaltet oder getrennt
- Downstream-Gerät - Adressefehler:Das Gateway wurde konfiguriert, um an eine nicht existierende Slave-Adresse weiterzuleiten
- Fehler in der internen Routing-Tabelle des Gateways:Die Routing-Konfiguration für das Gateway ist nicht korrekt
Schritte zur Untersuchung:
- Überprüfen Sie die Kommunikationsstatusanzeige für die nachgelagerten Geräte des Gateways
- Verwenden Sie Modbus Poll, um direkt nachgelagerte Geräte zu verbinden, Fehler beheben des Geräts selbst
- Überprüfen der Routing-Tabelle - Konfiguration des Gateways
- Bestätigen der Modbus-Adresse und der Baudrate-Einstellungen des nachgelagerten Geräts
Ausnahmecode 0x0B - Gateway Zielgerät reagiert nicht
Bedeutung:Das Gateway konnte einen Kommunikationspfad erstellen, aber das Zielgerät konnte keine effektive Antwort bereitstellen. Der Unterschied von 0x0A: 0x0A ist der interne Pfad des Gateways nicht verfügbar, 0x0B ist der Pfad verfügbar, aber das Zielgerät reagiert nicht.
Typisches Trigger-Szenario:
- Zielgerät beschäftigt:Gerät verarbeitet letzte Anweisung
- Zielgerät Antwortzeitüberschreiten:Modbus RTUs 3,5 - Zeichen-Zeitüberschreiten - Mechanismus Trigger
- Datenformat nicht übereinstimmt:Die Kommunikationsparameter des nachgelagerten Geräts (Baudrate, Prüfmethode) entsprechen nicht den Gateway-Einstellungen
III. Ausnahme-Geschwindigkeitssuchtabelle
| Ausnahme-Code | Name (Englisch) | Name (Chinesisch) | Häufigkeit |
|---|---|---|---|
| 0x01 | Illegal Function | Illegale Funktionen | ★ ★ ★ ★ |
| 0x02 | Illegal Data Address | Illegale Datenadresse | ★ ★ ★ |
| 0x03 | Illegal Data Value | Illegale Datenwert | ★ ★ ☆ |
| 0x04 | Slave Device Failure | Ausfall aus der Station | ★ ★ ★ ☆ ☆ |
| 0x05 | Acknowledge | Bestätigung (in Wartezeit) | ★ ★ ★ ☆ ☆ |
| 0x06 | Slave Device Busy | Ausstattung von Station beschäftigt | ★ ★ ★ ☆ ☆ |
| 0x07 | Negative Acknowledge | Negative Bestätigung | ★ ☆ ☆ ☆ |
| 0x08 | Memory Parity Error | Speicherprüfungfehler | ★ ☆ ☆ ☆ |
| 0x0A | Gateway Path Unavailable | Gateway-Pfad nicht verfügbar | ★ ★ ☆ ☆ ☆ |
| 0x0B | Gateway Target Failed | Gateway-Ziel - Antwort fehlschlägt | ★ ★ ☆ ☆ ☆ |
IV. Methode der tiefen Fehlersuche
4.1 Schichtbasierte Fehlersuche
Die Fehlersuche in der industriellen Kommunikation sollte dem Prinzip von unten nach oben folgen und von der physischen Ebene schrittweise nach oben untersucht werden:
- Physische Ebene:Überprüfen von Kabelverbindungen, Terminationswiderstand, Geräteversorgung, Erdung
- Datenlink-Schicht:Überprüfen von RS - 485 - Signalqualität mit Oszilloskop oder Logikanalysator
- Netzwerk-Schicht:Analyse von Paketen mit Wireshark im Modbus TCP-Szenario
- Anwendungs-Schicht:Senden von Minimierungsanfragen mit Tools wie Modbus Polls zur Identifizierung von Problemen
4.2 Vergleichs-Ausschlüsse
Wenn es mehrere Geräte des gleichen Modells vor Ort gibt, ist die Verwendung des Vergleichs-Ausschlussmethodes das effektivste Positionierungsmittel:
- Austauschen von mutmaßlich fehlerhaften Geräten mit ordnungsgemäßen Geräten
- Test zwei Geräte mit demselben Host-Tool
- Vergleich der Unterschiede in der Antwortnachricht zwischen zwei Geräten
4.3 Minimierung der Replikation
Reduziert komplexe Anfragen auf die einfachste legitime Anfrage und erhöht die Komplexität schrittweise:
步骤 1: 发送最简请求 01 03 00 00 00 01 [CRC] —— 读取地址 0 的 1 个寄存器
步骤 2: 如果成功,逐步增加寄存器数量 00 02, 00 03 ...
步骤 3: 如果失败,缩小地址范围排查V. Unterschiede zwischen Ausnahme im RTU - und TCP-Modus
Obwohl die Definition des Ausnahmecodes im RTU - und TCP-Modus identisch ist, unterscheiden sich die Ausnahmebehandlungsabläufe in beiden Modi:
| Vergleichdimension | Modbus RTU | Modbus TCP |
|---|---|---|
| Timeout Verarbeitung | 3.5 Zeichenzeit Keine Antwort Entscheidung Timeout | TCP-Verbindung Timeout Durch das Betriebssystem gesteuert |
| Ausnahmeerkennung | CRC-Verifizierungsfehler Nachricht direkt verwerfen | TCP-Schicht Sicherung der Datenintegrität |
| MBAP-Header | 无 | Transaktions-Identifikator - Übereinstimmung muss überprüft werden |
| Gateway-Szenario | Weniger involviert | Ausnahmecode 0x0A / 0x0B häufiger |
VI. Programmierte Implementierung: Best Practices für Ausnahmebehandlung
Hier ist ein vollständiges Beispiel für die Implementierung von Modbus-Ausnahmebehandlung in der Sprache C für die Entwicklung von Embedded-Systemen:
/**
* Modbus 异常码处理函数
* @param func 请求功能码
* @param exception 异常码
* @return 人类可读的错误描述字符串
*/
const char* modbus_exception_str(uint8_t func, uint8_t exception) {
static char buf[128];
const char* exc_name;
switch (exception) {
case 0x01: exc_name = "非法功能码"; break;
case 0x02: exc_name = "非法数据地址"; break;
case 0x03: exc_name = "非法数据值"; break;
case 0x04: exc_name = "从站设备故障"; break;
case 0x05: exc_name = "确认(等待中)"; break;
case 0x06: exc_name = "从站设备忙"; break;
case 0x07: exc_name = "否定确认"; break;
case 0x08: exc_name = "存储器校验错误"; break;
case 0x0A: exc_name = "网关路径不可用"; break;
case 0x0B: exc_name = "网关目标响应失败"; break;
default: exc_name = "未知异常码"; break;
}
snprintf(buf, sizeof(buf),
"Modbus 异常: 功能码 0x%02X → 异常码 0x%02X (%s)",
func, exception, exc_name);
return buf;
}
/**
* 处理 Modbus 响应
* 返回 0 表示正常响应,负值表示异常
*/
int modbus_handle_response(uint8_t* rsp, int rsp_len,
uint8_t expected_func) {
if (rsp_len < 2) return -1; // 响应长度异常
uint8_t func = rsp[1]; // RTU 模式下,第二个字节是功能码
if (func & 0x80) {
// 异常响应
uint8_t exception = rsp[2];
log_error(modbus_exception_str(func & 0x7F, exception));
// 根据异常码采取不同的重试策略
switch (exception) {
case 0x01: // 功能码不支持 - 不重试
case 0x02: // 地址非法 - 不重试
return -exception;
case 0x05: // 确认 - 等待后重试
case 0x06: // 设备忙 - 延迟重试
return -exception; // 调用者处理重试逻辑
default:
return -exception;
}
}
// 正常响应处理...
return 0;
}VII. Häufig gestellte Fragen
F1: Modbus hat den Ausnahmecode 0x02 von der Station zurückgegeben, aber die Adresse scheint korrekt zu sein.
Die häufigste Ursache ist das Problem der "Adressverschiebung 1". Die Modbus-Adresse von einigen Geräten (insbesondere SPS) ist von der Protokoll-Adresse um 1 ausgeglichen. Zum Beispiel ist die SPS-Seite die Konfigurationsadresse 40001, aber die interne Adresse im Modbus-Protokoll ist 0 (statt 1). Bitte überprüfen Sie das Gerätehandbuch, um die Adresszusammenstellung zu bestätigen.
Q2: Warum gibt die Station manchmal normale Daten zurück und manchmal einen Ausnahmecode 0x06 zurück?
Dies bedeutet in der Regel, dass die CPU-Verarbeitungsleistung der Slave-Station zu wenig ist. Wenn die Polling-Frequenz zu hoch ist, kann die Station nicht alle Anfragen verarbeiten und wird 0x06 zurückgegeben. Lösung: Reduzieren Sie die Abfragefrequenz oder reduzieren Sie die Anzahl der Register für eine einzelne Anforderung.
Was ist der Unterschied zwischen 0x05 und 0x06?
0x05 (Bestätigung): Die von Ihnen gesendete Anfrage wird bereits verarbeitet und muss abgeschlossen werden. 0x06 (Gerät beschäftigt): Der Slave kann keine neuen Anfragen verarbeiten, möglicherweise aufgrund einer willkürlichen Aktion. 0x05 ist „Ich bin beschäftigt" und 0x06 ist „Ich bin beschäftigt, niemand kommt".
F4: Die Slave-Station reagiert nicht (Timeout), anstatt einen Ausnahmecode zurückzugeben, wie soll ich das beheben?
Völliges nicht antworten bedeutet in der Regel, dass das Problem in der physischen oder Datenverbindungsebene liegt:
- Prüft, ob die Adresse des Slaves korrekt ist (Adressenfehler sind der häufigste Grund für Schweigen des Slaves)
- Überprüfen Sie, ob das A / B-Kabel des RS - 485 umgekehrt angeschlossen ist
- Überprüfen Sie, ob die Baudrate und die Prüfmethode übereinstimmen
- Überprüfen Sie den Terminationswiderstand und den Biaswiderstand
- Überprüfen Sie mit einem Oszilloskop, ob ein Signal auf dem Bus vorhanden ist
VIII. Zusammenfassung
Der Modbus-Ausnahmereaktionsmechanismus ist ein Highlight im Protokoll-Design - es ist nicht einfach, die Kommunikation auszulassen, Stattdessen teilt er der Hauptstation durch einen Ausnahmecode genau mit: „Wo ist das Problem". Die Bedeutung dieser Ausnahmecodes und die Methode zur Fehlerbehebung zu verstehen, können Sie die Fehlersuchungszeit von Stunden auf Minuten verkürzen.
Es wird empfohlen, die Ausnahme-Code - Schnellüberprüfungsliste in diesem Artikel zu drucken und neben der Arbeitsstation zu fügen, oder die automatische Ausnahme-Code - Analyse-Funktion in das Debuggerwerkzeug zu integrieren. In der Industrie bedeutet jede Minute des Ausfalls einen Verlust von Geld - und die schnelle Identifizierung von Modbus-Ausnahmen ist oft der erste Schritt zur Lösung des Problems.
Relative Lesung:Modbus-Funktionscode vollständig analysiert| Modbus RTU im Vergleich zu TCP| Modbus CRC-Prüfung und - Implementierung
Antwort veröffentlichen