ModBus TCP Proxy

Der MODBUS Proxy oder auch MODBUS Server soll den Datenverkehr, von mehereren Geräten, stabil regeln.

Moderator: Ulrich

Pr4x77
Beiträge: 1
Registriert: Mi 14. Feb 2024, 10:52

Re: ModBus TCP Proxy

Beitrag von Pr4x77 »

Ich versuche gerade meine Huawei Anlage anzubinden und habe dafür auch den Modbusproxy eingrichtet. Der Modbusproxy soll sowohl von Solaranzeige als auch vom TeslaSolarCharger genutzt werden. Der TeslaSolarCharger erhält seine Daten über den Modbusproxy d.h. das scheint zu funktionieren.

Solaranzeige bekommt aber keine Daten und zeigt im Log immer:

Modbus: Timeout
Modbus: Keine Häppchen empfangen

Kann mir da jemand helfen?

EDIT: Erledigt, hatte die falsche Geräte-ID angegeben. Mit 62 statt 49 gehts, obwohl SmartMeter eigentlich auch vorhanden :)

solarll
Beiträge: 1
Registriert: Mi 6. Mär 2024, 23:19

Re: ModBus TCP Proxy

Beitrag von solarll »

mthom1962 hat geschrieben:
Mo 13. Mär 2023, 11:20
Moin,
meine Anlage ist erst seit einer Woche in Betrieb, allerdings selber gebaut.
WR Huawei 6ktl-m1
Luna2000 5kw
AC-Elwa-e

Der Huawei hat wohl das gleiche Problem, es geht nur eine Verbindung über Modbus TCP.
Die Elwa und solaranzeige wollen zugreigfen.
Hab den Proxy installiert, und siege da, alles ist fein!
Mit diesen Einstellungen läuft der Huawei sauber:

sudo modbus-proxy -b tcp://0:9000 --modbus tcp://192.168.2.132:502 --timeout 10 --modbus-connection-time 0.5

Hab den Proxy auf der selben Raspi Kiste wie die Solaranzeige installiert.
Gruß
Tommy

PS: Hoffe es hilft dem ein oder anderen. Falls es fehler gibt müsst Ihr mit den Parametern timeout und modbus-connection-time spielen.
Ich habe genau das selbe setup: nur wo trage ich die ip vom wechselrichter und vom ac thor ein ?
Der wechselrichter hat 192.168.2.64 und der acthor 192.168.2.67 der Proxy gibt dann quasi die daten weiter ? Versteh ich das so richtig ?

mthom1962
Beiträge: 2
Registriert: Do 9. Mär 2023, 08:59
Danksagung erhalten: 2 Mal

Re: ModBus TCP Proxy

Beitrag von mthom1962 »

solarll hat geschrieben:
Mi 6. Mär 2024, 23:48
mthom1962 hat geschrieben:
Mo 13. Mär 2023, 11:20
Moin,
meine Anlage ist erst seit einer Woche in Betrieb, allerdings selber gebaut.
WR Huawei 6ktl-m1
Luna2000 5kw
AC-Elwa-e

Der Huawei hat wohl das gleiche Problem, es geht nur eine Verbindung über Modbus TCP.
Die Elwa und solaranzeige wollen zugreigfen.
Hab den Proxy installiert, und siege da, alles ist fein!
Mit diesen Einstellungen läuft der Huawei sauber:

sudo modbus-proxy -b tcp://0:9000 --modbus tcp://192.168.2.132:502 --timeout 10 --modbus-connection-time 0.5

Hab den Proxy auf der selben Raspi Kiste wie die Solaranzeige installiert.
Gruß
Tommy

PS: Hoffe es hilft dem ein oder anderen. Falls es fehler gibt müsst Ihr mit den Parametern timeout und modbus-connection-time spielen.
Ich habe genau das selbe setup: nur wo trage ich die ip vom wechselrichter und vom ac thor ein ?
Der wechselrichter hat 192.168.2.64 und der acthor 192.168.2.67 der Proxy gibt dann quasi die daten weiter ? Versteh ich das so richtig ?
Die IP des Wechselrichters wird bei --modbus tcp;//192.168.2.64:502 gesetzt, die Ip beim Thor ist die Ip Adresse des pi auf dem der Prxoy läuft. Der Port beim Thor ist in diesem Fall 9000 da der Proxy auf 9000 lauscht.
Huawei Sun2000 6KTL-M1 + DTSU666-H + Luna2000

