# Wago 750-652 Modbus RTU Einrichtung



## thethorbo (25 Juli 2019)

Hi zusammen,

zunächst möchte ich mich kurz vorstellen, bevor ich direkt mit der Tür ins Haus falle:

Mein Name ist Thorben, ich bin aktuell E-Technik-Student im Master und arbeite zur Zeit an meiner Masterarbeit. Ich stoße gerade leider mit meinem Wissen an meine Grenzen, weshalb ich mich hoffnungsvoll an die nette Community hier wende 

Neuland für mich ist bisland die Anbindung von Teilnehmern über Modbus. Ich probiere derzeit in Codesys 2.3 eine  Modbus RTU Verbindung zwischen einer Weishaupt Wärmepumpe (WWP L 12 AD  (R)) mit dem Wärmepumpenmanager WPM 5.0M mit der BMS Karte LWPM 410 und meiner Wago Steuerung (750-881) mit einer Seriellen Schnittstellenkarte 750-652 herzustellen.

Zunächst Infos zur Ausgangslage:



Ja,  ich weiß dass das nicht im Sinne des Erfinders ist, aber für  provisorische Testzwecke bin ich gezwungen zunächst ein ungeschirmtes Kabel zu  nehmen (ca. 10m Kabelweg).
Ich habe beidseitig Widerstände (120 Ohm) eingesetzt, wie mir das die Datenblätter gesagt haben.
Habe hier mal die Bilder der beiden miteinander verbundenen Seiten:
	

		
			
		

		
	






Mit I/O-Check 3 habe ich die Klemme so eingestellt, wie ich es auch im Wärmepumpenmanager getan habe (1200 Baud, 8 Datenbits, 1 Stopbit, keine Parität). Habe da auch bereits beidseitig rumexperimentiert. Leider ohne Erfolg.
Habe dann probiert den Modbus_Extended_Master Baustein aus dem Modbus Beispiel von Weishaupt zu übernehmen, jedoch erhalte ich jedes Mal den Fehler MB_Time_Out. 
	

		
			
		

		
	



Aktuell bin ich einen Schritt zurück gegangen und habe erstmal nach Suche hier im Forum eine Inbetriebnahme der Schnittstelle über den Modbus-Master-Konfigurator probiert. 
	

		
			
		

		
	





Die Fragen die ich habe sind:

Bin ich komplett auf dem Holzweg?
Gibt es eine Möglichkeit, dass ich mir ähnlich wie anderen I/Os die aktuellen Werte anzeigen lassen kann, damit ich überhaupt sehe, dass meine Schnittstelle funktioniert?

Für jeden Rat und Hinweis bin ich sehr, sehr dankbar 

Liebe Grüße an Alle,
Thorben


----------



## Thruser (25 Juli 2019)

Hallo,

die beiden Adern hast Du mal getauscht?

Hast Du ansonsten einen USB RS485 Adapter, um mal mit dem PC mit der Wärmepumpe Kontakt aufzunehmen? Dafür würde ich dann qmodmaster auf dem PC empfehlen.

Hast Du ansonsten mal einen Link zur Doku?

Auf dieser Entfernung ist RS485 eigentlich ziemlich robust, erhöhe mal auf 9600.

Eventuell mußt Du sonst noch die Biasing Widerstände in Verbindung mit 5V einsetzen.

Ansonsten sieht es erst einmal richtig aus. Den Widerstand an der Wago Klemme ist zwischen 2 und 5 richtig?

Gruß


----------



## thethorbo (25 Juli 2019)

Hi,

