Hallo zusammen,
voller Freude habe ich die Einführung der Modbus TCP-Funktionalitäten für den EibPC² verfolgt, eröffnet diese mir doch die Möglichkeit, die vorhadnene PV-Anlage (WR Sunnyboy Tripower) über Modbus auszulesen und zu visualisieren. Eine willkommene Erweiterung zu den Smarmeter-Daten, da ich nur auch den Eigenverbrauch ohne weitere Hardware aus der Hausinstalltion bekommen kann (Erzeugung aus dem Wechselrichter, Einspeisung/Zukauf vom Smartmeter).
In einem zweiten Schritt scheint hierüber auch die Ansteuerung eines geplanten Batteriewechselrichters ohne SMA-eigenes Smartmeter in Aussicht, da ich die dann vorhandenen Daten ja via Modbus-Schnittstelle (Steuerung über Anlagensteuerung) dem Batteriewechselrichter üebrmitten kann (nochaml Geld gespart dan EibPC², yay).
Aber ein Schritt nach dem anderen!
Leider bin ich noch unerfahren was den Experte-Modus des EibPC² angeht, bislang habe ich alles im Logik-Editor sowie mit dort programmierten Funktionen realisieren können. Aber man lernt ja imemr weider dazu
In diesem Zusammenhang schaffe ich es aber aktuell leider nicht einmal, einen Modbus Master-Handle aufzusetzen, da mitr der Parser immer wieder Fehler um die Ohren zimmert.... liegt eideutig an meinem fehlenden Wissen der Programmierung in dem Bereich! Aber vielleicht finde ich hier etwas Hilfe um dabei weiter zu kommen.
Meine Programmidee:
- Master-Handle für PV-Wechselrichter anlegen [ MB_PV_WR = 0u08 /*Variable deklarieren*/ ; MB_PV_WR = modbusmaster(IP /*wessen IP? EibPC²? MB-Slave?*/, Port /*502?... allerdigs gitb mir eine Zahl >255 einen Parserfehler*/, timeout /*Einheit? ms oder s? Zahl >255 gibt ebenfalls einen Fehler*/, ID /*Slave Unit-ID ist 5, also 5 eingetragen*/) ]
- Zyklisch alle 60 sec. Daten aus dem WR auslesen /*readmaster verwenden, das ist klar. Wie realisiere ich heir am Besten ein zyklisches auslesen alle x Sekunden?
- Glesene Werte nach Abschluss der Lesevorgänge /* Rückgabewert readmaster(...) ist "2" ? */ im Logikeditor als Variablen werterwenden, um Steuerungsaufgaben zu erledigen
Allerdings scheitere ich aktuell bereits am ersten Punkt, ich keomme den Master-Handle nicht in eine u08-Variable geschrieben, um diesen dann weiterverwenden zu können 😑
Daher wäre ich üebr jegliche Hilfe, gerne mit einem kurzen Beispiel, dankbar.
voller Freude habe ich die Einführung der Modbus TCP-Funktionalitäten für den EibPC² verfolgt, eröffnet diese mir doch die Möglichkeit, die vorhadnene PV-Anlage (WR Sunnyboy Tripower) über Modbus auszulesen und zu visualisieren. Eine willkommene Erweiterung zu den Smarmeter-Daten, da ich nur auch den Eigenverbrauch ohne weitere Hardware aus der Hausinstalltion bekommen kann (Erzeugung aus dem Wechselrichter, Einspeisung/Zukauf vom Smartmeter).
In einem zweiten Schritt scheint hierüber auch die Ansteuerung eines geplanten Batteriewechselrichters ohne SMA-eigenes Smartmeter in Aussicht, da ich die dann vorhandenen Daten ja via Modbus-Schnittstelle (Steuerung über Anlagensteuerung) dem Batteriewechselrichter üebrmitten kann (nochaml Geld gespart dan EibPC², yay).
Aber ein Schritt nach dem anderen!
Leider bin ich noch unerfahren was den Experte-Modus des EibPC² angeht, bislang habe ich alles im Logik-Editor sowie mit dort programmierten Funktionen realisieren können. Aber man lernt ja imemr weider dazu

In diesem Zusammenhang schaffe ich es aber aktuell leider nicht einmal, einen Modbus Master-Handle aufzusetzen, da mitr der Parser immer wieder Fehler um die Ohren zimmert.... liegt eideutig an meinem fehlenden Wissen der Programmierung in dem Bereich! Aber vielleicht finde ich hier etwas Hilfe um dabei weiter zu kommen.
Meine Programmidee:
- Master-Handle für PV-Wechselrichter anlegen [ MB_PV_WR = 0u08 /*Variable deklarieren*/ ; MB_PV_WR = modbusmaster(IP /*wessen IP? EibPC²? MB-Slave?*/, Port /*502?... allerdigs gitb mir eine Zahl >255 einen Parserfehler*/, timeout /*Einheit? ms oder s? Zahl >255 gibt ebenfalls einen Fehler*/, ID /*Slave Unit-ID ist 5, also 5 eingetragen*/) ]
- Zyklisch alle 60 sec. Daten aus dem WR auslesen /*readmaster verwenden, das ist klar. Wie realisiere ich heir am Besten ein zyklisches auslesen alle x Sekunden?
- Glesene Werte nach Abschluss der Lesevorgänge /* Rückgabewert readmaster(...) ist "2" ? */ im Logikeditor als Variablen werterwenden, um Steuerungsaufgaben zu erledigen
Allerdings scheitere ich aktuell bereits am ersten Punkt, ich keomme den Master-Handle nicht in eine u08-Variable geschrieben, um diesen dann weiterverwenden zu können 😑
Daher wäre ich üebr jegliche Hilfe, gerne mit einem kurzen Beispiel, dankbar.
Kommentar