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.
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.
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.
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…
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.
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
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)
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)."
";
}
// ----------------------------------------------------------------------------
?>
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
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.