TIA Modbus TCP - Fehlermeldung" 80C5"

Flo_Ju

Level-2
Beiträge
36
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe hier zwei 1215C-CPUs und möchte mittels Modbus TCP kommunizieren.
Dieses Projekt ist nur um die Modbus-Kommunikation zu testen.
Ich verwende TIA V15.1

Nun habe ich die Fehlermeldung "80C5" an meinem Modbus Client immer wieder anstehen.
Die Fehlermeldung wechselt immer mit den Statusmeldungen "7001" und "7002".


Die Fehlermeldung steht für:
1. Verbindung durch den Kommunikationspartner abgebaut.
2. LSAP des remoten Verbindungspartners nicht freigegeben


Zu Punkt 1:
An meiner Server-CPU gibt der Modbus-Server-Baustein die Statusmeldung "7002" aus (die Verbindung wird gerade aufgebaut (REQ irrelevant)).

Also mein Server versucht die Verbindung aufzubauen und mein Client sag, dass der Server die Verbindung abgebaut hat.
Theoretisch müsste doch an meinem Server dann die Statusmeldungen "0003" (Kommunikationsverbindung wurde abgebaut.) oder
"7003" (Kommunikationsverbindung wird abgebaut.) anliegen?

Oder gibt mir der Client die Fehlermeldung "80C5" aus, da noch nie eine Verbindung aufgebaut wurde und der Client den Server nicht findet?


Zu Punkt 2:
Dieser Punkt gilt doch nur für einen ProfiBus-CP?



Mein Projekt sieht wie folgt aus:

- Ich verwende die Vorlage von dem Siemens-Beitrag 102020340.
- Habe die 1214C-CPU in ein leeres Testprojekt gezogen und in eine 1215C-CPU (Client) getauscht,
die IP-Adresse der CPU auf 192.168.1.1 gestellt und im DB100 "Modbus Data" beide IP-Adressen auf 192.168.1.50 gestellt.
- Die Client-CPU kopiert und die Client_2-CPU in "Server" umbenannt.
Bei der Server-CPU die IP-Adressen getauscht, CPU-IP 192.168.1.50, DB100 beide IP-Adressen auf 192.168.1.1 gestellt.
- Da bei der Vorlage beide CPUs Server und Client sind habe ich die jeweilige nicht benötigte Richtung durch "false" am "EN"-Eingang deaktiviert.

Client-CPU:
1215C DC/DC/DC 215-1AG40-0XB0
IP-Adresse 192.168.1.1
Version 4.2

Server-CPU:
1215C DC/DC/DC 215-1AG40-0XB0
IP-Adresse 192.168.1.50
Version 4.2

An beiden CPUs ist der Zugriff über PUT/GET durch entfernten Partner aktiviert.
Die CPUs sind jeweils über den "X1 P1R"-Port verbunden, "Link"-Led leuchtet beides mal grün und die jeweiligen "Rx / Tx"-Leds blinken orange.

MfG
Flo_Ju
 

Anhänge

  • Modbus Server_OB1.jpg
    Modbus Server_OB1.jpg
    34,2 KB · Aufrufe: 78
  • Modbus Server_DB100.jpg
    Modbus Server_DB100.jpg
    157,3 KB · Aufrufe: 78
  • Modbus Client_OB1.jpg
    Modbus Client_OB1.jpg
    29,6 KB · Aufrufe: 53
  • Modbus Client_DB100.jpg
    Modbus Client_DB100.jpg
    157,6 KB · Aufrufe: 55
Versuche mal jeweils bei
Code:
connectParamServer
.RemotePort 0
.LocalPort  502

connectParamClient
.RemotePort 502
.LocalPort  0
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die 7002 anstehen bleibt trotz dessen das Du kurz die Verbindung unterbrochen hast oder neu geladen hast, dann schalte die CPU die den Fehler hat einmal in Stop und wieder in Run.

Nachtrag:
Die Siemens-Modbusbausteine haben zwar einen Timeout, aber der greift leider nicht bei IP-Verbindungen bzw. wird warum auch immer nicht immer ausgelöst. Baue mir mittlerweile einen eigenen Timeout hierfür.
D.h.: Verbindung unterbrechen und wiederherstellen oder IP ändern bei aufgebauter Verbindung kann zum dauerhaften 7002-Status führen bis die CPU neu gestartet wird oder die Verbindungen zurückgesetzt werden die gebunden sind.
 
Zuletzt bearbeitet:
Versuche mal jeweils bei
Code:
connectParamServer
.RemotePort 0
.LocalPort  502

connectParamClient
.RemotePort 502
.LocalPort  0
Harald



Wenn die 7002 anstehen bleibt trotz dessen das Du kurz die Verbindung unterbrochen hast oder neu geladen hast, dann schalte die CPU die den Fehler hat einmal in Stop und wieder in Run.

Nachtrag:
Die Siemens-Modbusbausteine haben zwar einen Timeout, aber der greift leider nicht bei IP-Verbindungen bzw. wird warum auch immer nicht immer ausgelöst. Baue mir mittlerweile einen eigenen Timeout hierfür.
D.h.: Verbindung unterbrechen und wiederherstellen oder IP ändern bei aufgebauter Verbindung kann zum dauerhaften 7002-Status führen bis die CPU neu gestartet wird oder die Verbindungen zurückgesetzt werden die gebunden sind.



Vielen Dank für eure Antworten.
Ich habe die Ports auf 502 gestellt, die Client-CPU neugestartet und dann hat es funktioniert.

Vollständigkeitshalber hab ich hier noch meine aktuellen DB100.


@escride1
Wie sieht da dein Timeout aus?
Muss ich da zwingend die CPU neustarten oder kann ich das irgendwie über die "disconnect"-, "EN"-Eingänge und im Instanz-DB Daten zurücksetzen machen?
 

Anhänge

  • Modbus Server_DB100.jpg
    Modbus Server_DB100.jpg
    157,2 KB · Aufrufe: 62
  • Modbus Client_DB100.jpg
    Modbus Client_DB100.jpg
    157,7 KB · Aufrufe: 49
Mit EN kannst Du nicht erzwingen das der Baustein irgendwas bearbeitet. Ganz im Gegenteil. Wird der EN beschaltet und er hat nicht true, dann wird der Baustein gar nicht mehr bearbeitet sondern die Anweisungen in ihm übersprungen werden.

Der Disconnect funktionierte bei mir bisher immer mit dem Schema ziemlich zuverlässig:
Abstand je min. ein Zyklus.
1) REQ auf false
2) Disconnect auf true
3) Wenn Done oder status=0000/0003/7003 dann Disconnect auf false

Die CPU immer neustarten ist natürlich eine Option, aber in der Regel nicht wirklich empfehlenswert.
 
Zurück
Oben