Also ich habe mich mal alleine daran Versucht, komme jedoch leider nicht weiter.
Die Hoffnung war, da das BCS ebenfalls wie der Growatt Inverter per RS485 Modbus RTU kommuniziert, könnte ich mich an die Growatt config halten und entsprechend abwandeln.
Scheint aber leider nicht so einfach
Hier mal zumindest die Daten, die eich gerne gelesen hätte, vielleicht kann man da ja was machen:
Code: Alles auswählen
// Holding Register
$Befehl["DeviceID"] = $WR_ID;
$Befehl["BefehlFunctionCode"] = "03";
$Befehl["RegisterAddress"] = "0001"; // Dezimal 1
$Befehl["RegisterCount"] = "0002";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Seriennummer"] = $rc["data"];
if ($rc["ok"] == false) {
$funktionen->log_schreiben("Keine Antwort vom BMS."," ",7);
goto Ausgang;
}
// Read Register
$Befehl["BefehlFunctionCode"] = "03";
$Befehl["RegisterAddress"] = "0000"; // Dezimal 0
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Geraetekennung"] = $rc["data"]+0;
$Befehl["RegisterAddress"] = "0007"; // Dezimal 7
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Zellspannung"] = hexdec($rc["data"])/1000;
$Befehl["RegisterAddress"] = "0008"; // Dezimal 8
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Temperatur"] = hexdec($rc["data"])/10;
$Befehl["RegisterAddress"] = "0009"; // Dezimal 9
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Temp_shutdown"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "000A"; // Dezimal 10
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["V_shutdown"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "000B"; // Dezimal 11
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["LVP_counter_Abschaltung"] = hexdec($rc["data"])*10;
$Befehl["RegisterAddress"] = "000C"; // Dezimal 12
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Strom_Ladungsausgleich"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "000D"; // Dezimal 13
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Modus"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "000E"; // Dezimal 14
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["LVP_Status"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "000F"; // Dezimal 15
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["OVP_Status"] = hexdec($rc["data"]);
$Befehl["RegisterAddress"] = "0010"; // Dezimal 16
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["max_Spannung"] = hexdec($rc["data"])/1000;
$Befehl["RegisterAddress"] = "0011"; // Dezimal 17
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["min_Spannung"] = hexdec($rc["data"])/1000;
$Befehl["RegisterAddress"] = "0012"; // Dezimal 18
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["max_Temperatur"] = hexdec($rc["data"])/10;
$Befehl["RegisterAddress"] = "0013"; // Dezimal 19
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["min_Temperatur"] = hexdec($rc["data"])/10;
$Befehl["RegisterAddress"] = "001F"; // Dezimal 31
$Befehl["RegisterCount"] = "0001";
$rc = $funktionen->phocos_pv18_auslesen($USB1,$Befehl);
$aktuelleDaten["Bal_Spannung"] = hexdec($rc["data"])/1000;