FRONIUS Wechselrichter

Also, das halte ich jetzt aber für ein Gerücht.

Die PDF’s zur Schnittstellenbeschreibung für die API sowie für Modbus lassen sich eigentlich ziemlich gut lesen und verstehen.
Genauso wie die Excel-Sheets die es bei Fronius gibt mit allen nur erdenklichen Modbus-Adressen.

Deine Aussage ist eher ein Gerücht.

Wenn Du die PDF-Dateien so toll findest, dann kannst Du mir evtl. einen Hinweis geben, wie ich per MODBUS die Einspeise- und Bezugsleistung auslesen kann. Per JSON heißt es PowerReal_P_Sum.

Danke!

Hatten wir das nicht schon?

https://www.symcon.de/forum/threads/13185-FRONIUS-Wechselrichter?p=325215#post325215

Ach siehste … vor lauter Frust mit dieser undurchsichtigen MODBUS Dokumentation habe ich total vergessen zu schreiben, dass mir der Screenshot nichts gebracht hat. Ich habe alles genau so eingestellt.

Ich habe allerdings keinen Datenlogger. Da ich die Info per JSON jedoch kriege, muss ich sie ja auch irgendwie per MODBUS kriegen können.

Welchen Wechselrichter hast Du?

edit: ah geh, wir reden ja vom Smartmeter, ist schon spät :smiley:

Symo 8.2.3 mit SmartMeter.

Die Info ist im System vorhanden. Auf der Webseite vom WR sehe ich die gewünschten Infos und per JSON kann ich sie auch abrufen. Ich hoffe immer noch, dass ich einfach nur zu blöd bin, diese MODBUS Tabellen richtig zu lesen…

So hier mal der Excel-Sheet zum Fronius Smartmeter (feste Modbus-Adresse 240) mit allen möglichen Modbus-Registern.

Meter_Register_Map_Float_v1.0.zip (19 KB)

Danke.

Hilft leider nicht. Habe mal mit 40096 oder 40098 getestet … kommt nix an.

Bekommst Du andere Werte vom Smartmeter abgefragt oder überhaupt keine?
Hat Dein Smartmeter die Adresse 240?
Vielleicht gehen wir die Sache falsch an.

Denn wenn json und die Website die Daten haben, dann der Modbus so wie so.
Denn der WR bekommt die Daten vom Smartmeter über Modbus.

Wenn ich mit einem x-beliebigen MODBUS Abfrageprogramm auf die 240 gehe, dann sehe ich auf jeden Fall Werte … Also prinzipiell scheint das Ding auf der 240 zu sprechen.

In IPS funktionieren die Abfragen auf die ID 1 - das ist der WR.

Welchen Sunspec Model Type?
float oder int+SF

das sind nämlich die Register unterschiedlich.

Was kommt bei 40088 als SmalInt 16Bit

Also vom Wechselrichter bekommst Du Daten, na dann werden wir den blöden Smartmeter auch noch das „quatschen“ mit IPS beibringen :smiley:

Ich meine float, bin mir aber unsicher.

40088 SmalInt 16 Bit ergibt auf der 240 nichts und auf der 1 ergibt es 0.

Ich hoffe, dass wir dem das beibringen :wink:

OK, dann werden wir mal etwas anderes versuchen.
Ich lade meine Skripte hoch mit der php modbus class.
Dann versuchen wir mal ob wir dem Smartmeter so Werte entlocken können.
Das hilft dann vielleicht bei der Fehlersuche/eingränzung.

Aber erst heute Abend, muss jetzt ins Bett, muss früh raus.

PS.: Es gibt keine Probleme, nur Lösungen. Die Schwierigkeit ist, die richtige zu finden :smiley:

Wenn ich mit einem Modbus Tool abfrage, dann kommen dort Werte. Ich werde heute Abend noch mal ein wenig testen.

Danke schon Mal für Deine Unterstützung.

So, mal sehen, was damit passiert.

Die Skripte im Anhang in den IPS-Skript-Ordner, den include entsprechend anpassen die IP vom Wechselrichter eintragen und Skript laufen lassen (und vorher vielleicht noch einen Schnaps auf’s gute Gelingen) :smiley:

Die Modbus-Class hab ich irgendwann mal im Netz aufgestöbert, ist sehr gut wenn man mit Strings arbeiten will.