Danke schonmal für die schnelle Antwort!
Ja, beide Adern mal getauscht, Baudrate hochgesetzt auch schon. Das hier ist ein Bild aus der Doku der 750-652 (http://cdn-reichelt.de/documents/datenblatt/C300/07500652_XXXXXXXX_0_DE.pdf).



Widerstände raus hatte ich ebenfalls schon.

Ich besorge mir einen Adapter und probiere mal, ob ich überhaupt irgendwas aus der Wärmepumpe rausbekomme.

Wie sieht das denn aus mit der Programmierung? Ist das soweit korrekt?

Grüße


----------



## Thruser (25 Juli 2019)

Für die Doku schaust Du am besten immer direkt bei Wago nach, da dort immer die aktuellste ist. Sonst findet man manchmal recht altes Zeug.

Also entweder wago.de -> downloads oder mein Lieblingslink für die Doku (der hoffentlich auch noch lange gepflegt wird): https://www.wago.com/wagoweb/documentation/index_d.htm

Zu der Programmierung kann ich so wenig sagen, da Du für den Modbus_Extended_Master nur die Deklaration mit der Grundinitialisierung zeigst und nicht mit welchen Parametern Du Ihn später aufrufst.

Die Konfiguration vom Konfigurator sieht so ganz in Ordnung aus. Eventuell die Spalte Kommunikation etwas größer machen um die weiteren Einstellungen sehen zu können.

Stimmt die Steuerungskonjfiguration denn auch mit den Einstellungen aus I/O Check überein, speziell die Anzahl der Bytes im Prozessabbilds (8, 24 oder 48 )?

Gruß


----------



## wolfi-sps (25 Juli 2019)

Hallo Thorben,

habe eine WP von Weihaupt so ausgelesen.
Wolfgang


----------



## Thruser (25 Juli 2019)

@Wolfgang

sind die beiden letzten Werte richtig? Parallelverschiebung und Festwertregelung

Du fragst da ja mit FC1 ab, also nur Bits, weist diese aber jeweils einem Word zu?

Darüber verwendest Du ja FC1 mit Bool

Gruß


----------



## wolfi-sps (25 Juli 2019)

Hallo Thruser,

ja - da hast du Recht - das habe ich nicht gelöscht - ist natürlich falsch.
Danke für den Hinweis - muss ich noch machen.

Wolfgang


----------



## Jean-Luc (25 Juli 2019)

Hei Thorben,

Wie sieht denn deine Parametrierung der 750-652 aus? 

Mit Farben habe ich es nicht so, aber sieht der erste Ring am Widerstand an der WP nicht etwas grau aus? Dann wären das 820 Ohm (, was bei 1200 Baud und 10m vermutlich nicht entscheidend sein wird).

Gruß,
Jean-Luc


----------



## thethorbo (27 Juli 2019)

Hi zusammen,

habe mir jetzt einen USB-RS485 Adapter geordert und werde in der kommenden Woche erstmal schauen, ob die WP überhaupt mit mir spricht. Halte euch da auf dem laufenden, wie es um meinen hoffentlich mit Erfolg gekrönten Weg aussieht 

@Thruser: Vielen Dank für den Link mit der Doku. Den kannte ich so noch garnicht, ist aber extrem hilfreich!
Das mit der Einstellung des Prozessabbilds hab ich mich eh schon gefragt... Hatte den eine Zeitlang auf 24 Bytes im I/O-Check eingestellt, dann mal testweise auf 8. Woran kann ich denn sehen, was richtig ist? Im Steuerungsprogramm hab ich ne riesen Auswahl an 750-652 Karten. Meine mich zu erinnern, dass ich bisschen getestet hatte mit den unterschiedlichen, bis er mein Programm auf die Steuerung laden konnte.

@Wolfgang: Das sieht sehr vielversprechend aus, vor allem, weil ich schon den ersten Fehler bei mir entdeckt habe. Habe es nicht auf big endian stehen. Eine Frage hab ich noch: um die Werte dann im Programm zu verwenden muss ich doch mit dem Extended Master Baustein die Karte initialisieren. Sind die im Konfigurator angelegten Variablen dann schon verwendbar oder muss ich die dann noch irgendwie aufrufen?

@Jean-Luc: Ne, der Ring ist nicht grau.. Da habe ich vor Einbau drauf geachtet, dass das beides 120 Ohm Widerstände sind. Was meinst du mit Parametrierung? Die Einstellungen im I/O-Check?


----------



## wolfi-sps (27 Juli 2019)

Hallo Thruser,

Den Baustein musst du nicht aufrufen.
Wenn du den Modbus-Konfigurator speicherst sollten die PRG´s in deinem Programm auftauchen.
Die VAR sind dann auch da drin - musst du nur noch umwandeln.
siehe Anhänge

Wolfgang


----------



## Thruser (27 Juli 2019)

@Thorben
Hoffe Du hast 'nen günstigen Adapter gefunden. 

Wie bereits geschrieben würde ich zum Testen QModMaster https://sourceforge.net/projects/qmodmaster/ nehmen. 
Ansonsten kannst Du Dir dann mit Realterm https://realterm.i2cchip.com/ die Kommunikation zwischen Wago und WP ansehen (Display as Hex). Dazu mußt Du Dir aber mal den Aufbau der Telegramme ansehen. http://modbus.org/specs.php

@Wolfgang
Kannst Du Thorben sonst noch kurz zeigen wie das Unnterprogramm aufgerufen wird. Machst Du das über Tasks oder rufts Du es direkt auf?

Gruß


----------



## wolfi-sps (28 Juli 2019)

Hallo Thruser,

so ruf ich den Task auf.

Wolfgang


----------



## thethorbo (31 Juli 2019)

Hallo zusammen,

ich hab es geschafft und das nur dank eurer Hilfe!!!!

Kurze Zusammenfassung:
Ich habe mit einem USB->RS485 Adapter von DSD und dem qmodmaster zunächst mal geguckt, was die WP so zu sagen hat. Sobald der COM-Port entsprechend eingestellt und die Kommunikationsparamater abgeglichen waren, stand die Kommunikation. Einzige Besonderheit ist, dass bei dem Adapter die Klemmen so benannt sind, wie er es braucht, sprich, man muss nich A+ und B- kreuzen.

Danach habe ich mich an den Folien von Wolfgang orientiert. Modbus-Konfigurator angeschmissen, Einstellungen analog zum Adapter getätigt und auf "Code generieren" geklickt. Den Programmaufruf habe ich direkt im PLC_PRG erledigt. Als Trace wollte es bei mir nicht klappen. Kann es sein, dass man Trace und Programm-Aufruf nicht mischen darf?

Ende vom Lied ist, dass ich nun alle Modbus-Werte der WP in meinem Steuerungsprogramm verwenden kann. Tausend Dank nochmal an alle, die geholfen haben!:s12:


----------



## wolfi-sps (31 Juli 2019)

Hallo thethorbo,

freud mich das es geklappt hat.
Mich würde noch interessieren welche Werte du aus der WP abfragst.
Bin mir nicht ganz sicher ob ich alle Werte habe.
Hab das ganze auf die schnelle gemacht.


Wolfgang


----------



## thethorbo (1 August 2019)

Hi Wolfgang,
ich habe die Wärmepumpe in einem dafür errichteten Teststand eingebaut. An ihr dran hängt ein Heizungskreis, den ich mit der SPS steuere. In erster Linie wollen wir die dort gemessenen Werte (Vorlauf, Rücklauf, etc.) und ein paar Statusmeldungen abfangen. Zusätzlich wollen wir noch die Werte der Raumklimastation (Temperatur und Feuchte) schreiben, da wir ja nur in einem Labor sind und das Verhalten des Hauses extern simulieren.. Das kann noch interessant werden, sollte jetzt aber funktionieren.

Prinzipiell werde ich aber Werte auslesen und schreiben, die ich hier finden konnte:http://www.dimplex.de/wiki/index.php/LWPM_410

Mir ist aufgefallen, dass du ganz viel mit PRGs gearbeitet hast. Ich selber nehme meist FBs, kenne das noch so aus der Ausbildung und von S7. Hat das einen Vorteil mit den PRGs?

Thorben


----------



## wolfi-sps (1 August 2019)

Hallo  Thorben,

Interessante Anwendung. Labor ? Was testet ihr da.?
Ja - von der Wiki habe ich auch die Daten. Aber da ist soviel drin - alles ist nicht brauchbar.
Schön wären die Daten vom Verdichter (Druck, Tempereatur usw.)
Die Anwendung habe ich für einen Bekannten gemacht. Der hat eine Heizungsfirma.
Er hat zwei Tiefenbohrung die ich mit Temperatursensoren versehen habe. Er stellt die WP mit Daten seinen Kunden vor.

Ja mit den PRG´s ist eine Glaubenssache.
Habe beruflich damit zutun und unser Haus automatisiert.
Ich finde - aber nur meine Meinung - es wird übersichtlicher einzelne Ordner mir den PRG´s.
Bei zwei drei PRG´s ist es zwar übertrieben, aber wenn es mehr werden findet man sich besser zurecht.
Und bei einem Haus werden es immer mehr - habe es selber bei mir erlebt....  ;-)))


