Modbus RTU zwischen Wago PFC200 und Siemens CM PtP RS232 HF

StPelz

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

wir versuchen aktuell eine Modbus RTU Verbindung zwischen einer Wago PFC200 und einer S7-1500 mit CM PtP RS232 HF herzustellen.
Die Wago tritt als Slave auf und das CM als Master. Die Verbindung an sich bekommen wir hergestellt, aber die Addressierung macht Probleme.

Die Daten werden alle in Holding Registern bereitgestellt, also Adressraum 40000 +.
Auf Siemensseite versuchen wir also per Mode 0 die 40000er Adresse zu lesen, was ja den FC3 zur Folge haben muss. Hier bekommen wir nicht die Werte der passenden Register, auch die eins darüber oder darunter werden nicht gelesen.
Es scheint so, als ob wir in einen komplett anderen Bereich greifen würden.

Als Versuch haben wir auf Wagoseite im Register 0 einen Wert angelegt, den wir dann auf Siemensseite unter Adresse 40000 gefunden haben.
Wir können aber nicht von Siemensseite aus auf Register 80000+ lesend zugreifen.

Am Ende brauchen wir sowohl lesend als auch schreiben Zugriff auf die Holdingregister. Hat hier jemand den passenden Tipp, wie das zu schaffen ist?

Beste Grüße
Stefan
 
Ein Problem, das wir lösen konnten war, dass in der Wago per Modbus Slave Konfigurator nur jeweils ein Slave angelegt werden kann. Für den zweiten Slave muss man das ganze per Funktionsbaustein anlegen. Es ist wahrscheinlich insgesamt sinnvoll, beide Verbindungen als Funktionsbaustein anzulegen, jedoch habe ich bei der TCP Verbindung dann einen Konflikt mit dem standardport, da dieser wohl vom Konfigurator geblockt wird. Hier bin ich aber Masterseitig festgelegt.

Was jedoch noch stört ist, dass wohl nicht das ganze Telegram ankommt. Die Slave ID und der Funktionscode sind unproblematisch, jedoch das Startregister und die Länge der auszulesenden Daten kommt nur als 0 an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

warum mußt Du in der Wago mehrere Slave anlegen? Aus Deinem ersten Post verstehe ich es so das die Wago der Slave ist.

Womit wird die Wago programmiert: Codesys 2.3 oder e!Cockpit?

Bei e!Cockpit sieh Dir mal die Bibliothek WagoAppPlcModbus an, und dazu speziell die Hilfe. Entweder unter der Hilfe -> Libraries oder direkt im Bibliotheksmanager. Die Dokumentation zu Server/Slave ist mal einigermaßen verständlich.

Du mußt die Adressen nicht bei 40000 wählen. Das ist ein Blödsinn den man mal eingeführt hat um das für den Anwender zu vereinfachen, führt aber immer zu Problemen, auch weil es unterschiedlich implementiert wird. Wichtig ist, welche Funktion und welche Adresse im Modbustelegramm verwendet werden. Für jeden Funktionscode startet die Adressierung bei 0 und geht bis 2^16-1. Wenn von Holding Registers Adressen ab 40001 gesprochen wird, muß in der Regel der Offset 40001 von der Adresse angezogen werden und das was übrig bleibt ist dann die Adresse für den Funktionscode

Gruß
 
Hi, das mit den mehreren Slaves hab ich im ersten Post nicht angesprochen gehabt. Die Wago ist der Slave in RTU Richtung und ist der Slave für eine Modbus TCP Verbindung. Ich habe das mit e!Cockpit programmiert.

Das mit den Adressen speziell pro Funktionscode ist das Problem gewesen. Im Modbus Slave Konfigurator vergibt man ja die absoluten Adressen und ist nur abhängig von Eingang/ Ausgang. Im Baustein ist es dann jeweils von 0 ab, wie du es beschrieben hast.

Zusammenfassend, bei mehreren MB-Slaves auf einer Wago, die weiteren per Baustein programmieren. Addressierung im Konfigurator absolut, im Baustein abhängig zum Funktionscode/ Registerart.

Vielen Dank und Gruß
 
Zurück
Oben