[Modul] JoTKPP - Solar-Wechselrichter Kostal PLENTICORE plus & PIKO IQ

Das Problem mit Little/Big-Endian haben sicher einige seit der 7.0. Bei mir gibt es leider einen von mir nicht änderbaren Empfänger der Modbus-Nachrichten (openWB), deshalb muß ich die Kostal auf little endian einstellen. Gibt es eine Möglichkeit, das Modul durch eine Änderung im Programmtext auf little endian festzuzurren?

Wenn ich den WR auf big endian umstelle, funktioniert das Modul wie erwünscht, dann aber die openWB nicht mehr :frowning:

Ich hab mal versucht, im Modul zu editieren, aber anscheinend nicht die richtige Stelle erwischt - wer weiß Rat?

Viele Grüße

Dirk

Hallo zusammen,

ich muss mich wieder einmal melden und schulde allen ein Update wie es mit dem Modul weiter geht.
Ursprünglich hatte ich vor, das Modul an IPS 7.0 anzupassen.
Dann kam mit IPS 7.x die Erweiterung des integrierten ModBus. Daher macht es Sinn, wenn ich das Ganze auf die neuen ModBus-Funktionen umschreibe, da diese nun auch Strings und alles andere unterstützt, was vorher nicht möglich war. Daher wird meine eigene ModBus-Klasse wohl überflüssig. Diese war jedoch darauf ausgelegt, dass sich der ModBus-Gateway um Big-/Little-Endian kümmert, was ab 7.x nun die ModBus-Instanz selber macht (coole Anpassung :+1:, aber für meinen Code nicht hilfreich :frowning: ). Daher lässt sich das Problem von einigen von euch (z.B. @garfieldt & @dallard) nicht einfach mit einer Zeile Code fixen…

Ich habe geplant, dass das Modul in Zukunft direkt einen Konfigurations-Import in die erweiterte ModBus-Instanz schreibt und dann eigentlich nur noch beim Laden von meinem Code abhängig ist.

Aktuell ist es aber so, dass ich (noch) zwei Jobs habe und daher die Freizeit fürs Programmieren zu kurz kommt . Das wird sich aber im Herbst ändern und ich hoffe, dass ich dieses Thema dann endlich angehen kann.

Ev. hat jemand anderes bereits alle Werte in eine ModBus-Instanz eingepflegt und könnte seinen Export zur Verfügung stellen?

Grüsse aus der Schweiz
jotata

3 „Gefällt mir“

Hallo,

danke, das hat mir schon mal auf die Sprünge geholfen. Ich habe mir die Modbus-Doku für den Kostal besorgt und das Device angelegt. Dabei sind folgende Punkte aufgefallen:

Bool-Variablen sollen als function code 3 angelegt werden (lt. Doku). Geht im Modul nicht.
Einige Variablen werden als little endian - byte swap benötigt, andere (vor allem Strings) als big endian (standard). Einige Strings sind mit 8 Byte in der Doku, brauchen aber 16, um den vollen Text anzugeben. Zwei Adressen haben kein angegebenes Variablenformat, die habe ich erst mal ausgelassen. Ansonsten ist die Vorlage angehängt - ohne Gewähr. Funktioniert mit meinem Plenticore Plus G2 7.0.

Viele Grüße

Dirk

Kostal Plenticore G2 7.0.json (54,6 KB)

Hallo,

endlich habe ich auch wieder etwas Zeit für Symcon :slight_smile:

Ich habe nun sämtliche ModBus-Parameter des Modules in eine ModBus-Vorlage konvertiert und dafür einen separaten Thread in den ModBus Vorlagen angelegt.

@dallard hat seine ebenfalls hier gepostet. Vielen Dank!

Da das Ganze nun relativ einfach (abgesehen von der Handarbeit bei mehr als 100 Parametern) direkt mit Simcon möglich ist, werde ich das Modul nicht mehr weiter entwickeln. Ich werde aber noch prüfen, ob es Sinn macht, das Modul komplett neu zu erstellen und im Hintergrund einfach die ModBus Instanz von Simcon „zu pflegen“. Damit wäre dann eine Aktualisierung über den Store sehr einfach möglich.

Bitte gebt euer Feedback ab, ob ihr Interesse daran habt (ansonsten kann ich meine Zeit im Moment auch für anderes nutzen :smirk:)

  • Ja, ich wäre interessiert an einem eigenständigen Modul
  • Nein, die Integration mit einer ModBus-Vorlage reicht völlig aus
  • Ich hätte gerne ein Script, welches die Archiv-Werte des Moduls auf die neuen Variablen der Vorlage überträgt
0 Teilnehmer

Grüsse aus der Schweiz
jotata

1 „Gefällt mir“

Guten Morgen,
folgende Frage,
Ich habe in meinem System 1stk Plenticore 10 / 1stk Plenticore 4.2 / 1stk KSEM (SmartMeter).