Wolfgang


----------



## wolfi-sps (1 August 2019)

Bin´s nochmal,

du nimmst einen 750-881. Machst du auch eine Web-Visu dazu?
Eventuell auch eine Trendaufzeichnung?
Wenn ja - mit der Trendaufzeichnung hat der 750-881 und 750-880 einige Probleme.
Der Controller hängt sich nach einiger Zeit auf - nur zur Info.
Das Problem hatte ich bei meinem Bekannten - habe dann ein Panel mit Target-Visu von Wago eingebaut.

Wolfgang


----------



## thethorbo (5 August 2019)

Hi Wolfgang, sorry für die späte Antwort.

Genau, wir haben ein Labor aufgebaut und testen die Wärmepumpe im Verbund mit Batterie-Speichern, E-Autos, PV-Erzeugung und Co.

Web-Visu mache ich nicht, dafür ist es dann doch zu sehr "nur" Labor. Ich habe in Codesys Visualisierungsoberflächen erstellt, die sollen aber erstmal nicht ohne Codesys verwendet werden.

Du liest als INT die Ursache für die Sperre aus. Gibt es da eine Tabelle mit Fehlercodes oder sowas? Weißt Du, ob die Zeiten die die Sperren aktiv sind auch ausgelesen werden können?
Wenn ich eine schreibende Variable habe, ändere ich da einfach im Programm den Wert und der wird dann zyklisch reingeschrieben oder muss ich noch was anderes beachten?

