Start | Explorer | Siemens | Info |
Quellen: Industry Support Siemens
Soll mit einer Siemens Steuerung eine Modbus-Kommunikation aufgebaut werden,
so finden Sie hier ein paar nützliche Informationen.
Es können Client und Server Schnittstellen mit Modbus TCP und RTU realisiert werden.
Hierzu gibt es die Bausteine MB_CLIENT unr MB_SERVER für Modbus TCP,
und Modbus_Master, Modbus_Slave und Modbus_Comm_Load für Modbus RTU.
Der Baustein MB_SERVER stellt sehr einfach einen Modbus Server bereit.
Es muss lediglich ein Datenbaustein für den Datenaustausch (lesen und schreiben) bereit gestellt werden.
Besteht eine Verbindung, so wird jede weitere abgewiesen.
Die einzige Möglichkeit besteht darin, einen weiteren Server auf einem anderen IP Port zu starten.
Hierfür wird der Baustein MB_CLIENT verwendet.
Jeder Baustein liefert über den Output STATUS "Detaillierte Statusinformation der Anweisung".
Die Sache stellt sich in der Praxis nicht so einfach dar, da die Bausteine intern weitere Bausteine
verwenden.
MB_SERVER: TCON, TSEND, TRCV, TDIAG, TRESET, TDISCON, TDIAG_Status
MB_CLIENT: TCON, TDISCON, TSEND, TRECEIVE, TRESET, TDIAG, TDIAG_Status
Somit werden je nach Problem auch die STATUS Werte dieser Bausteine geliefert !
Die Bedeutung der Fehlercodes entnehmen Sie der Dokumentation der entsprechenden Kommunikations-Anweisung.
Wenn beim Senden bzw. Empfangen von Daten ein Kommunikationsfehler auftritt (80C4 (Temporary communications
error. The specified connection is temporarily down.), 80C5 (Remote partner closed connection actively.), 80A1
(The specified connection is disconnected or is not yet established.)), dann wird die bestehende Verbindung
abgebaut.
Das bedeutet auch, dass Sie alle STATUS-Werte sehen, die beim Verbindungsabbau zurückgegeben werden, und erst
wenn die Verbindung abgebaut ist, wird der STATUS-Code ausgegeben, der die Ursache für den Verbindungsabbau
gewesen ist.
Beispiel: Tritt beim Empfangen der Daten ein temporärer Kommunikationsfehler auf, dann wird zunächst der STATUS
7003 (ERROR=false) ausgegeben und dann 80C4 (ERROR=true).
STATUS (hex) |
Beschreibung |
---|---|
0000 | Anweisung fehlerfrei ausgeführt |
0001 | Verbindung hergestellt |
0003 | Verbindungsabbau durchgeführt |
7000 | Kein Auftrag aktiv und keine Verbindung aufgebaut (REQ=0, DISCONNECT=1) |
7001 | Verbindungsaufbau angestoßen |
7002 | Zwischenaufruf, Verbindung wird aufgebaut |
7003 | Verbindung wird abgebaut |
7004 | Verbindung hergestellt und überwacht, Keine Auftragsbearbeitung aktiv |
7005 | Daten werden gesendet |
7006 | Daten werden empfangen |
Hier kommt das zusätzliche Problem dazu, dass die Ursache sowohl lokal als auch bei der Gegenstelle (remote) zu suchen ist.
STATUS (hex) |
lokal / remote |
Modbus Exception |
Beschreibung |
---|---|---|---|
80C8 | lokal | - | Keine Antwort des Servers im definierten Zeitraum. Überprüfen Sie die Verbindung zu dem Modbus-Server. Dieser Fehler wird erst nach Abschluss der konfigurierten erneuten Versuche gemeldet. Empfängt die Anweisung "MB_CLIENT" keine Antwort mit der ursprünglich übermittelten Transaktions-ID (siehe statische Variable MB_TRANSACTION_ID) innerhalb des definierten Zeitraums, wird dieser Fehlercode ausgegeben. |
8380 | lokal | - | Empfangenes Modbus-Frame hat nicht das richtige Format oder es wurden zu wenige Bytes empfangen. |
8381 | remote | 01 | Funktionscode wird nicht unterstützt. |
8382 | lokal | - |
|
8382 | remote | 03 | Unzulässige Längenangabe im empfangenen Modbus-Frame. Überprüfen Sie die Server-Seite. |
8383 | lokal | - | Fehler beim Lesen oder Schreiben der Daten oder Zugriff außerhalb des Adressbereichs von MB_DATA_PTR. |
8383 | remote | 02 | Fehler beim Lesen oder Schreiben der Daten oder Zugriff außerhalb des Adressbereichs des Servers. |
8384 | lokal | - |
Ungültiger Exception Code empfangen.
|
8384 | remote | 03 | Fehler bei Datenwert für die Funktion 5. |
8385 | lokal | - |
|
8385 | remote | 03 | Diagnosecode nicht unterstützt |
8386 | lokal | - | Empfangener Funktionscode entspricht nicht dem ursprünglich gesendeten. |
8387 | lokal | - | Die Protokoll-ID des vom Server empfangenen Modbus TCP Frames ist ungleich "0". |
8388 | lokal | - | Durch den Modbus-Server wurde eine andere Datenlänge gesendet, als abgefragt wurde. Dieser Fehler tritt nur bei Verwendung der Modbus-Funktionen 5, 6, 15 oder 16 auf. |
STATUS (hex) |
Beschreibung |
---|---|
80B6 | Ungültiger Verbindungstyp, nur TCP-Verbindungen werden unterstützt. |
80BB | Ungültiger Wert am Parameter ActiveEstablished (Kennung für die Art des Verbindungsaufbaus, siehe Parameter CONNECT (S7-1200, S7-1500)):
|
8188 | Ungültiger Wert am Parameter MB_MODE. |
8189 | Ungültige Adressierung der Daten am Parameter MB_DATA_ADDR. |
818A | Ungültige Datenlänge am Parameter MB_DATA_LEN. |
818B | Ungültiger Zeiger am Parameter MB_DATA_PTR. Überprüfen Sie zudem die Werte der Parameter MB_DATA_ADDR und MB_DATA_LEN. |
818C | Zeitfehler bei dem Parameter BLOCKED_PROC_TIMEOUT oder RCV_TIMEOUT (siehe statische Variablen der Anweisung). BLOCKED_PROC_TIMEOUT und RCV_TIMEOUT müssen zwischen 0,5 s und 55 s liegen. |
8200 |
|
ERROR | STATUS (hex) |
Beschreibung |
---|---|---|
0 | 0000 | Sendeauftrag wurde fehlerfrei ausgeführt. |
0 | 0001 | Kommunikationsverbindung wurde aufgebaut. |
0 | 0003 | Kommunikationsverbindung wurde aufgebaut. |
0 | 7000 | Keine Sendeauftragsbearbeitung aktiv, keine Kommunikationsverbindung aufgebaut. |
0 | 7001 | Erstaufruf beim Aufbau einer Verbindung. |
0 | 7002 | Verbindung wird gerade aufgebaut (REQ irrelevant) |
0 | 7003 | Kommunikationsverbindung wird abgebaut. |
0 | 7004 | Kommunikationsverbindung ist aufgebaut und wird überwacht. Keine Sendeauftragsverarbeitung aktiv. |
0 | 7005 | Senden der Daten läuft. |
1 | 80A1 |
|
1 | 80A3 | Die unterlagerte Anweisung T_DIAG hat den Abbau der Verbindung gemeldet. |
1 | 80A4 | IP-Adresse des remote Endpunkts der Verbindung ist ungültig, oder sie passt zur IP-Adresse des lokalen Partners. |
1 | 80A7 | Kommunikationsfehler: Sie haben die Anweisung mit COM_RST = 1 aufgerufen, bevor der Sendeauftrag beendet war. |
1 | 80AA | Es läuft gerade ein Verbindungsaufbau mit der gleichen Verbindungs-ID durch einen anderen Baustein. Bitte wiederholen Sie den Auftrag durch einen erneuten Flankenanstieg am Parameter REQ. |
1 | 80B3 |
|
1 | 80B4 |
Bei Verwendung der Protokollvariante ISO on TCP (connection_type = B#16#12) für den passiven Aufbau einer Verbindung (active_est = FALSE) wurde eine oder beide der folgenden Bedingungen verletzt:
|
1 | 80B5 | Bei Verbindungstyp 13 = UDP ist nur ein passiver Verbindungsaufbau zulässig. |
1 | 80B6 | Parametrierfehler im Parameter connection_type des Datenbausteins für Verbindungsbeschreibung. |
1 | 80B7 |
|
1 | 8085 | Parameter LEN ist größer als der größte zulässige Wert. |
1 | 8086 | Der Parameter ID innerhalb des Parameters CONNECT liegt außerhalb des zulässigen Bereichs. |
1 | 8087 | Maximale Anzahl von Verbindungen erreicht, keine weitere Verbindung möglich. |
1 | 8088 | Der Wert am Parameter LEN passt nicht zu den am Parameter DATA angegebenen Empfangsbereich. |
1 | 8089 |
|
1 | 8091 | Maximale Schachtelungstiefe überschritten. |
1 | 809A | Der Parameter CONNECT zeigt auf ein Feld, das nicht der Länge der Verbindungsbeschreibung entspricht. |
1 | 809B |
InterfaceID ist ungültig:
|
1 | 80C3 |
|
1 | 80C4 |
Temporärer Kommunikationsfehler:
|
1 | 80C5 |
|
1 | 80C6 |
Netzwerkfehler:
|
1 | 8189 | Invalid data address: Select a suitable value for the data address at the DATA_ADDR parameter.See description Modbus_Master (Page 125) in the Info system. |
1 | 818A | Invalid length |
1 | 818B | Invalid value for DATA_PTR |
1 | 818C | Interconnection error of the DATA_PTR parameter |
1 | 818D | The area addressed by DATA_PTR is longer than the DB, or the area addressed is too small for the number of data bytes to be read or written. |
1 | 8280 | Negative acknowledgment when reading module |
1 | 8281 | Negative acknowledgment when writing module |
1 | 8722 | Parameter CONNECT: Der Quellbereich ist ungültig. Der Bereich ist im DB nicht vorhanden. |
1 | 873A | Parameter CONNECT: Zugriff auf Verbindungsbeschreibung nicht möglich (z. B. weil der DB nicht verfügbar ist). |
1 | 877F | Parameter CONNECT: Interner Fehler. |
1 | 8822 | Parameter DATA: Quellbereich ungültig, Bereich im DB nicht vorhanden. |
1 | 8824 | Parameter DATA: Bereichsfehler im VARIANT-Zeiger. |
1 | 8832 | Parameter DATA: DB-Nummer ist zu groß. |
1 | 883A | Parameter DATA: Kein Zugriff auf den Datenbereich, da z. B. der Datenbaustein nicht existiert |
1 | 887F | Parameter DATA: Interner Fehler, z. B. unzulässige VARIANT-Referenz. |
1 | 893A | Parameter ADDR: Zugriff auf den Sendebereich nicht möglich (z.B., weil der DB nicht vorhanden ist). |