hru
Beiträge: 66
Registriert: Fr 16. Feb 2024, 09:16

Re: ModBus TCP Proxy

Beitrag von hru »

Hallo zusammen,

gibt es die von Ulrich gewünschte Installations-/Konfigurationsanleitung für den modbusproxy irgendwo?

Danke und Gruß

Hartmut
PV-Anlage mit Sungrow Wechselrichter SH10RT-V112 und Speicher SBR128
MyPV AC ELWA 2 Heizstab zur Brauchwassererwärmung
Zwei Stromzähler ZPA GH305

gzi
Beiträge: 156
Registriert: Mo 16. Jan 2023, 20:43
Hat sich bedankt: 20 Mal
Danksagung erhalten: 30 Mal

Re: ModBus TCP Proxy

Beitrag von gzi »

Also Leute, ich verstehe den ganzen Thread hier nicht. Bitte klärt mich auf wenn ich falsch liege.

Wenn ein Wechselrichter ein Modbus TCP Interface hat, dann muss ihm doch egal sein woher im TCP Netz die Anfragen kommen. OK wenn das Interface des Wechselrichters buggy programmiert ist, dann könnte es sein, dass viele parallele Abfragen es ausser Takt bringen.

Aber in einem Modbus TCP Netz können mehrere Clients Abfragen an den selben Server richten. Das ist so spezifiziert.
Raspi 3B, Hybrid Must PV18-3024 VHM, Hoymiles HM-800 , Nachteinspeisung, Flex-BKW, AhoyDTU, Smart Meter DTSU666-H, DIY Akku 6,7 KWh, DalyBMS2MQTT, Victron2MQTT,Architektur, HomeMatic CCU. Autor: Solaranlage Do-It-Yourself

TeamO
Beiträge: 1150
Registriert: Mo 22. Jun 2020, 08:58
Wohnort: Ulm / Neu-Ulm
Hat sich bedankt: 24 Mal
Danksagung erhalten: 231 Mal

Re: ModBus TCP Proxy

Beitrag von TeamO »

Es gibt aber Hersteller (z.B. SolarEdge) welche nur eine einzige ModbusTCP Verbindung erlauben.
Sollen jetzt aber mehrere Geräte diesen Wechselrichter abfragen, geht es nicht.
Gruß Timo

Auflistung Geräte/Dashboards/Anschlussart
Datenbankfelder der einzelnen Geräte
GANZ WICHTIG: Überblick der vorhandenen Anleitungen

Fertige Komplett-Systeme gibt es hier anfragen[AT]bauer-timo[.]de

Tibber Invite (100% Öko-Strom + 50€ Bonus)

hru
Beiträge: 66
Registriert: Fr 16. Feb 2024, 09:16

Re: ModBus TCP Proxy

Beitrag von hru »

Hallo,

ich habe Probleme den modbus-proxy zum Laufen zu bekommen und benötige Unterstützung.