<?
	require_once("modbusClass/Modbus_Master.inc.php");
	
	$modbus = new ModbusMaster("IP-Adresse", "TCP");   // Port = 502
	
	// Abfrage für Float/Real-Werte
	$data = $modbus->readMultipleRegisters(240, 40072, 66);	// Device-Adresse, Start-Register-Adresse, Anzahl-Register
	$float = array_chunk($data, 4);

	//Abfrage für Integer-Werte
	$data = $modbus->readMultipleRegisters(240, 40072, 66);	// Device-Adresse, Start-Register-Adresse, Anzahl-Register
	$int = array_chunk($data, 2);
			
	echo "FLOAT-Werte
";
	foreach($float as $key => $value){
		ReadFloat($value);
		}
	
	echo "INTEGER-Werte
";
	foreach($int as $key => $value){
		ReadInteger($value);
		}

// ----------------------------------------------------------------------------

// Funktionen
// ----------------------------------------------------------------------------
// Bytes to INT
function ReadInteger($byte){
   $data = PhpType::bytes2signedInt($byte);
   echo $data."
";
   }	
	
	
// Bytes to FLOAT
function ReadFloat($byte){
	$data = PhpType::bytes2float($byte);
	echo round($data, 1)."
";
   	}
// ----------------------------------------------------------------------------

?>

modbusClass.zip (8.25 KB)

Ohne Schnaps bringt das Skript folgendes:


 FLOAT-Werte
1.5
1.5
4.5
232.9
233.2
232.7
230.9
402.2
404.3
400.1
401
50.2
398
-275.5
-320.6
994.6
691.5
348
346.4
1041.3
-561.1
-174.1
-93.7
-293.7
0.6
-0.8
-1
1
656179.2
NAN
NAN
NAN
196608
INTEGER-Werte
14681
16318
-9961
16318
22021
16528
-4718
17256
15292
17257
-19660
17256
-6553
17254
6554
17353
8739
17354
3277
17352
-32767
17352
-9830
16968
0
17351
-14746
-15479
21299
-15456
-22938
17528
-8192
17452
0
17326
14639
17325
10562
17538
17392
-15348
5898
-15570
25559
-15685
-9175
-15470
1311
16148
31457
-16553
2621
-16523
-15729
16243
13107
18720
16496
32704
0
32704
0
32704
0
18496

Grüße,
Christoph

Also die Abfrage funktioniert einwandfrei.
Und es sagt und das SunSPec float die richtige ist.
Die Abfrage der Interger bringt demnach nur unbrauchbare Werte.

Warum mit IPS-Boardmittel’n keine Werte kommen, kann ich jetzt so auch nicht sagen.

Das sind auf jedenfall die Register 40072 bis 40138.

1.5
1.5
4.5
232.9
233.2 = Volt L1-N
232.7 = Volt L2-N
230.9 = Volt L3-N
402.2
404.3 = Volt L1-L2
400.1 = Volt L2-L3
401 = Volt L3-L1
50.2 = Frequenz
398 = Leistung gesamt
-275.5 = Leistung L1
-320.6 = Leistung L2
994.6 = Leistung L3
691.5
348
346.4
1041.3
-561.1
-174.1
-93.7
-293.7
0.6
-0.8
-1
1
656179.2 = Total Wh Export
NAN
NAN
NAN
196608 = Total Wh Import

Moin,

vielen Dank für Deine Rückmeldung. Ich komme leider erst jetzt dazu, das Thema weiter zu verfolgen.

Das Auslesen des Wechselrichters per ModBus TCP klappt nach wie vor ohne Probleme.

Das Skript von Dir liest auf der ModBus ID 240 die o.g. Werte ohne Probleme aus. Nun versuche ich, das mit IPS-Bordmitteln zu erreichen.

Hier ein paar Screenshots:
ModBus01.PNG


ModBus03.PNG

Ich habe ja nun 2 ModBus Gateway unter den Splitter Instanzen und 2 Client Sockets unter den IO Instanzen. Ich habe auch schon getestet, beide ModBus Gateways auf einen Client Socket zu hängen, aber das bringt alles nichts.

Vielleicht kann mir jemand helfen? In diesem Fall kommt ein IP-Symcon 4.10, 06.02.2017, ecc696b9a833 zum Einsatz.

@paresy Kann da ein Update auf 4.2 helfen?

Grüße,
Christoph

Mach mal im Smartmeter-Splitter den Hacken bei Swap LSW/MSW weg
Und bei der Modbus-Adresse -1 — also nicht 40072 sondern 40071 = Strom gesamt