TIA S7 1212C Modbus Server -- Wenn Datenverkehr ändern sich Eintrag in anderer DB

saulous84

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend zusammen. Ich bin neu im Forum weil ich nicht mehr weiter weiss.

Ich habe nun viel Probiert und gelesen. Aber ich komme nicht auf die Lösung.



Folgendes Setup :

Ich habe eine 1212C in Betrieb und möchte per Modbus Daten an Home Assistant schicken.

Ich habe einen Server (V2.0) im OB1 erstellt, dazu eine DB für die Status und Errormeldung (DB39). Eine DB mit deaktiviertem Optimierten zugriff für das Daten Array (DB37).

Eine Verbindung bestelt und ich kann auch Analogwerte übermitteln.

Mein Problem ist das jedes mal, wenn eine Modbusverbindung aufgebaut wird und Datenverkehr besteht, ändert sich in einer anderen DB (DB9) einer oder mehrere Bools. Ich kann diese dann auch nicht zurücksteuern. Sie setzen sich selber wieder um. Erst wenn ich die Serverkommunikation abstelle kann ich diese wieder Steuern.

Ich habe es schon mit dem Tool "Modbus Poll" probiert. Dort ist es genauso.

Einen anderen Port und eine andere CONNECT_ID habe ich ebenfalls versucht. Das Problem bleibt bestehen.



Habt ihr ne Idee ?? Vielen Dank fürs lesen.
 

Anhänge

  • download.jpeg
    download.jpeg
    44,6 KB · Aufrufe: 21
Kann es sein dass der Connect_ID 10 auch woanders verwendet wird für TCP-Kommunikation und dort auf DB 9 zugegriffen wird?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist so, das ich über tcp auch an die hausautomation FHEM Daten schicke. Ich habe diese Verbindung auch getrennt mit der Hoffnung das der Effekt weg ist. War aber nicht so.
Ich habe schon diverse CONNECT_IDs probiert.

Ich habe das Gefühl das nicht nur die HOLD DB ins Modbus geschickt wird. Mit dem Tool modbus poll konnte ich auch die analog und Digital Ein und Ausgänge auslesen. Ist doch auch nicht richtig oder? Wozu dann die eigene DB mit dem array für die Daten?
 
Welche Version von MBServer verwendest du und kannst du einen Screenshot des Instanz-DBs (35) hier rein stellen?

Edit: ok V2.0
Welche Firmware hat die CPU?
 
Ich habe das Gefühl das nicht nur die HOLD DB ins Modbus geschickt wird. Mit dem Tool modbus poll konnte ich auch die analog und Digital Ein und Ausgänge auslesen. Ist doch auch nicht richtig oder? Wozu dann die eigene DB mit dem array für die Daten?
HOLD_DB sind die Modbus Halteregister für einen Parameteraustausch.
Die Modbus Coil-Dienste greifen tatsächlich direkt auf EAs zu. Daher die Bitte um den Instanz-DB, da lässt sich meist was einstellen, je nach Version.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die CPU hat die FW 2.2

Ok jetz wird es interessant. In die DB 35 habe ich natürlich noch nicht gesehen. Dort sind tatsächlich diverse Einstellungen zu machen.
Ich Esel hätte da ja mal reinschauen können.

Dann wühle ich mich da morgen mal durch. Danke für den Tipp...:)
 

Anhänge

  • DB35.jpg
    DB35.jpg
    244,9 KB · Aufrufe: 30
Hallo zusammen. Ich habe mal geschaut und Probiert . Selbst wenn ich die LEN eintrage (habe mal 3 Bytes genommen also 24) wird immernoch alles geändert. und bei TRCV SFB ändert der die LEN automatisch auf 65535.

Hat da jemand zufällig im Kopf an welcher Stellschraube ich drehen muss ? :)

LG
 
Ich weiß nicht, was ein BOOL auf einem Halteregister zu suchen hat. Abgesehn davon würde ich vermuten, dass er die komplette Struktur übertragen will. Das wird dann die große Länge ergeben. Vermutlich ist der DB dann noch optimiert. Erst nur mal ein paar Worte draufschalten!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey danke für die Antwort. Das keine bools gehen habe ich gemerkt. Ich habe schon 8 Worte drauf liege, die übertragen werden. Ich komme halt nur nicht drauf welchen wert ich einstellen muss, damit der nur die Wörter nimmt.

Die DB bietet ja nicht grade so viele einstell Möglichkeiten
 
Also ich habe mal ein paar DB Einträge hin und her geschoben die sich immer geändert haben. Es zeigt sich das sie sich immernoch ändern.
Folglich ist es was anderes :

ich habe noch eine Verbindung zu FHEM und diese Einträge scheinen sich zu ändern bei aktiver Modbus Verbindung. Könnte es was mit der TSAP Verbindung zu tun haben das diese übereinander liegen und sich somit stören ? Wie kann ich diese in der S7 ändern?

Edit : In FHEM steht die Remote wie auch die Local TSAP auf 256
 
Zuletzt bearbeitet:
Ich weiß nicht, für was eine TSAP Einstellung bei Modbus gut sein soll. Der externe Partner sieht die IP-Adresse, benutzt einen Port und fertig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend.... Nach viel viel Probiererei (HMI Verbindung gelöscht und wieder hergestellt, DB´s verschoben, etc) habe ich endlich den Fehler gefunden.
Der sitzt wie immer vor dem PC... Ich habe mir die FB´s angesehen, worin die Datenpunkte immer auf 0 gesetzt werden. Dort fiel mir auf das ich die Internen Variablen im FB intern nicht in Static sondern in Temp geschrieben habe. Diese habe ich in Static gezogen und siehe da, alles läuft so wie es soll..

Die einzige Frage dazu warum das Phänomen nur dann auftritt, wenn der Modbus läuft. Die Temp tabelle im FB ist ja nur flüchtig. Die Sache läuft aber schon so über Jahre ohne Probleme...

Vielen Dank für die vielen Ideen :)
 
Die einzige Frage dazu warum das Phänomen nur dann auftritt, wenn der Modbus läuft. Die Temp tabelle im FB ist ja nur flüchtig. Die Sache läuft aber schon so über Jahre ohne Probleme...

Temp Variablen werden in Nicht-optimierten Bausteinen nicht initialisiert und behalten ihre Werte solange, bis sie (ggf. von einem anderen Baustein) überschrieben werden.
 
Zurück
Oben