Thorben


----------



## fireluke (1 März 2022)

Hallo,
schön, dass ich das Thema gefunden habe. Ich möchte auch gerne die Daten aus der Weishaupt WWP LS 8 Wärmepumpe auslesen, allerdings über Modbus TCP. Nun es ist so, dass Codesys 3.5 andere Einstellungen hat, wie in der Modbus Konfiguration von Wago in Codesys 2.5.

Aufbau:
Wago PFC100 (192.168.178.2)
WWP LS 8 (192.168.178.3) im Menü "Modbus TCP" habe ich 192.168.178.2 angegeben.

In Codesys habe ich einen Modbus Master erstellt mit der Adresse 192.168.178.2 und einen Slave mit 192.168.178.3

"Error Code: Illegal Data Adress, Slave does not support the register offset."
Ich vermute, dass die Modbus Kanäle nicht richtig eingestellt sind. Ich habe "Read Input Registers" und "Read Holding Registers" ohne Erfolg getestet. Codesys 3.5 kann nur WORD Variablen übertragen.

Ich freue mich über jede Antwort.
Vielen Dank im Voraus!

Lukas


----------



## Thruser (3 März 2022)

Hallo,

versuch erst einmal eine Adresse zu lesen, nicht gleich mehrere. Es gibt Geräte die wollen/vertragen das nicht.

Auch würden ein paar mehr Informationen hilfreich sein, den es scheinen ja verschiedene Kommunikationsmodule zu existieren und auch verschiedene Versionen der Steuerung bzw. des Softwarestandes, wenn ich nach dem Link von Thorben oben gehe.

Auch haben die wenigsten und diese Wärmepumpe und können daher nur anhand der zur Verfügung stehenden Informationen zu helfen versuchen.

So ist bei dem Modul NWPM Modbus TCP die Außentemperatur (R1) mal auf Adresse 1 und mal auf 27

Gruß


----------



## fireluke (3 März 2022)

Hallo Thruser,
ich habe jetzt die Lösung gefunden. 
Nachdem ich die Modbusadressen von Weishaupt erhalten habe, wusste ich nicht genau, wie man den Modbus Kanal richtig erstellt.
Wenn man in Codesys 3.5 auf "Modbus Slave-Kanal" klickt und dann einen neuen Kanal hinzufügt, muss man "Read Input Registers (Funktionscode 4)" anklicken und unter "Offset" die dezimale Modbusadresse eingeben. 
Diese Adresse wird dann von Codesys automatisch in eine hexadezimale Adresse umgewandelt.

Wenn der Kanal nicht im E/A Abbild angezeigt wird, einfach auf das Slave Gerät klicken und "Gerät aktualisieren" auswählen.

Trotzdem danke für die Hilfestellung.

Lukas


----------

