Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Was ich aber noch nicht verstanden habe... wiso besteht die Kiste aus 2 Teilen die separat ausgelesen und die Werte addiert werden müssen?? -> Wer denk sich nur immer solchen Käse aus?
wiso besteht die Kiste aus 2 Teilen die separat ausgelesen und die Werte addiert werden müssen??
Genau genommen sind es ja 4(!) Teile... die einzeln auszulesen sind.
Es gibt aber eine Erklärung dafür.
Im Prinzip sind alle Wechselrichter dieser Generation für eine Größenordnung von etwa 3000W (in meinem Fall 3200W) ausgelegt.
Dabei hat jedes WR-Modul zwei Solarstring-Eingänge welche jeder für sich ausgewertet wird.
Das hat wohl einerseits mit der Auslegung der Bauteile für eine bestimmte Spannung/Leistung (Solarmodule <1000V) und andererseits eine bessere Möglichkeit zur Modularisierung zu tun. Auch die Aufteilung auf einzelne Phasen ist damit in "haushaltsüblicher" Größe einfacher (230V/16A/3600W).
Im Klartext: Eigentlich gibt es von diesem Wechselrichtertyp nur 3200W-"Module" und bei Bedarf werden einfach mehr in ein Gehäuse gepackt.
Zudem ist es ja möglich an dessen RS485-Bus einfach über die zweite Buchse mehrere WR in Reihe zu schalten und auszulesen. Ob also intern mehrere Module oder extern verbunden ist somit egal...
So gesehen habe ich also zwei WR mit je zwei String-Eingängen.
Also 4x was zum Auslesen und addieren.
In dem im Anfangspost beigefügten SerialMon Log kann man gut erkennen wie die originale Software nach dem Neu-Verbinden alle möglichen IDs erstmal durchprobiert und dann einfach mit denen kommuniziert die "antworten".
Irgend etwas stimmt da nicht... Der WR antwortet auf einmal falsch obwohl an derAbfrage nix geändert wurde.
Vielleicht war daran auch mein WG schuld, irgendwie habe ich gestern abend festgestellt, dass die serielle Anbindung sich "erhangen" hatte und nicht mehr richtig reagierte...
Egal, hier die aktuellen Ergebnisse, sieht von den Rohdaten her finde ich ganz gut aus. Nur die berechneten Werte sind teilw. noch etwas unrealistisch.
Hier mal ein neuer Ansatz. Sollte Wertemässig besser hin kommen. Nur mit den x100 usw. bin ich mir noch nicht ganz sicher ob das so stimmt... Wird sich aber im Log zeigen
Code:
#Pfad zur seriellen Schnittstelle oder dem USB-Seriell-Wandler:
my $schnittstelle = '/dev/ttyUSB-2-1.2';
#Weitere Variablen die benoetigt werden -> NICHT veraendern!
my $seriel;
my $sin; #Serial Input = Empangener Datenstrom
my $cin; #Counter Input = Länge des Datenpackets
my $exit;
my $reciv;
my $daten;
my $return_value2;
my $debug=2;
my $Zaehler = 200;
use Time::Local;
$plugin_info{$plugname.'_cycle'} = 30;
if(($plugin_info{$plugname.'_time'}+$plugin_info{$plugname.'_cycle'}) >= $plugin_info{$plugname.'_last'}){
return;
}
$plugin_info{$plugname.'_time'} = time();
use Device::SerialPort;
$seriel = Device::SerialPort->new($schnittstelle) || die "Kann $schnittstelle nicht öffnen! ($!)\n";
$seriel->baudrate(9600);
$seriel->parity("none");
$seriel->databits(8);
$seriel->stopbits(1);
if($debug>=1){plugin_log($plugname,'Schnittstelle: ' . $schnittstelle . ' erfolgreich geöffnet')};
$daten = "0101ffffb6000000b6";
plugin_log($plugname,'Daten Abrufen: '.$daten);
$return_value2 = command_senden($daten);
sub command_senden{
my $data = $_[0];
my $command = pack("H*",$data);
$seriel->write($command);
$reciv = '';
$cin = '';
$sin = '';
$|=1;
my $exit=0;
while($exit < $Zaehler)
{
($cin, $sin) = $seriel->read(45);
if($cin > 0){
$sin = unpack "H*", $sin;
$reciv .= $sin;
$exit=0;
}else{
$exit++
}
if($debug>=3){plugin_log($plugname,'reciv-direkt: ' . $sin);}
}#Ende While
if($debug>=2){plugin_log($plugname,'reciv-komplet: ' . $reciv);}
my $len = length($data);
if(substr($reciv,$len) eq $data){
$reciv =~ s/$data//;
if($debug>=2){plugin_log($plugname,'reciv gekürzt: ' . $reciv);}
my @array = map "0x$_", $reciv =~ /(..)/g;
my $pv_voltage = $array[9] . $array[8];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_voltage);}
$pv_voltage = hex($pv_voltage)*10;
if($debug>=1){plugin_log($plugname,'PV Spannung: ' . $pv_voltage . 'V');}
my $pv_ampere = $array[11] . $array[10];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_ampere);}
$pv_ampere = hex($pv_ampere);
if($debug>=1){plugin_log($plugname,'PV Strom: ' . $pv_ampere . 'A');}
my $pv_frequecy = $array[13] . $array[12];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_frequecy);}
$pv_frequecy = hex($pv_frequecy);
if($debug>=1){plugin_log($plugname,'PV Frequenz: ' . $pv_frequecy . 'Hz');}
my $pv_grid_voltage = $array[15] . $array[14];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_grid_voltage);}
$pv_grid_voltage = hex($pv_grid_voltage);
if($debug>=1){plugin_log($plugname,'PV Ausgangsspannung: ' . $pv_grid_voltage . 'V');}
my $pv_grid_power = $array[19] . $array[18];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_grid_power);}
$pv_grid_power = hex($pv_grid_power)*10;
if($debug>=1){plugin_log($plugname,'PV Ausgangsleistung: ' . $pv_grid_power . 'W');}
my $pv_total_grid_power = $array[22] . $array[21] . $array[20];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_total_grid_power);}
$pv_total_grid_power = hex($pv_total_grid_power)*100;
if($debug>=1){plugin_log($plugname,'PV total Ausgangsleistung: ' . $pv_total_grid_power . 'kWh');}
my $pv_temp = $array[23];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_temp);}
$pv_temp = hex($pv_temp);
if($debug>=1){plugin_log($plugname,'PV Temperatur: ' . $pv_temp . '°C');}
my $pv_working_time = $array[26] . $array[25] . $array[24];
if($debug>=2){plugin_log($plugname,'substr: ' . $pv_working_time);}
$pv_working_time = hex($pv_working_time);
if($debug>=1){plugin_log($plugname,'PV Betriebsstunden: ' . $pv_working_time . 'h');}
}else{
if($debug>=2){plugin_log($plugname,'Falsche Antwort auf: ' . $data);}
}
}
PV Spannung 185,0V stimmt
PV Strom 0,87 A stimmt (bewölkt heute)
Frequenz ist 50,02 Hz
Ausgangssp. sind 236 V
Ausgangsleitung 149,0 W
Temp. 48° scheint auch zu passen, nur bei den Betriebsstunden müsste etwas zwischen 4 und 5 Jahren herauskommen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar