Modbus- lesen geht, schreiben nicht

OW1000

Level-2
Beiträge
11
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: 15
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-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-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-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.
 
Hallo zusammen, ich habe nun endlich wieder etwas Zeit mich um das Thema zu kümmern. Da die Kommunikation per Kabel funktioniert, habe ich mir einen Waveshare Adapter besorgt.

Leider kann ich mit diesem im Moment nicht einmal lesen, also erst einmal ein Rückschritt verglichen mit dem ELFIN EW11 ; - (

In der Benutzeroberfläche des ELFIN EW11 gibt es unter "Serial Port State" eine Info darüber, ob es Probleme mit der seriellen Schnittstelle gibt. Etwas ähnliches finde ich in der Benutzeroberfläche des Waveshare Adapters nicht. Hier sehe ich nur die LED mit der Bezeichnung "Rx" als Indiz dafür, ob etwas empfangen wird. Diese zu deuten fällt mir allerdings schwer- wahlweise leuchtet diese dauerhaft oder nach dem Tauschen von "A" und "B" blinkt diese. Kann jemand sagen, welches Verhalten gewünscht ist bei korrekt angeschlossenen Kabeln?

1731229696265.png

Ich habe schon beide Varianten getestet, allerdings ohne Erfolg (timeout).

Vielleicht ist jemand so freundlich und kann einmal über meine Einstellungen schauen.

1731230102386.png

1731230140313.png

1731230183424.png

Wäre für jeden Tipp dankbar. Wenn es nicht an den Einstellungen der seriellen Schnittstelle liegt, kann ich auch noch die Einstellungen der Netzwerkkonfiguration senden.

Besten Dank!
 
Probier einmal diese Software:

Damit haben wir sehr gute Erfahrung gemacht. Hier kann man den Datenverkehr sehr gut analysieren, wir haben das in Kombination mit dem Waveshare-Adapter gemacht:

1. Prüfe im Gerätemanager in Windows, ob der Waveshare-Adapter angezeigt wird, dann merke die die COM-Schnittstelle
2. Verbinde den Waveshare-Adapter mit dem RS-485-Bus, du kannst dich auch in einem Linienbus an den Master hängen und die komplette Kommunikation mitschneiden und analysieren. Dazu einfach vom Master A/B zum Slave A/B und dann zum nächsten Slave A/B
3. In der Analyzer-Software kannst du einfach mitschneiden, was dort passiert, wenn du den COM-Port und die richtigen Baudrate etc. auswählst

Der Aufbau des Protokolls ist hier gut beschrieben:

Damit haben wir schon oft Trouble-Shooting gemacht und die Kommunikation seriell analysiert.
 
Zurück
Oben