Wie kann ich beide WR einbinden, beide Wechselrichter verwenden am Modbus die ID71, diese kann man im WR leider nicht ändern…

Hatte das Thema schon jemand?

Danke und entschuldigt meine vielleicht naive Frage.

LG Liegale

Hat keiner eine Ahnung?

Hallo,
die Verbindung ist immer IP-Adresse + ModusID .
Bsp.

  1. WR 192.168.xxx.xx1 → Modus = 71
  2. WR 192.168.xxx.xx2 → Modbus = 71

LG
Ralf

Es braucht zunächst zwei Client Instanzen mit dem Port ip:1502
Dann das Modbus-Geräte mit ID 71 anlegen und zum Schluss die Plenticore Instanzen. Sollte auf Anhieb funktionieren.

Gruß Michael

Grüß Euch,

Danke, jetzt hat es geklappt!

LG Liegale

ich habe auch drei Plenticore - bekomme das aber irgendwie nicht nicht hin.
Ich habe den Client Socle kopiert und dann die IP Adresse geändert aber ich bekomme es nicht hin dann das (kopierte Modbus Gateway anzupassen - geschweige denn den zweiten Plenticore passend anzulegen.

Gruß Bernd

@da8ter Hallo Stephan,

jetzt geht es los, es wurden alle Variablen angelegt, die ich als aktiv geklickt habe.

Einige werden auch gefüllt, aber ich muss mir erstmal einen Überblick verschaffen, welche Werte ich haben will und ob sie plausibel sind.

Im Meldungs-Log aber auch eine Fehlermeldung:

08.11.2025, 11:06:02 | TimerPool | Kostal PLENTICORE plus (RequestRead):
Fatal error: Uncaught ValueError: func_get_arg(): Argument #1 ($position) must be less than the number of the arguments passed to the currently executed function in /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php:372
Stack trace:
#0 /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php(372): func_get_arg(0)
#1 /mnt/data/symcon/scripts/__generated.inc.php(31): JoTKPP->RequestRead()
#2 /-(1): JOTKPP_RequestRead(37117)
#3 {main}
thrown in /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php on line 372

Viele Grüße aus dem Unterallgäu

Harry

Eine weitere Fehlermeldung:

08.11.2025, 11:24:47 | TimerPool            | Kostal PLENTICORE plus (RequestRead): 
Warning: NaN/INF Werte werden nicht unterstützt in /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php on line 382

Fatal error: Uncaught ValueError: func_get_arg(): Argument #1 ($position) must be less than the number of the arguments passed to the currently executed function in /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php:372
Stack trace:
#0 /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php(372): func_get_arg(0)
#1 /mnt/data/symcon/scripts/__generated.inc.php(31): JoTKPP->RequestRead()
#2 /-(1): JOTKPP_RequestRead(37117)
#3 {main}
  thrown in /mnt/data/symcon/modules/.store/ch.tanner.jot.kpp/JoTKPP/module.php on line 372

Schau mal hier:

Sonst die verlinkte Vorlage nutzen.

@Nall-chan Welche wo verlinkte Vorlage nutzen?

Musst nur meinem zitierten Text folgen…


Da sind zwei Stück verlinkt

Danke - das mit dem Pfeil nach oben als Link kannte ich tatsächlich noch nicht.

“Again what learned” :wink: :loveips:

Gruß Harry

1 „Gefällt mir“

@Nall-chan Das war der Gamechanger: Über ModBus-Gerät und die Vorlage Kostal Plenticore G2 7.0.json kommen nun plausible Werte rein. Der Rest ist Fleißarbeit.

Vielen Dank für die Hilfe.

Viele Grüße aus dem Unterallgäu

Harry

1 „Gefällt mir“

Apropos Fleißarbeit, gibt es eine elegante Methode meine heiligen Daten (ca 30 seit Jahren geloggte Variablen) aus dem JoTKPP Modul auf die neuen Variablen zu übernehmen?

Oder muss ich tatsächlich von allen geloggten JoTKPP Variablen die neuen Nummern suchen, dann die Daten auf die Neuen übernehmen, dann das Logging auf den Neuen ein und auf den Alten abschalten?

Kann ich die alten Variablen dem Modbus Modul zuweisen?

Ja.

Nein, das erfolgt automatisch.

Die Funktion dafür findet sich in der Archiv Instanz.

Hallo !

ich betreibe das Modul schon länger erfolgreich. Jetzt habe ich aber 3 statt einem Kostal WR (3 verschiedene IP Adressen).
Ichv schaffe es aber nicht mehr als einen WR erfolgreich zu verbinden
Ich habe 3 verschidene I/O Instanzen angelegt; Jetzt auch noch testweise eine zweite Splitter Instanz Modbus.
Ich versuche diese immer wieder als Schnittstelle zuzuordnen - bekomme es aber nicht richtig ausgelesen.
Was mache ich falsch?