Modbus- lesen geht, schreiben nicht

OW1000

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

ich habe folgendes Setup.

  • LG Therma V HM091 UR Wärmepumpe
  • RS485 to WLAN Adapter Elfin EW11
  • Technische Alternative Regler mit Modbus Schnittstelle
Im Zielzustand soll der Heizungsregler die Wärmepumpe ansteuern. Da die Wärmepumpe weit entfernt ist, soll die Kommunikation über WLAN also Modbus TCP erfolgen.

Grundsätzlich funktioniert die Kommunikation auch, ich kann alle Werte der LG Therma auslesen.

Das Schreiben von Werten funktioniert allerdings nicht. Ich habe dazu auch schon den LG Support angeschrieben. Es gibt Dip-Schalter auf der Platine mit denen einige Funktionen der WP aktiviert werden können. Diese habe ich abgeglichen und sie stehen meiner Meinung nach korrekt.

Gibt es jemanden, der sich vertieft mit der Modbus Kommunikation auskennt und unterstützen kann? Liegt es evtl an einer Einstellung des Elfin EW11 Adapters?

Im nächsten Schritt würde ich provisorisch ein Kabel legen, um zu testen ob das Schreiben der Register damit funktioniert.

Wäre für jeden Tipp dankbar!

Viele Grüße
 
Wenn lesen funktioniert, dann passt dein Kommunikationsweg wie du schreibst wohl grundsätzlich.
Beim Schreiben kann es sein, dass mehrere Register geschrieben werden müssen oder du bei einem 32bit Register nicht die Startadresse sondern das Integer Register danach ansprechen musst.
 
Hast du eine Dokumention zu der Wärmepumpe aus der die Register hervor gehen? Wenn ja stell die mal ein. Wenn du lesen kannst kann die Konfiguration des Gateway schon mal nicht so schlecht sein. Wenn schreiben nicht geht wäre als erstes mal zu klären welcher Functions Code es sein soll. FC6 oder FC16. Das sollte in der Dokumentation stehen. Aus dem Response im Modbus FB in deiner Steuerung solltes du Rückschlüsse auf das Problem finden. Der Response ist bei Modbus immer gleich. (LINK)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besten Dank schon Mal für die Antworten. Die Einstellungen des Serial Ports habe ich mal so übernommen, aber leider keinen Erfolg gehabt. Ich schreibe den Function Code 5 (write single coil), versuche gerade nur die Wärmepumpe einzuschalten.

Die Doku der WP habe ich angehängt.

Viele Grüße
 

Anhänge

  • Modbus einrichten (1).pdf
    252,6 KB · Aufrufe: 12
Das Schreiben darf natürlich nur einer machen, ein evtl. vorhandenes Bediengerät schreibt unter Umständen zyklisch auf den gleichen Registern rum.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da es sich um einen Digitalwert handelt schreibe ich das aktuell mit dem 05 single coil. ich werde es Mal mit dem 06 sowie 16 testen. Danke für die Anregung.
 

Anhänge

  • Screenshot_2024-09-25-19-19-20-928_com.android.chrome.jpg
    Screenshot_2024-09-25-19-19-20-928_com.android.chrome.jpg
    223,1 KB · Aufrufe: 7
Ja FC05 sollte richtig sein. Hast du mal probiert die Register Adresse 0 oder 2 alternativ probiert. Bei Modbus sind Register Offsets zwischen unterschiedlichen geräten immer mal wieder ein Thema. Wobei das dann sehr komisch wäre wenn das Problem dann nur bei den Coils autrete. Kannst du die Werte den zumindest per FC01 lesen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ein guter Hinweis. Den Rasterversatz habe ich tatsächlich. Aber der ist meiner Beobachtung nach konsistent. Also um das Coil 1 aus der Doku auszulesen, muss ich den Wert bzw. die Adresse 0 eingeben. Mit der Adresse 0 kann ich aber dann das Coil 1 korrekt auslesen. Der Offset zieht sich auch durch die anderen Register, ich denke das sollte nicht die Ursache sein. Ich versuche es zunächst mit einem Kabel um zu verstehen, welche Komponente die Probleme verursacht.
 
