Re: Kostal Wechselrichter, zusätzliche Daten

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Bogeyof
Beiträge: 1100
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 160 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Bogeyof »

Hallo @Ulrich,
ich habe für den Kostal Plenticore noch 4 weitere Datenfelder ausgelesen bzw. errechnet, die durchaus auch für andere interessant sein könnten:

Code: Alles auswählen

  $rc = $funktionen->kostal_register_lesen($COM1,"0064","0002","Float");
  $aktuelleDaten["Total_DC_Power"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0246","0001","U16-1");
  $aktuelleDaten["Bat_Charge_Power"] = $rc["Wert"];
  if ($aktuelleDaten["Bat_Charge_Power"] > 32767) {
     $aktuelleDaten["Bat_Charge_Power"] = (65535 - $aktuelleDaten["Bat_Charge_Power"]) * -1;
  }
  $rc = $funktionen->kostal_register_lesen($COM1,"0090","0002","Float");
  $aktuelleDaten["Laufzeit"] = $rc["Wert"];

  $aktuelleDaten["WirkungsgradWR"] = ($aktuelleDaten["Verbrauch"] + $aktuelleDaten["Ueberschuss"]) / $aktuelleDaten["Total_DC_Power"];
"Total_DC_Power" ist die Gesamtleistung des Wechselrichters [DC], nur die Leistung welche für eine Umwandlung in [AC] verwendet wird, also ohne z.B. Batterie Laden DC-seitig. (in W)
"Bat_Charge_Power" ist die Ent-/Ladeleistung der Batterie, könnte man natürlich auch aus Strom * Spannung errechnen, aber wozu? Ist eigentlich ein S16-Field mit Länge 1, es funktioniert aber die Umwandlung in funktionen.inc.php nicht, daher U16-1 und eigene Vorzeichen-Behandlung (in W).
"Laufzeit" ist die Nutzungszeit des WR (in Sekunden).
"WirkungsgradWR" errechnet den aktuellen Wirkungsgrad des Wechselrichters in allen Situationen, also auch während Einspeisen oder Bezug / Laden Batterie. Ein sehr interessanter Wert wie ich finde.

Ich habe die Werte bei mir in die Datenbank eingefügt, evtl. willst Du dies ja auch anderen Kostal-Nutzern zur Verfügung stellen...

Gruß Christian

Benutzeravatar
Ulrich
Administrator
Beiträge: 5502
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
Kontaktdaten:

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Ulrich »

Hallo Christian,

vielen Dank für die Inforamtionen. Die Daten werde ich mit aufnehmen. Spätestens in der Image Version 4.6.6 werden sie enthalten sein. Die Version 4.6.6 wird Anfang August heraus kommen.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Bogeyof
Beiträge: 1100
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 160 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Bogeyof »

Hallo Ulrich, ich habe mal die aktuelle Version verglichen und habe noch 2 kleine Anpassungen für den Kostal Plenticore, welche 2 kleine Fehler beheben:

1. Die Total_DC_Power kann in der Nacht Null werden und damit kommt es zu einer Division durch Null:

Code: Alles auswählen

  if ($aktuelleDaten["Total_DC_Power"] > 0) {
  $aktuelleDaten["WirkungsgradWR"] = ($aktuelleDaten["Verbrauch"] + $aktuelleDaten["Ueberschuss"]) / $aktuelleDaten["Total_DC_Power"];
Fehlermeldung findet sich dann in der php.log...

2. Die AC_Solarleistung hat vereinzelt Werte > 32767 (anscheinend wenn der Wert negativ wird, z.B. -1), deswegen habe ich einen Test eingebaut der hilft unsinnige Werte (typisch > 65000) und damit unschöne Grafiken zu vermeiden:

Code: Alles auswählen

  if ($aktuelleDaten["AC_Solarleistung"] > 32767) {
    $aktuelleDaten["AC_Solarleistung"] = 0;
Ich habe hier im Forum auch schon öfter Meldungen zu Extremwerten mit z.B. > 65000 gesehen, ich denke das sind ebenfalls Berechnungsprobleme wenn der Wert (unerwartet?) negativ wird.

Benutzeravatar
Ulrich
Administrator
Beiträge: 5502
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
Kontaktdaten:

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Ulrich »

Hallo Bogeyof,

vielen Dank für die Informationen. Die Änderungen habe ich übernommen.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Bogeyof
Beiträge: 1100
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 23 Mal
Danksagung erhalten: 160 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Bogeyof »

Hallo Ulrich, schon wieder gäbe es weitere, evtl. interessante Daten. Es können über die Sunspec-Register auch diverse Temperaturwerte des Wechselrichters ausgelesen werden.

Code: Alles auswählen

  $rc = $funktionen->kostal_register_lesen($COM1,"9CA7","0001","U16-1");
  $aktuelleDaten["Temp_WR_Cab"] = $rc["Wert"] / 10;
  $rc = $funktionen->kostal_register_lesen($COM1,"9CA8","0001","U16-1");
  $aktuelleDaten["Temp_WR_Sink"] = $rc["Wert"] / 10;
  $rc = $funktionen->kostal_register_lesen($COM1,"9CA9","0001","U16-1");
  $aktuelleDaten["Temp_WR_Trans"] = $rc["Wert"] / 10;
In der Datenbank habe ich die Werte unter Service abgelegt:

Code: Alles auswählen

          $query .= "Service ";
          $query .= "Status=".$daten["Status"];
          $query .= ",Laufzeit=".$daten["Laufzeit"];
          $query .= ",Temp_WR_Cab=".$daten["Temp_WR_Cab"];
          $query .= ",Temp_WR_Sink=".$daten["Temp_WR_Sink"];
          $query .= ",Temp_WR_Trans=".$daten["Temp_WR_Trans"];
          $query .= ",Seriennummer=\"".$daten["Seriennummer"]."\"";

Benutzeravatar
Ulrich
Administrator
Beiträge: 5502
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 875 Mal
Kontaktdaten:

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Ulrich »

Diese Änderungen habe ich auch übernommen. Vielen Dank.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Stefan_E
Beiträge: 65
Registriert: Do 2. Jan 2020, 22:08
Danksagung erhalten: 9 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Stefan_E »

Bogeyof hat geschrieben:
Di 4. Aug 2020, 16:28
2. Die AC_Solarleistung hat vereinzelt Werte > 32767 (anscheinend wenn der Wert negativ wird, z.B. -1), deswegen habe ich einen Test eingebaut der hilft unsinnige Werte (typisch > 65000) und damit unschöne Grafiken zu vermeiden:

Code: Alles auswählen

  if ($aktuelleDaten["AC_Solarleistung"] > 32767) {
    $aktuelleDaten["AC_Solarleistung"] = 0;
Ich habe hier im Forum auch schon öfter Meldungen zu Extremwerten mit z.B. > 65000 gesehen, ich denke das sind ebenfalls Berechnungsprobleme wenn der Wert (unerwartet?) negativ wird.
Die Konversion in funktionen.inc.php für S16 und U16 ist identisch, das heisst S16 berücksichtigt signed nicht. Man sollte deshalb dort schreiben:

Code: Alles auswählen

        case "S16":
          $Daten["Wert"] = hexdec(substr($rc,18,$Daten["DatenLaenge"]));
          if ($Daten["Wert"] > 32767) {
          	$Datem["Wert"] = $Daten["Wert"] - 65536;
          }
Das würde dann auch die Verrenkungen bei der Berechnung von "Bat_Charge_Power" überflüssig machen.

Ich habe bei mir noch folgende Werte hinzugefügt (kostal_plenticore.php):

Code: Alles auswählen

  $rc = $funktionen->kostal_register_lesen($COM1,"00FC","0002","Float");
  $aktuelleDaten["KSEM_Leistung"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"00FE","0002","Float");
  $aktuelleDaten["KSEM_Wirkleistung"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0100","0002","Float");
  $aktuelleDaten["KSEM_Scheinleistung"] = $rc["Wert"];

  $rc = $funktionen->kostal_register_lesen($COM1,"0068","0002","U32");
  $aktuelleDaten["Energiemanager_Status"] = $rc["Wert"];
Von den ersten drei braucht man eigentlich nur die Leistung, aber die sagt dann genau, was man am Gebäudeeingang einspeist:
Screenshot 2020-09-19 211115.png
Der vierte Eintrag erzaehlt, was genau der Kostal mit der Batterie zu tun gedenkt:
Screenshot 2020-09-19 211233.png
Screenshot 2020-09-19 211233.png (10.58 KiB) 4557 mal betrachtet

Stefan_E
Beiträge: 65
Registriert: Do 2. Jan 2020, 22:08
Danksagung erhalten: 9 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Stefan_E »

Stefan_E hat geschrieben:
Sa 19. Sep 2020, 21:17

Code: Alles auswählen

        case "S16":
          $Daten["Wert"] = hexdec(substr($rc,18,$Daten["DatenLaenge"]));
          if ($Daten["Wert"] > 32767) {
          	$Datem["Wert"] = $Daten["Wert"] - 65536;
          }
Datem--> Daten ... ich liebe Sprachen, die nichts checken :-(

Stefan

Stefan_E
Beiträge: 65
Registriert: Do 2. Jan 2020, 22:08
Danksagung erhalten: 9 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Stefan_E »

Noch was...:

Code: Alles auswählen

  $rc = $funktionen->kostal_register_lesen($COM1,"00AE","0002","Float");
  $aktuelleDaten["AC_Wirkleistung"] = $rc["Wert"];

  $rc = $funktionen->kostal_register_lesen($COM1,"00FE","0002","Float");
  $aktuelleDaten["KSEM_Wirkleistung"] = $rc["Wert"];
Die Register 0xAE (in Original Solaranzeige) und 0xFE (von mir hinzugefügt) sind im Kostal Manual als reactive power beschrieben, was sich mit Blindleistung übersetzt, nicht Wirkleistung.

Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Re: Kostal Wechselrichter, zusätzliche Daten

Beitrag von Gerd »

Bogeyof hat geschrieben:
Fr 7. Aug 2020, 14:34
Hallo Ulrich, schon wieder gäbe es weitere, evtl. interessante Daten. Es können über die Sunspec-Register auch diverse Temperaturwerte des Wechselrichters ausgelesen werden.

Code: Alles auswählen

  $rc = $funktionen->kostal_register_lesen($COM1,"9CA7","0001","U16-1");
  $aktuelleDaten["Temp_WR_Cab"] = $rc["Wert"] / 10;
  $rc = $funktionen->kostal_register_lesen($COM1,"9CA8","0001","U16-1");
  $aktuelleDaten["Temp_WR_Sink"] = $rc["Wert"] / 10;
  $rc = $funktionen->kostal_register_lesen($COM1,"9CA9","0001","U16-1");
  $aktuelleDaten["Temp_WR_Trans"] = $rc["Wert"] / 10;
In der Datenbank habe ich die Werte unter Service abgelegt:

Code: Alles auswählen

          $query .= "Service ";
          $query .= "Status=".$daten["Status"];
          $query .= ",Laufzeit=".$daten["Laufzeit"];
          $query .= ",Temp_WR_Cab=".$daten["Temp_WR_Cab"];
          $query .= ",Temp_WR_Sink=".$daten["Temp_WR_Sink"];
          $query .= ",Temp_WR_Trans=".$daten["Temp_WR_Trans"];
          $query .= ",Seriennummer=\"".$daten["Seriennummer"]."\"";
Hi, was sind das denn für Temperaturwerte?
Cu Gerd
My Coffee is always #000000!

Antworten

Zurück zu „Allgemeines“