Step 7 MODBUS TCP Frage wegen Datenübertragung und Synchronität

Waelder

Level-2
Beiträge
964
Reaktionspunkte
117
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Frage zwecks Datenübertragung bei Modubus. Vorab die Steuerung ist in Betrieb und funktioniert seit x Jahren.
Meine SPS ist eine IM151-8PN CPU wir Kommunizieren per Modbus TCP mit Client-Server-Kommunikation meine SPS ist Server.
Gestern musste ich auf Service, da anscheinend ein empfangendes "binär" Signal über den Bus gefehlt hat. Ich habe testweise
auf meiner SPS Seite das Signal direkt im DB auf 1 gesetzt um zu prüfen ob meine Steuerung dann wieder funktioniert (tat sie auch)
Ich bin es normalerweise gewöhnt, wenn ich das "gefakte" Bit wieder normal laufen lasse, dass der Bus beim nächsten einlesen dieses Bit wieder in seinen
auf dem Bus befindlichen Zustand versetzt. Aber das Bit blieb auf 1. Das hat mich dann doch verwundert. Nach mehrerem Probieren auch mit
anderen Signalen habe ich festgestellt, dass sich auf meiner Empfangsseite die Werte nur wieder zurück ändern wenn mein Partner auch die Werte ändert.
Beispiel war ein Integer Temperaturwert. Den habe ich auf meiner Empfangsseite von 121 auf 135 gesetzt. Der blieb dann so lange 135 bis die Partnerseite
einen anderen Wert geschrieben hatte.
Für mich sieht das so aus als ob in der Kommunikation immer der der neue Daten in das Register schreibt diese auch beim nächsten Buszyklus im Partner ändert.
Alle anderen Empfangswerte sind aber sozusagen anpassbar solang sich der Wert auf der Gegenseite nicht ändert.
Ist diesem Wirklich so ? Mir geht es da eigentlich um das Verständnis.

Meine Datenbausteine sind wie folgt in der SPS
DB300 Sende Bit
DB301 Sende Integer
DB302 Empfang Bit
DB303 Empfang Integer

lt. Wizzard ist alles wie folgt eingestellt :

Beispiel MODBUS.jpg

Danke fürs Lesen und eure Antworten.

Wälder
 
Zuletzt bearbeitet:
Meine Datenbausteine sind wie folgt in der SPS
DB300 Sende Bit
DB301 Sende Integer
DB302 Empfang Bit
DB303 Empfang Integer

Wälder

In welchen DB haben sie das Bit manipuliert?

Ich bin kein spezialist für Modbus aber für mich sieht es so aus das ihre Schreibaufträge den DB300 und DB301 betreffen und die Leseaufträge den DB302 und DB303. Bei der Partner SPS wird es genau umgekehrt sein.
Die Partner SPS wird die Daten aus dem DB300 und DB301 nur lesen und nur in den DB302 und DB303 schreiben.

Der Modbus Wizzard nimmt einem die Programmier und Tipparbeit ab.

Die Basis für Modbus ist eine TCP oder auch eine Serielle Verbindung die ihre entsprechenden Standard Sende und Empfangsbausteine verwendet.

Der Empfangs Baustein aktualisiert seine Datenfächer ( in diesem Fall DB302 u. DB303) nur dann wenn neue Daten korrekt empfangen wurden.
Der Sendebaustein ändert die Daten im Datenfach (hier DB300 u.DB301) garnicht.

Wenn Sie also Daten in den DB300 und DB301 schreiben dan bleibt der Wert erhalten bis Sie ihn überschreiben.

Wenn Sie Daten im DB 302 oder DB 303 schreiben, bleiben die Daten solange erhalten bis neue Daten empfangen wurden.

Wenn sich die Daten nicht zurück ändern kann es also nur 2 Gründe geben 1. die Verbindung ist gestört, oder 2. die Partner SPS sendet nicht Zyklisch.
Das wird schonmal bei Schwächeren SPS'n so gemacht um die Kommunikationslast gering zu halten.

MFG
 
Zuletzt bearbeitet:
Zurück
Oben