Was habe ich gemacht: (Installationsanleitung von hier https://pypi.org/project/modbus-proxy/)

Code: Alles auswählen

# pip installiert
sudo apt install python3-pip
# modbus-proxy installiert
pip install modbus-proxy --break-system-packages
#Datei /usr/lib/modbus-proxy/mproxy-conf.yaml angelegt (mit der Konfiguration für den Wechselrichterzugriff, wie bisher in der user.config.php)
# modbus-proxy manuell gestartet
modbus-proxy -c /usr/lib/modbus-proxy/mproxy-conf.yaml 
Das hat auch soweit funktioniert.
Es kommt die Meldung

Code: Alles auswählen

hru@pinas:~ $ modbus-proxy -c /usr/lib/modbus-proxy/mproxy-conf.yaml
2024-03-28 15:39:02,166     INFO modbus-proxy: Starting...
2024-03-28 15:39:02,173     INFO modbus-proxy.ModBus(192.168.178.45:502): Ready to accept requests on 0:9000
Allerdings ist dann die Konsole "belegt".

Deshalb wollte ich den modbus-proxy als Dienst laufen lassen.
(Anleitung hier https://github.com/binsentsu/home-assis ... ssions/119

Code: Alles auswählen

# Datei /etc/systemd/system/mproxy.service anlegen
# mit Zeile: ExecStart = modbus-proxy -c /usr/lib/modbus-proxy/mproxy-conf.yaml
# reload your systemd daemon, so that it can load your new service script
sudo systemctl daemon-reload
# enable your new service
sudo systemctl enable mproxy.service
# start your modbus-proxy service
sudo systemctl start mproxy.service
Wenn ich jetzt in der user.config.php umstelle von der IP des Wechselrichters auf localhost und vom Port 502 auf 9000, dann bekomme ich einen Fehler im solaranzeige Log weil keine Verbindung zu Wechselrichter aufgebaut werden kann.

Code: Alles auswählen

28.03. 15:18:01 |----------------   Start  sungrow.php    --------------------------
28.03. 15:18:01    -Sungrow: localhost Port: 9000 GeräteID: 1
28.03. 15:18:01 XX -Kein Kontakt zum Wechselrichter localhost  Port: 9000
28.03. 15:18:01 |----------------   Stop   sungrow.php    --------------------------
Wie kann ich prüfen, ob der Dienst sauber läuft und ob es ggfs. Fehler gibt?

Danke vorab für jeden Tipp.

Gruß Hartmut
PV-Anlage mit Sungrow Wechselrichter SH10RT-V112 und Speicher SBR128
MyPV AC ELWA 2 Heizstab zur Brauchwassererwärmung
Zwei Stromzähler ZPA GH305

hru
Beiträge: 66
Registriert: Fr 16. Feb 2024, 09:16

Re: ModBus TCP Proxy

Beitrag von hru »

Hallo

hier noch folgende Info zu meinem Fall:

Code: Alles auswählen

hru@pinas:~ $ sudo systemctl status mproxy.service
× mproxy.service - Modbus-Proxy
     Loaded: loaded (/etc/systemd/system/mproxy.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-03-28 15:54:24 CET; 5h 34min ago
   Duration: 68ms
    Process: 110141 ExecStart=/home/hru/.local/bin/modbus-proxy -c /usr/lib/modbus-proxy/mproxy-conf.yaml (code=exited, status=1/FAILURE)
   Main PID: 110141 (code=exited, status=1/FAILURE)
        CPU: 68ms

Mar 28 15:54:24 pinas systemd[1]: mproxy.service: Scheduled restart job, restart counter is at 5.
Mar 28 15:54:24 pinas systemd[1]: Stopped mproxy.service - Modbus-Proxy.
Mar 28 15:54:24 pinas systemd[1]: mproxy.service: Start request repeated too quickly.
Mar 28 15:54:24 pinas systemd[1]: mproxy.service: Failed with result 'exit-code'.
Mar 28 15:54:24 pinas systemd[1]: Failed to start mproxy.service - Modbus-Proxy.
Danke vorab für jeden Tipp.

Gruß Hartmut
PV-Anlage mit Sungrow Wechselrichter SH10RT-V112 und Speicher SBR128
MyPV AC ELWA 2 Heizstab zur Brauchwassererwärmung
Zwei Stromzähler ZPA GH305

hru
Beiträge: 66
Registriert: Fr 16. Feb 2024, 09:16

Re: ModBus TCP Proxy

Beitrag von hru »

Hallo,

weitere Infos aus der Analyse.
Der Befehl

Code: Alles auswählen

sudo journalctl --unit mproxy
liefert folgendes.

Code: Alles auswählen

Mar 28 15:54:23 pinas systemd[1]: Started mproxy.service - Modbus-Proxy.
Mar 28 15:54:23 pinas modbus-proxy[110137]: Traceback (most recent call last):
Mar 28 15:54:23 pinas modbus-proxy[110137]:   File "/home/hru/.local/bin/modbus-proxy", line 5, in <module>
Mar 28 15:54:23 pinas modbus-proxy[110137]:     from modbus_proxy import main
Mar 28 15:54:23 pinas modbus-proxy[110137]: ModuleNotFoundError: No module named 'modbus_proxy'
Mar 28 15:54:23 pinas systemd[1]: mproxy.service: Main process exited, code=exited, status=1/FAILURE
Mar 28 15:54:23 pinas systemd[1]: mproxy.service: Failed with result 'exit-code'.
Mar 28 15:54:23 pinas systemd[1]: mproxy.service: Scheduled restart job, restart counter is at 1.
Mar 28 15:54:23 pinas systemd[1]: Stopped mproxy.service - Modbus-Proxy.
Das kommt insgesamt 5 mal hintereinander.
Und dann kommt schließlich

Code: Alles auswählen

Mar 28 15:54:24 pinas systemd[1]: mproxy.service: Start request repeated too quickly.
Mar 28 15:54:24 pinas systemd[1]: mproxy.service: Failed with result 'exit-code'.
Mar 28 15:54:24 pinas systemd[1]: Failed to start mproxy.service - Modbus-Proxy.
In der ausführbaren Datei modbus-proxy steht in Zeile 5 "from modbus_proxy import main".
das scheint der Grund für den Fehler zu sein:

Code: Alles auswählen

hru@pinas:~ $ cat ./.local/bin/modbus-proxy
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from modbus_proxy import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
Hört sich an, als ob "modbus_proxy" nicht gefunden werden kann.(man achte auf den Unterstrich)

Hat jemand eine Idee?

Gruß Hartmut
PV-Anlage mit Sungrow Wechselrichter SH10RT-V112 und Speicher SBR128
MyPV AC ELWA 2 Heizstab zur Brauchwassererwärmung
Zwei Stromzähler ZPA GH305

hru
Beiträge: 66
Registriert: Fr 16. Feb 2024, 09:16

Re: ModBus TCP Proxy

Beitrag von hru »

Hallo,

so jetzt bin ich einen Schritt weiter.
Ich musste noch den Ordner wo die eigentliche Installation vom modbus-proxy liegt mit in der Datei mproxy.service per Environment-Befehl angeben:

Code: Alles auswählen

hru@pinas:~ $ cat /etc/systemd/system/mproxy.service
[Unit]
Description=Modbus-Proxy
After=network.target

[Service]
Type=simple
Restart=always
Environment="PYTHONPATH=$PYTHONPATH:/home/hru/.local/lib/python3.11/site-packages"
ExecStart = /home/hru/.local/bin/modbus-proxy -c /usr/lib/modbus-proxy/mproxy-conf.yaml

[Install]
WantedBy=multi-user.target

Jetzt kommt die Verbindung mit dem Wechselrichter beim Auslesen über den modbus-proxy zustande.(localhost und Port 9000 in der user.config.php)
Aber der Auslesevorgang hat noch ein Problem, nach der Modellgruppe kommt statt des Modells ein Lesefehler.

@Ulrich:
Hast Du eine Idee was da klemmen kann?

Code: Alles auswählen

29.03. 00:30:01 |----------------   Start  sungrow.php    --------------------------
29.03. 00:30:01    -Sungrow: 192.168.178.45 Port: 502 GeräteID: 1
29.03. 00:30:01 +  -Die Daten werden ausgelesen...
29.03. 00:30:02    -Firmware: ARM_SAPPHIRE-H_V11_V01_B
29.03. 00:30:02    -Seriennummer: ...
29.03. 00:30:02    -ModellGruppe: SH
29.03. 00:30:10    -Modell: SH10RT-V112
29.03. 00:30:17    -Alle 10 Minuten werden die Statistikdaten übertragen.
29.03. 00:30:18 *  -Daten zur lokalen InfluxDB [ sungrow_sh10rt ] gesendet.
29.03. 00:30:37    -Schleife 1 Ausgang...
29.03. 00:30:37    -OK. Datenübertragung erfolgreich.
29.03. 00:30:37 |----------------   Stop   sungrow.php    --------------------------
29.03. 00:31:01 |----------------   Start  sungrow.php    --------------------------
29.03. 00:31:01    -Sungrow: localhost Port: 9000 GeräteID: 1
29.03. 00:31:01 +  -Die Daten werden ausgelesen...
29.03. 00:31:01    -Firmware: ARM_SAPPHIRE-H_V11_V01_B
29.03. 00:31:01    -Seriennummer: ...
29.03. 00:31:02    -ModellGruppe: SH
29.03. 00:31:10    -Lesefehler => Ausgang.
29.03. 00:31:10 |----------------   Stop   sungrow.php    --------------------------
Vielen Dank vorab für Deine Unterstützung.

Gruß Hartmut
PV-Anlage mit Sungrow Wechselrichter SH10RT-V112 und Speicher SBR128
MyPV AC ELWA 2 Heizstab zur Brauchwassererwärmung
Zwei Stromzähler ZPA GH305

Antworten

Zurück zu „MODBUS Proxy“