Kurzes Update: ich habe jetzt ein Kabel gezogen. Innerhalb von wenigen Minuten war es möglich Werte zu schreiben und zu lesen. Daher vermute ich aktuell stark, dass der WLAN Dongle Elfin EW11 die Ursache dafür ist, dass ich keine Werte schreiben kann. Zu 100% sicher bin ich mir nur nicht, da auch die Signalerzeuger auf der Technischen Alternative Seite unterschiedlich ist, je nachdem Modbus RTU oder TCP eingesetzt wird. Ich Stelle Mal noch die Optionen des Dongles EW11 hier ein, evtl. hat ja jemand eine Idee. Besten Dank auf jeden Fall für die bisherige Unterstützung. Viele Grüße
 
Dies sind die Optionen in dem Elfin EW11.
 

Anhänge

  • Screenshot_2024-09-27-14-21-33-495_com.android.chrome.jpg
    Screenshot_2024-09-27-14-21-33-495_com.android.chrome.jpg
    228,1 KB · Aufrufe: 7
  • Screenshot_2024-09-27-14-21-26-040_com.android.chrome.jpg
    Screenshot_2024-09-27-14-21-26-040_com.android.chrome.jpg
    267,5 KB · Aufrufe: 7
  • Screenshot_2024-09-27-14-21-02-072_com.android.chrome.jpg
    Screenshot_2024-09-27-14-21-02-072_com.android.chrome.jpg
    248,4 KB · Aufrufe: 7
  • Screenshot_2024-09-27-14-20-48-483_com.android.chrome.jpg
    Screenshot_2024-09-27-14-20-48-483_com.android.chrome.jpg
    254,5 KB · Aufrufe: 6
Zuviel Werbung?
-> Hier kostenlos registrieren
In der Doku, die du verlinkt hast, wird noch eine Slave-Adresse konfiguriert. Die hatte ich nicht gesehen, die ist im Standard auf 00, was aber in Modbus keine gültige Slave Adresse ist. Für Modbus RTU benötigst du zwingend eine Slave-Adresse (Geräteadresse). Du hast ja einen IP-Wandler, aber der wandelt das in Modbus RTU seriell. Dort ist im Protokoll an der ersten Stelle des Befehls die Slave-Adresse. In deinem Screenshot ist sie bei dir 7. Ist das die Adresse, die du am Gerät eingestellt hast?
 
ja, genau. Geräteadresse ist die 7. Ich denke Mal das passt auch so weit, da ich ja lesen kann. Nur das Schreiben gelingt über Modbus-TCP nicht. Habe aktuell ein Kabel dran, damit geht es. Ich habe mir jetzt noch zwei weitere WLAN RS485 Adapter besorgt und werde es damit testen sobald ich dazu komme. Besten Dank!
 
Hat es eventuell etwas mit der Sendebedingung nur bei Änderung zu tun? Du kannst ja mal einen RS-485-Adapter am PC anschließen. Wir nutzen den von Waveshare, der funktioniert gut und hat gute Schraubklemmen. Dann gibt es Software, um am seriellen Anschluss zu lauschen. https://freeserialanalyzer.com/features. Da könntest du mal schauen, was dein Adapter genau sendet und wo das Problem ist.
Das Modbus-Protkoll ist sehr leicht aufgebaut, das kann man einfach selber "entschlüsseln". Hier findest du ein gutes Beispiel dafür, wie das Telegramm für Function Code 5 aufgebaut ist:
https://www.simplymodbus.ca/FC05.htm

Wenn eins funktioniert und das andere nicht, findest du auf Protokollebene schnell den Unterschied und damit das Problem.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wir hatten bei einem Kunden mal den umgekehrten Fall, dass Schreiben ging, aber lesen nicht. Schuld war dabei die Paritätsprüfung. Die war am Master aktiviert, am Slave nicht. Der Slave hat den Paritätsteil einfach verworfen und trotzdem geschaltet. Beim Master ist die fehlende Paritätsprüfung der Antwort als ungültig gedeutet worden und die Antwort wurde verworfen. Nur falls mal jemand ähnliche Probleme hat, könnte es auch an so etwas liegen. In diesem Fall aber nicht.
 
Zurück
Oben