TCP bzw. Modbus Verbindung sicher Schließen bei CPU Stopp

Zuviel Werbung?
-> Hier kostenlos registrieren
Es kann immer mal passieren, daß eine TCP-Verbindung unerwartet unterbrochen wird. Das müssen die Kommunikationsteilnehmer abkönnen.
Die Simatic erholt sich ja wieder bzw. kann resettet werden.
Der Sungrow Umrichter hier erholt sich aber nicht wieder und es kann auch kein anderer Modbus Client eine Verbindung aufbauen. Da kann die Simatic nicht dafür.

Harald du darfst da keine Industriemaßstäbe anlagen.
AEG (Ausschalten - Einschalten - Gut) ist in dem Bereich völlig normal.
Den Entwickler / Hersteller interessieren doch die paar Smarthome-Bastler die die Modbus-Schnittstelle nutzen einen Dreck.
Bananenware (Reift beim Kunden) ist da Standard.
Manche Hersteller machen das sogar richtig clever und nutzen Foren und / oder Social Media und bauen eine Communitiy rund um ihr Produkt auf.
Loxone ist jahrelang auf der Schiene geritten.
 
@Hesse
Anstatt den Umrichter komplett auszuschalten reicht es vielleicht auch, das Netzwerkkabel für 2 Minuten abzuziehen? Vielleicht merkt der Umrichter dann, daß keine Verbindung mehr besteht und resettet die Modbus Kommunikation?
Das, klappt manchmal auch aber nicht immer.

Im gesamten war heute alles schon mal besser als die vergangen Tage.
Es ist irgendwie wie mit den Frauen:
Wenn du weist was sie hören wollen und du dich genau so verhältst ist alles gut.
Machst du etwas Falsches … gehst du besser gleich in den Keller. :-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ein kleiner Hack für zwischendrin...

Falls Du eine Visu hast, mach Dir doch einen Button um die Kommunikation zu beenden / unterbinden.
Bevor Du also bewusst Änderungen auf Deine Steuerung überträgst, deaktiviere vorher die Kommunikation.

Die Fehlerfälle wie z.B. Stromausfall müssen dann immer noch betrachtet und behandelt werden, aber hier ist auch die Auftrittwarscheinlichkeit geringer.

Grüße

Marcel
 
Falls Du eine Visu hast, mach Dir doch einen Button um die Kommunikation zu beenden / unterbinden.
Bevor Du also bewusst Änderungen auf Deine Steuerung überträgst, deaktiviere vorher die Kommunikation.
Oder einfach per Beobachtungstabelle eine (nicht-remanente) Variable steuern: 0=enable/1=disconnect MB-Kommunikation

Harald
 
Oder einfach per Beobachtungstabelle eine (nicht-remanente) Variable steuern: 0=enable/1=disconnect MB-Kommunikation
so mache ich das auch

aber :

Ich habe immer noch Probleme wenn ich die Verbindung beende, dann blockiert mein WE
Lass ich alles schön durchgehend laufen, funktioniert alles Stundenlang.
Die Daten kommen alle 5 Sekunden
Bei den meisten Netzwerkprotokollen ist es sinnvoll Verbindungen nicht offen zulassen.


Wie ist das richtige vorgehen das umzusetzen?

MB_CLIENT "(REQ := 0
Und
DISCONNECT auf 1

Ist das so korrekt ?

und sind Timings einzuhalten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich die Verbindung vor einem Stopp
„Ordnungsgemäß beende“ (Schalter an einem DI)
Zeigt er das empfindlich verhalten bisher nicht
ich schalte Disconeckt vom MB_Client auf "1"
(...)
Bei mir steigt nur die Modbus Kommunikation aus, nicht der Ganze Umrichter.
Der macht (zumindest bei mir) weiter seinen Dienst .Nur hört er nicht mehr auf Modbus anfragen

Ich habe immer noch Probleme wenn ich die Verbindung beende, dann blockiert mein WE
Ist das jetzt ein neues Problem? Was heißt "blockiert"?

Harald
 
Ist das jetzt ein neues Problem? Was heißt "blockiert"?
Das Neue Problem ist das alte...

Auch bei schalten von DISCONNECT auf 1
Ist anschließen keine Kommunikation mit dem WE mehr per Modbus möglich

Arbeiten tut der WE weiterhin nur hört er nicht mehr aus MB Anfragen
Auch nicht aus Anfragen von einem PC-Programme
Erst wieder nach Netzkabel ziehen und stecken oder Netz aus Ein
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Interessant wäre es mal das Verhalten des Wechselrichters bei Kommunikation mit einem anderen Client zu beobachten, wie zum Beispiel mit einem PC oder mit einer anderen SPS. Eventuell verträgt die miese Implementierung des Protokolls im WR nicht, dass die S7 mit den OUC Bausteinen eine TCP Verbindung (außer S7-1500 in V17) niemals vernünftig abbauen kann, sondern immer nur einen TCP-Reset schickt.
 
Zeig mal deinen Baustein
Mir geht es nur darum:
Ist der Zeitlich Ablauf korrekt zum Trennen der Verbindung

Erst
DISCONNECT auf 1
Und
Dann
MB_CLIENT "(REQ := 0

