Arduino Modbus TCP Kommunikation mit Wago 881 Libaries anpassen

Hallo Leute,

erst einmal tolles Forum, Daumen hoch.

seit ein paar Tagen, beschäfige ich mich mit dem Arduino mega 2560 mit dem Netzwerkshield w5100.
Ein geiles Teil, habe einen HC-SR04 angeschlossen und lasse mir die Messwerte über com3 ausgeben, funktioniert wunderbar.
Nun würde ich den Messwert gerne per Modbus TCP an meine Wago 881 übergeben.
Die Modbuseinbindung der Mudbus.h Lib funktioniert auch super, kann den Messwert per ModbusPoll (Windows Modbus Testprogramm) über Netzwerk lesen.

Nun zu meinem Problem, die Wago SPS reserviert die ersten 12287 Modbusadressen für ihren internen Betrieb. Das heist meine erste verwendbare Modbusadresse währe 12288.
Der Arduino beginnt leider mir der Adresse 0 und geht nur bis irgendetwas um die 4000 (Speichermangel).

Ist es möglich die Mudbus.lib so anzupassen das die erste Mosbusadrees nicht 0 sondern 12288 währe.

Hoffe, das ich mein Problem einigermassen verständlich beschrieben habe und mir jemand weiterhelfen kann.

Gruß Lars

Also ich hab mich mit dem Modbus noch nicht beschäftigt, steht aber auf meiner Liste..

Wer ist denn in deinem Verbund der Master, der Arduino oder die Wago? Danach richten sich doch die Adressen, oder?

Gruß

Hallo Scherheinz

sorry für die späte Antwort,
die Wago ist der Master. Die Adressen von 12288 bis 24575 sollten meiner Meinung nach les- und schreibbar sein, bin mir aber auch nicht wirklich sicher.

Gruß

Hallo Larsen123

Ich habe gerade zufällig deinen beitrag gefunden, und wollte fragen ob der noch aktuell ist, da ich auch eine Wago steuerung mit einem Arduino über Modbus verbunden habe und dir vllt helfen könnte.

Gruß
Andi

Also ich hätte auf jeden Fall Interesse, stell mal dein Projekt etwas vor. Was machst du genau?

Gruß

Hallo Scherheinz

Projekt hab ich da noch nichts konkretes.
Ich steuere meine Wohnung mit Wago Steuerungen, die über Modbus miteinander kommunizieren, und vor ein paar tagen bin ich auf den Arduino gestoßen und hab mir ein Anfänger Set und ein Ethernet Shield bestellt, und bisher bin ich da nur etwas am ausprobieren.
Ich hab es aber schon geschafft die Werte von einem Poti und einem Taster vom Arduino an die Wago zu senden, deswegen dachte ich ich kann da evtl helfen.

Gruß

Das ist doch schon mal ein guter Anfang. Interessant wäre es zu wissen ob man ohne Wago Steuerung die Feldbuskoppler direkt mit dem Arduino ansteuern kann.

Gruß

Ja, ich denke theoretisch müsste das gehen, dann muss der Arduino nur der Modbus master sein.
Aber wenn ich am Wochenende dazu komm probier ich das mal aus.

Gruß

Hallo seit langem nochmal,

ich bin etwas weitergekommen, verwende derzeit auf dem Arduino die mudbus.h libary, schreibe den Analogwert in ein Modbus Register (Mb.R[0] = mein Wert) und werte das Ganz dann mit dem Baustein "ETHERNET_MODBUSMASTER_TCP" in der SPS aus.
Dort wird die IP des Arduino und der Port 502 angegeben. Kann den Wert dann unter ptREAD_DATA[1] aufrufen.
Das Ganze funktioniert leider nur mit einem Wert und auch nur von 0 bis 255 bei 256 steht dann eine 1 bei ptREAD_DATA[1] uns eine 1 bei ptREAD_DATA[2] .
Würde gerne mehrere Realwerte übertragen, bleibe aber dran :slight_smile:

Hallo Larsen123,

ich verwende die selben Bausteine, und ich bekomme die werte 0 bis 65535 übertragen, allerdings bis jetzt nur von Arduino auf die Wago und nicht zurück.
Wie hast du die Variable ptREAD_DATA definiert?
Hast du die mal als Word definiert?

Hallo andi26

vielen Dank für den Tip, Super.
Die Variable war als Byte deklariert, jetzt Funktionierts :slight_smile:
von der Wago aus senden, hab ich noch nicht getestet, evtl. unter
"bFUNCTION_CODE" die Nummer "23" für "read write multiple registers" ?
weißt du wie ich mehrere Modbus Register verschicken kann: Mb.R[0]...Mb.R[1]...Mb.R[2]...usw.

Gruß