TIA Modbus TCP MB_Client hängt mit busy und Status 7006

Sieberjo

Level-1
Beiträge
3
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe schon ein paar ähnliche Einträge gefunden aber keinen gelösten Fall gefunden.

Parallel habe ich auch in Siemens Support gepostet...

Folgender Aufbau:

S7 1214C über Ethernet mit einem PGC von Emerson 770X verbunden.

Verbindungsaufbau funktioniert. (ohne request : Staus 7004)

Der PGC stellt an 1000 4 coils zur Verfügung und hat ab 3000 Messwerte (Holdingregister)

Mit einer anderen Steuerung (SAE FW5) funktioniert der Abruf.

Mit der Siemens nicht. Egal ob ich eine Holdingregister oder ein Coil abfrage.

Ich habe zum Test noch eine zweite S71200 mit ins Netz aufgenommen auf dem ein MB_Server aufgerufen wird. Diesen kann ich erreichen und abfragen.

Bei dem Versuch den PGC zu erreichen hängt er immer mit busy (kein error und kein done)

Der Status ist dann auch immer 7006.



Wer kann mir helfen ?

Was macht Siemens hier anders als andere ?

Grüße aus Nordhessen / J. Siebert
 
NACHTRAG1:

Solange kein Auftrag angestoßen wird (Request =0)

Bleibt der Status auf 7004 (Verbindung hergestellt)

Jedoch kommt alle 20 Sekunden (für einen Zyklus) ein ERROR mit dem Status 80C6 (Partner kann nicht erreicht werden)

Auch die Behauptung, dass dein Auftrag "ewig" mit Buys und Status 7006 hängt ist nicht richtig.

Auch dieser kommt (wenn auch sehr spät) mit einem ERROR und dem Status 80C8 (Timeout) zurück.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Klingt wie falsche MB_Unit_ID verwendet.
Welche MB_Unit_ID braucht Dein Modbus Gerät? MB_Client verwendet standardmäßig die 255
siehe die TIA Hilfe zu MB_Client, oder hier die Forumssuche zu MB_Unit_ID. siehe auch die TIA Hilfe zu MB_Client "Parameter MB_MODE, MB_DATA_ADDR und MB_DATA_LEN"

Harald
 
Danke Harald,

genau das war das Problem. Jetzt kann ich auch den einen oder anderen Post nachvollziehen.

Hier noch mal die Zusammenfassung und die Aufklärung zu dem wohl häufig auftretenden Missverständnisses.

MB_Unit_ID, welche eben nicht in den Connection_Parameters, sondern direkt in den Instanz-DB´s der MB_Client_Aufrufe steckt entspricht der ID (Verbindungs-ID) des Partners. In meinem Fall die 1 und nur die 1, auch bei Mehrfachaufrufen. Standardeintrag von Siemens ist 255

Die ID aus den Connection_Parameters (TCON_IP_V4) ist die interne ID der TCP-IT Verbindung und muss bei jedem Aufruf unterschiedlich sein.

Jörg
 
MB_Unit_ID (...) entspricht der ID (Verbindungs-ID) des Partners. In meinem Fall die 1 und nur die 1, auch bei Mehrfachaufrufen. Standardeintrag von Siemens ist 255
Das klingt, als ob Du das missverstehst. Die MB_Unit_ID ist bei Modbus RTU die Busadresse/Geräteadresse eines Modbus Gerätes. Bei Modbus TCP wird ein Modbus Gerät durch die IP-Adresse adressiert, da braucht man keine Busadresse mehr, trotzdem reagieren die meisten Geräte nur auf eine bestimmte MB_Unit_ID (und das ist oft nicht die 255!). Es gibt auch Modbus TCP Geräte, die über verschiedene MB_Unit_ID mehrere verschiedene Dienste anbieten - quasi wie mehrere (logische) Sub-Geräte in einem Gerät. Es gibt auch Modbus TCP Geräte mit einem Gateway zu einem Modbus RTU Bus (meist RS485), an dem Modbus RTU Geräte angeschlossen sind. Da ist meistens die MB_Unit_ID die Busadresse des Modbus RTU Gerätes, welches über das Gateway angesprochen werden soll.

Die ID aus den Connection_Parameters (TCON_IP_V4) ist die interne ID der TCP-IT Verbindung und muss bei jedem Aufruf unterschiedlich sein.
Bei jedem Aufruf von was? :unsure:
Üblicherweise verwendet man für jedes Modbus Gerät mit eigener IP-Adresse eine eigene TCP-Verbindung mit eigener Connection ID (damit man mit ihnen gleichzeitig kommunizieren kann). Zu jeder ID muß ein TCON aufgerufen werden, um die Verbindungsparameter zu dieser Connection ID dem System bekannt zu machen. Ruft man mehrere Instanzen des MB_CLIENT zu einem Gerät auf, dann darf und soll da dieselbe ID verwendet werden, damit man nicht mehrere TCP-Verbindungen zu dem Gerät aufbaut. Viele Modbus TCP Geräte können nur eine begrenzte Anzahl Verbindungen gleichzeitig, oft nur 1..4 Verbindungen. Außerdem sind auch in der SPS die Verbindungs-Ressourcen limitiert.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich kann die Aussage:
von Sieberjo bestätigen.

-------------------------------------------------------------------------------
Hier noch mal die Zusammenfassung und die Aufklärung zu dem wohl häufig auftretenden Missverständnisses.

MB_Unit_ID, welche eben nicht in den Connection_Parameters, sondern direkt in den Instanz-DB´s der MB_Client_Aufrufe steckt entspricht der ID (Verbindungs-ID) des Partners. In meinem Fall die 1 und nur die 1, auch bei Mehrfachaufrufen. Standardeintrag von Siemens ist 255

Die ID aus den Connection_Parameters (TCON_IP_V4) ist die interne ID der TCP-IT Verbindung und muss bei jedem Aufruf unterschiedlich sein.
-------------------------------------------------------------------------------

Ich habe bei meinen Plenticore Wechselrichter von Kostal mit Modbus TCP eine Ewigkeit gesucht....
und hatte auch immer den Status 7006.

Beim Kostal ist eine Client ID fest vorgegeben (71), ich hatte auch angenommen, dass es sich um die im TCON_IP_v4
ID handelt (Kommentar lautet connection reference / identifier)

Das man die ID in so einem Fall manuell in den Daten des Instanz DB vom MB_Client eintragen muss, da wäre ich ohne diesen Beitrag nie drauf gekommen.

Danke Danke Danke an Sieberjo das diese Suche endlich ein Ende hat :)
 
"Wer hat's erfunden?" bzw. woher hat Sieberjo die Lösung bekommen ...? ;)
Außerdem hast du Sieberjo evtl. auch falsch verstanden. Mit "Verbindungs-ID des Partners" meinte er die interne ID der TCP-Verbindung in der S7-CPU. Die hat mit der Unit_ID (deine Client ID), die der Modbus-Kommunikationspartner erwartet, nichts zu tun.
 
Zurück
Oben