Der Baustein ist nicht von mir alleine daher kann ich ihn nicht einfach posten.

Ich schreib aber einen „Neutralen mit demselben Problem“
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit ein PC Client (z.b Modbus Poll) zeigt er das Verhalten nicht

Mein Sohn versucht sich gerade an ioBroker, ich berichte
Was passiert wenn du mit der PC-Software verbunden bist und dann plötzlich die Netzwerkverbindung trennst ? (z.B. WiFi ausschalten oder Netzwerkkabel ziehen) Tritt das Problem dann auch auf ? Dann könnte dieser Unterschied (PC-Software, die Verbindung korrekt mit TCP Finish abbaut gegenüber S7, die einfach ein Reset schickt) tatsächlich das sein, was die Implementierung im Wechselrichter nicht verträgt. Dann könntest du aber tatsächlich nichts dagegen tun, denn bei der 1500er gibt es mittlerweile den TCONSettings- Baustein, mit dem man das Verhalten beim Schließen der Verbindungen einstellen kann, bei der 1200er aber noch nicht...
 
Was passiert wenn du mit der PC-Software verbunden bist und dann plötzlich die Netzwerkverbindung trennst ? (z.B. WiFi ausschalten oder Netzwerkkabel ziehen) Tritt das Problem dann auch auf ? Dann könnte dieser Unterschied (PC-Software, die Verbindung korrekt mit TCP Finish abbaut gegenüber S7, die einfach ein Reset schickt) tatsächlich das sein, was die Implementierung im Wechselrichter nicht verträgt. Dann könntest du aber tatsächlich nichts dagegen tun, denn bei der 1500er gibt es mittlerweile den TCONSettings- Baustein, mit dem man das Verhalten beim Schließen der Verbindungen einstellen kann, bei der 1200er aber noch nicht...
Vielleicht mal der Sache mit Wireshark auf den Zahn fühlen.
Es gibt einen Wireshark Modbus-Filter
https://sbc-support.com/de/faq/101441/
 
Was passiert wenn du mit der PC-Software verbunden bist und dann plötzlich die Netzwerkverbindung trennst ? (z.B. WiFi ausschalten oder Netzwerkkabel ziehen) Tritt das Problem dann auch auf ?
Nein dann passiert es nicht …..
Netzwerkkabel ziehen hat zur Folge:

Timeout Fehler am PC Programm
Nach stecken vom Netzwerkkabel dauert es ein Moment und er fängt sich wider
Datenabfrage geht weiter, ohne zutun meinerseits.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein dann passiert es nicht …..
Netzwerkkabel ziehen hat zur Folge:

Timeout Fehler am PC Programm
Nach stecken vom Netzwerkkabel dauert es ein Moment und er fängt sich wider
Datenabfrage geht weiter, ohne zutun meinerseits.
Hm. Da kann man jetzt nur spekulieren ohne das PC-Programm auch genau zu kennen. Dann würde ich als nächstes tatsächlich mal Wireshark anwerfen.
 
Nein dann passiert es nicht …..
Netzwerkkabel ziehen hat zur Folge:

Timeout Fehler am PC Programm
Nach stecken vom Netzwerkkabel dauert es ein Moment und er fängt sich wider
Datenabfrage geht weiter, ohne zutun meinerseits.
Da du das SPS-Programm nicht zeigst, bleibt dir wohl nur die Analyse mit Wireshark.
 
Guten Morgen,
ich habe nochmal was “neu“ zusammen geklickt diesmal Komplet in FUP nicht in SCL.

Mit dem "Neuen Programm" zeigt der Wechselrichter (WR) genau das gleich Verhalten.

- Daten kommen normal an

- 1x SPS Stopp /Start oder Schalter Disconnect

- WR „hört“ nicht mehr.
 

Anhänge

Es lässt sich im übrigen nicht sagen, dass das Verhalten des Geräts grundsätzlich falsch ist. Wenn auf Anwendungsebene keine Keepalives ausgetauscht werden, dann schlägt hier spätestens der TCP Keepalive an. Und diese Keepalive-Telegramme werden unter Linux wie unter Windows in Voreinstellung nach 2 Stunden gesendet. Wenn hier jemand einen Modbus-TCP Server startet, dieser grundsätzlich nur eine einzige Verbindung zulässt, dann kann es unglücklicherweise eben sein, dass eine Verbindung bis zu 2 Stunden hängen bleibt. Da gibt es noch viel mehr Fälle bei denen das vorkommen kann, als nur wenn die SPS in Stopp geht und die Verbindung nicht getrennt wird.

Bei Siemens CPs der 300/400er Serie lässt sich darum das Keepalive-Intervall selber einstellen, und Voreinstellung sind hier 30 Sekunden. Und beispielswiese auf dem S7 Protokoll schicken Siemens PGs Iso-On-TCP Telegramme ohne weitere Nutzdaten um den Verbindungszustand zu überprüfen. Im Grunde bleibt nur zu prüfen ob bei deinem Modbus-TCP Server das Keepalive herabgesetzt werden kann, oder die möglichen Verbindungen heraufgesetzt werden können.
 
Zurück
Oben