Wechselrichter auslesen

Moin Gemeinde,

ich hätte da mal wieder ein Problem bei dem ich als absoluter Laie keinen Einstieg finde.

Also ich habe eine PV Anlage mit nem AEKonversion WR am laufen. Das Teil kommuniziert über RS485<>RS232<>USB mit nem PC auf dem IPS läuft. Das mitgelieferte Tool ist nicht wirklich schön aber funktioniert erstmal.
Ich habe nun die Daten mitgeschnitten und gehofft das IPS mit dem WR sprechen kann, geht sicher auch nur ich finds nicht.
Also im IPS hab ich einen ComPort angelegt und diverse versuche unternommen an den WR zu senden - nur was muß ich senden ??
Anbei der Mittschnitt,ich denke alles was ROT dargestellt ist wird an den WR gesendet, das BLAUE kommt zurück.
Die Frage ist, wie muß ich das in IPS umsetzen.

<20140515175746.339 SYS>
COM ist offen
<20140515175746.459 SYS>
COM ist geschlossen
<20140515175746.519 SYS>
COM ist offen
<20140515175746.519 SYS>
Schlangengröße In/Out 2048/1024
<20140515175746.519 SYS>
Baud-Rate 9600
<20140515175746.519 SYS>
RTS aus
<20140515175746.529 SYS>
DTR an
<20140515175746.529 SYS>
Data Bits=8, Stop Bits=1, Parity=None
<20140515175746.529 SYS>
Zeichen setzen: Eof=0x04, Error=0x00, Break=0x00, Event=0x0A, Xon=0x00, Xoff=0x00
<20140515175746.529 SYS>
Handflow: ControlHandShake=(DTR_CONTROL), FlowReplace=(), XonLimit=0, XoffLimit=0
<20140515175746.529 SYS>
Zeitüberschreitungen: ReadInterval=0, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20140515175746.539 SYS>
Baud-Rate 9600
<20140515175746.539 SYS>
RTS aus
<20140515175746.539 SYS>
DTR an
<20140515175746.539 SYS>
Data Bits=8, Stop Bits=1, Parity=None
<20140515175746.539 SYS>
Zeichen setzen: Eof=0x04, Error=0x00, Break=0x00, Event=0x0A, Xon=0x00, Xoff=0x00
<20140515175746.549 SYS>
Handflow: ControlHandShake=(DTR_CONTROL), FlowReplace=(), XonLimit=0, XoffLimit=0
<20140515175746.549 SYS>
Zeitüberschreitungen: ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20140515175746.579 SYS>
Baud-Rate 9600
<20140515175746.579 SYS>
RTS aus
<20140515175746.579 SYS>
DTR an
<20140515175746.579 SYS>
Data Bits=8, Stop Bits=1, Parity=None
<20140515175746.579 SYS>
Zeichen setzen: Eof=0x04, Error=0x00, Break=0x00, Event=0x0A, Xon=0x00, Xoff=0x00
<20140515175746.579 SYS>
Handflow: ControlHandShake=(DTR_CONTROL), FlowReplace=(), XonLimit=0, XoffLimit=0
<20140515175746.579 SYS>
Zeitüberschreitungen: ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20140515175746.579 TX>
!<NUL>]<ETX>ð® [len=6]
<20140515175746.609 RX>
!’<DC3><NUL><NUL><LF>ƒ<NUL><NUL><NUL><NUL><NUL><NUL><NUL><NUL>½ [len=16]
<20140515175746.790 TX>
!<NUL>]<ETX>ö¨ [len=6]
<20140515175746.810 RX>
!’<NAK>›,»500-90<NUL><NUL><NUL><NUL><NUL><ENQ><NUL><NUL><NUL><SOH>Ïù)ëÏù)ë<NUL><NUL> <NUL><NUL><NUL><SOH><NUL><NUL><NUL><NUL><NUL><NUL><NUL><ETX><NUL><NUL><NUL><NUL>TF0.9.15 535<SOH>þ<NUL><NUL>G [len=72]
<20140515175746.990 TX>
!<NUL>]<ETX>ï± [len=6]
<20140515175747.020 RX>
!<ETX>î<NUL>æ<NUL><NUL><SOH><BS>€<DC2><NUL><BEL><NUL>ý<NUL><DC1>qH<NUL>¸<NUL><FF><NUL><BEL><NUL>2<NUL><NUL><NUL><NUL>{<NUL><BS><NUL><NUL>r<STX><NUL><BS><NUL><NUL>€<NUL><NUL><BS><NUL><ENQ><NUL><ENQ><NUL><<FF>{<DC1>ñ8ê=¸<STX><STX><STX><STX>3 [len=66]
<20140515175747.190 TX>
!<NUL>]<ETX>þ<SOH>þ<NUL><NUL>_ [len=10]
<20140515175747.210 RX>
!’<DLE>7 [len=4]
<20140515175747.390 TX>
!<NUL>]<ETX>ý£ [len=6]
<20140515175747.420 RX>
!’<ETB><NUL><CAN>QÁ<ETX>1<SO><DC4> [len=12]
<20140515175747.591 TX>
!<NUL>]<ETX>í³ [len=6]
<20140515175747.611 RX>
!’<DC2><SOH>=Ø<SO><NUL><NUL>)v<NUL><NUL>x(<NUL>9á¶<NUL><CAN>0ª<NUL><SUB>³c<NUL>2<NUL><NUL>ÿÿ<SOH>W’ [len=36]
<20140515175751.466 SYS>
DTR aus
<20140515175751.466 SYS>
RTS aus
<20140515175751.466 SYS>
DTR aus
<20140515175751.476 SYS>
RTS aus
<20140515175751.626 SYS>
COM ist geschlossen

Such mal ein Tool das SGI/KACO Protokoll spricht, dann kannst dich ja daran orientieren. Das können die Wechselrichter auch. :wink:

Moin,

danke für den Hinweis. Aber die Kaco/Schüco Programme die ich probiert habe finden den WR nicht - liegt wohl an der Adresse. Kaco/Schüco WR sind nur bis Teilnehmer 32 „nummeriert“ mein WR hat aber ID 93.

Mir ist es erstmal wichtiger den Einstieg ins senden per RS232 zu bekommen. Also welche Befehle ich senden muß damit der WR antwortet. Kann mir da bitte jemand helfen, hab auch schon Stunden im Forum gesucht, aber nur über das lesen vom ComPort was gefunden.

Grüße

Du musst denen erst die Nummern zuweisen einmalig, das geht nur mit der AEconversion Software.
Die Wechselrichter haben jeweils zwei Nummern, einmal die Seriennummer und dann nochmal eine frei konfigurierbare.
Mein Logger hatte sie im Werkzustand auch nicht gefunden.

Bezüglich eigenem auslesen: Ich hab da auch lange rumprobiert, und es nicht geschafft und letztendlich nen Logger gekauft.
Packe dir mal die Java Klassen aus der AEconversion Software aus, das ist ganz lehrreich wie’s funktionieren könnte.

Moin,

hatte mir grad nochmal das SGIOnline installiert - findet aber den WR nicht.
Weder ID noch Adresse vom WR lässt sich im AESolar 1.5. ändern, kommt immer ein Fehler :mad:.

Habe deshalb kurz entschlossen was in PHP geschrieben. Nachdem ich zig Fehlversuche beim Übermitteln des ASCII mit dem Befehl SendText hatte ist mir eingefallen das ich irgendwo mal gelesen hatte IPS könne kein ASCII. Und genauso isses, manche Zeichen werden korrekt von ASCII nach Hex übersetzt andere wieder nicht - Zeichen für Hex 00 sollte � oder . sein aber nicht in IPS.
Deshalb sende ich nun direkt in Hex und der WR antwortet auch brav.
Nun kühl ich erstmal meinen Kopf.

<?

COMPort_SetRTS(57749 /*[Serial Port AE_Konversion]*/, false);
COMPort_SetDTR(57749 /*[Serial Port AE_Konversion]*/, true);

$data1 = "\x21\x00\x5D\x03\xF0\xAE\x0D";
$data2 = "\x21\x00\x5D\x03\xF6\xA8\x0D";
$data3 = "\x21\x00\x5D\x03\xEF\xB1\x0D";
$data4 = "\x21\x00\x5D\x03\xFE\x01\xFE\x00\x00\x5F\x0D";
$data5 = "\x21\x00\x5D\x03\xFD\xA3\x0D";
$data6 = "\x21\x00\x5D\x03\xED\xB3\x0D";

ComPort_SendText(57749, $data1);
IPS_Sleep(200);
ComPort_SendText(57749, $data2);
IPS_Sleep(200);
ComPort_SendText(57749, $data3);
IPS_Sleep(200);
ComPort_SendText(57749, $data4);
IPS_Sleep(200);
ComPort_SendText(57749, $data5);
IPS_Sleep(200);
ComPort_SendText(57749, $data6);

?>

Antwort vom WR

19.05.2014 18:48:27.00 | RECEIVED | !
19.05.2014 18:48:27.00 | RECEIVED | ’ ƒ
19.05.2014 18:48:27.00 | RECEIVED | ½

19.05.2014 18:48:27.00 | RECEIVED | !’
19.05.2014 18:48:27.00 | RECEIVED | ›,»500-90
19.05.2014 18:48:27.00 | RECEIVED | Ïù
19.05.2014 18:48:27.00 | RECEIVED | )ëÏù)ë **
19.05.2014 18:48:27.00 | RECEIVED |
19.05.2014 18:48:27.00 | RECEIVED | TF0.9.
19.05.2014 18:48:27.00 | RECEIVED | 15 535
19.05.2014 18:48:27.00 | RECEIVED | þ G

19.05.2014 18:48:27.00 | RECEIVED | !î æ
19.05.2014 18:48:27.00 | RECEIVED | € ý q
19.05.2014 18:48:27.00 | RECEIVED | H ¸ 2
19.05.2014 18:48:27.00 | RECEIVED | { r
19.05.2014 18:48:27.00 | RECEIVED | € <
19.05.2014 18:48:27.00 | RECEIVED | {ñ8ê=¸3
19.05.2014 18:48:27.00 | RECEIVED |

19.05.2014 18:48:28.00 | RECEIVED | !'7

19.05.2014 18:48:28.00 | RECEIVED | !’ Ó
19.05.2014 18:48:28.00 | RECEIVED | J¾VD

19.05.2014 18:48:28.00 | RECEIVED | !'HI
19.05.2014 18:48:28.00 | RECEIVED | ê 9Œ .ò¥
19.05.2014 18:48:28.00 | RECEIVED | Á¬ … 2
19.05.2014 18:48:28.00 | RECEIVED | ÿÿMb

Hallo Gemeinde,

durch Hilfe aus dem PV Forum habe ich nun die zuordnung des Protokolls erhalten.Sie liegt in einer „Protokoll.xml“ vor.

5<?xml version=„1.0“ encoding=„UTF-8“?>
<Protokoll>
<BlockTyp>
<uChar>1</uChar>
<uShort>2</uShort>
<uInt>4</uInt>
<sInt>4</sInt>
<hex4>4</hex4>
<ASCII8>8</ASCII8>
<uFestkomma16.16>4</uFestkomma16.16>
<uFestkomma16.16Freq>4</uFestkomma16.16Freq>
<uFestkomma16.16.zehntel>4</uFestkomma16.16.zehntel>
<uFestkomma16.16.Scheitel>4</uFestkomma16.16.Scheitel>
<sChar>1</sChar>
<sShort>2</sShort>
<sFestkomma16.16>4</sFestkomma16.16>
<Bit32>4</Bit32>
</BlockTyp>
<Header>
<Startzeichen>0x21</Startzeichen>
<Stopzeichen>0x0D</Stopzeichen>
<Ausblendzeichen>0x40</Ausblendzeichen>
<AusblendStart>0x21</AusblendStart>
<AusblendStop>0x0D</AusblendStop>
<AusblendAusblend>0x40</AusblendAusblend>
</Header>
<Message Beschreibung=„Antwort OK“ Enabled=„0“>
<ID>10000</ID>
<AnzahlDaten>0</AnzahlDaten>
</Message>
<Message Beschreibung=„Antwort Fehler“ Enabled=„0“>
<ID>10001</ID>
<AnzahlDaten>2</AnzahlDaten>
<Block Eigenschaft=„Fehlercode“>uShort</Block>
</Message>
<Message Beschreibung=„Schreiben aktueller Betriebsdaten“ Enabled=„0“>
<ID>10002</ID>
<AnzahlDaten>32</AnzahlDaten>
<Block Eigenschaft=„U_AC_Dach:Amplitude AC-Spannung [V]“>uFestkomma16.16</Block>
<Block Eigenschaft=„I_AC_Dach:Amplitude AC-Strom [A]“>uFestkomma16.16.Scheitel</Block>
<Block Eigenschaft=„I_PV:Photovoltaikstrom [A] (Periodenmittel)“>uFestkomma16.16</Block>
<Block Eigenschaft=„U_PV:DC-Eingangsspannung [V]“>uFestkomma16.16</Block>
<Block Eigenschaft=„P_AC:Leistung AC-seitig gemessen [W]“>uFestkomma16.16</Block>
<Block Eigenschaft=„P_PV:Leistung DC-seitig gemessen [W]“>uFestkomma16.16</Block>
<Block Eigenschaft=„Betriebstemperatur [°C]“>uFestkomma16.16</Block>
<Block Eigenschaft=„DC-Anteil auf I_AC [mA]“>uFestkomma16.16.Scheitel</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Lesen aktueller Betriebsdaten“ Enabled=„1“>
<ID>1005</ID>
<AnzahlDaten>0</AnzahlDaten>
<AntwortID>10002</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Schreiben der aktuellen Ländereinstellungen“ Enabled=„1“>
<ID>1006</ID>
<AnzahlDaten>62</AnzahlDaten>
<Block Eigenschaft=„Nennspannung AC Effektivwert [V]“>uFestkomma16.16</Block>
<Block Eigenschaft=„Obere Abschaltspannung Effektivwert [V] (> Nennspannung)“>uFestkomma16.16</Block>
<Block Eigenschaft=„Abschaltzeit bei Überschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Kritische Überspannung Effektivwert [V] (> Nennspannung)“>uFestkomma16.16</Block>
<Block Eigenschaft=„Abschaltzeit bei Überschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Untere Abschaltspannung Effektivwert [V] (< Nennspannung)“>uFestkomma16.16</Block>
<Block Eigenschaft=„Abschaltzeit bei Unterschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Nennfrequenz [Hz] Normalerweise 50 Hz“>uFestkomma16.16</Block>
<Block Eigenschaft=„Untere Abschaltfrequenz [Hz] (< Nennfrequenz)“>uFestkomma16.16Freq</Block>
<Block Eigenschaft=„Abschaltzeit bei Unterschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Obere Abschaltfrequenz [Hz] (> Nennfrequenz)“>uFestkomma16.16Freq</Block>
<Block Eigenschaft=„Abschaltzeit bei Überschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Max. DC-Anteil Einspeisung [A]“>uFestkomma16.16</Block>
<Block Eigenschaft=„Abschaltzeit bei Überschreitung Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Abschaltzeit Inselerkennung [s]“>uShort</Block>
<Block Eigenschaft=„Wiedereinschaltzeit bei Fehlern < 3 s Dauer Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Wiedereinschaltzeit bei Fehlern > 3 s Dauer Anzahl Netzperioden“>uShort</Block>
<Block Eigenschaft=„Unterspannungsgrenze ATTiny: Min. Summe der 16 ADC-Werte einer Netzperiode“>uShort</Block>
<Block Eigenschaft=„Überspannungsgrenze ATTiny: Max. Summe der 16 ADC-Werte einer Netzperiode“>uShort</Block>
<Block Eigenschaft=„Überfrequenzgrenze ATTiny: Min. Zählerwert für die Messung der Netzperiode im ATTiny“>uShort</Block>
<Block Eigenschaft=„Unterfrequenzgrenze ATTiny: Max. Zählerwert für die Messung der Netzperiode im ATTiny“>uShort</Block>
<Block Eigenschaft=„Abschaltperioden UAC-Min ATTiny: Anzahl Netzperioden bis zum Abschalten des ATTinys wg. Unterspannung“>uChar</Block>
<Block Eigenschaft=„Abschaltperioden UAC-Max ATTiny: Anzahl Netzperioden bis zum Abschalten des ATTinys wg. Überspannung“>uChar</Block>
<Block Eigenschaft=„Abschaltperioden f-Max ATTiny: Anzahl Netzperioden bis zum Abschalten des ATTinys wg. Überfrequenz“>uChar</Block>
<Block Eigenschaft=„Abschaltperioden f-Min ATTiny: Anzahl Netzperioden bis zum Abschalten des ATTinys wg. Unterfrequenz“>uChar</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Lesen der aktuellen Ländereinstellungen“ Enabled=„1“>
<ID>1007</ID>
<AnzahlDaten>0</AnzahlDaten>
<AntwortID>1006</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<!–
<Message Beschreibung=„Schreiben der Geräteparameter“ Enabled=„0“>
<ID>10005</ID>
<AnzahlDaten>64</AnzahlDaten>
<Block Eigenschaft=„GeräteId: Eindeutige Kennung, 0…65535“>uInt</Block>
<Block Eigenschaft=„Typbezeichnung: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Adresse: Schüco-Adresse 0…32“>sInt</Block>
<Block Eigenschaft=„Ländercode: Ausgewählter Ländercode“>sInt</Block>
<Block Eigenschaft=„PrüfsummeCode: CRC des aktiven Codes“>uInt</Block>
<Block Eigenschaft=„Prüfsumme Kopie: CRC der Codekopie“>uInt</Block>
<Block Eigenschaft=„Bootcode: 0 … FIRST_BOOT, 1 … FABRIKATION, 2 … UPDATE, 3… FEHLER, 41120 … Normalzustand betriebsbereit“>uInt</Block>
<Block Eigenschaft=„AnzahlEinstellversuche: Anzahl Änderungen Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlFehlversuche: Gescheiterte Einstellversuche Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlBootvorgänge: Anzahl der Bootvorgänge“>uInt</Block>
<Block Eigenschaft=„AnzahlCodefehler: Anzahl Codewiederherstellungen“>sInt</Block>
<Block Eigenschaft=„Softwareversion: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Hardwareversion: ASCII-Zeichen“>ASCII8</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message> -->
<!-- Offset von 50000, um alte von neuer Nachricht zu unterscheiden -->
<Message Beschreibung=„Schreiben der Geräteparameter“ Enabled=„0“>
<ID>60005</ID>
<AnzahlDaten>64</AnzahlDaten>
<Block Eigenschaft=„GeräteId: Eindeutige Kennung, 0…65535“>uInt</Block>
<Block Eigenschaft=„Typbezeichnung: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Adresse: Schüco-Adresse 0…32“>sInt</Block>
<Block Eigenschaft=„Ländercode: Ausgewählter Ländercode“>sInt</Block>
<Block Eigenschaft=„PrüfsummeCode: CRC des aktiven Codes“>uInt</Block>
<Block Eigenschaft=„Prüfsumme Kopie: CRC der Codekopie“>uInt</Block>
<Block Eigenschaft=„Bootcode: 0 … FIRST_BOOT, 1 … FABRIKATION, 2 … UPDATE, 3… FEHLER, 41120 … Normalzustand betriebsbereit“>uInt</Block>
<Block Eigenschaft=„AnzahlEinstellversuche: Anzahl Änderungen Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlFehlversuche: Gescheiterte Einstellversuche Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlBootvorgänge: Anzahl der Bootvorgänge“>uInt</Block>
<Block Eigenschaft=„AnzahlCodefehler: Anzahl Codewiederherstellungen“>sInt</Block>
<Block Eigenschaft=„Softwareversion: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Hardwareversion: ASCII-Zeichen“>ASCII8</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<!-- Offset von 50000, um alte von neuer Nachricht zu unterscheiden -->
<Message Beschreibung=„Lesen der Geräteparameter“ Enabled=„1“>
<ID>51014</ID>
<AnzahlDaten>0</AnzahlDaten>
<AntwortID>60005</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Schreiben der Geräteparameter“ Enabled=„0“>
<ID>10005</ID>
<AnzahlDaten>68</AnzahlDaten>
<Block Eigenschaft=„Seriennummer: 01010 00001 … 31329 65535“>uInt</Block>
<Block Eigenschaft=„Typbezeichnung: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Adresse: Schüco-Adresse 0…32“>sInt</Block>
<Block Eigenschaft=„Ländercode: Ausgewählter Ländercode“>sInt</Block>
<Block Eigenschaft=„PrüfsummeCode: CRC des aktiven Codes“>uInt</Block>
<Block Eigenschaft=„Prüfsumme Kopie: CRC der Codekopie“>uInt</Block>
<Block Eigenschaft=„Bootcode: 0 … FIRST_BOOT, 1 … FABRIKATION, 2 … UPDATE, 3… FEHLER, 41120 … Normalzustand betriebsbereit“>uInt</Block>
<Block Eigenschaft=„AnzahlEinstellversuche: Anzahl Änderungen Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlFehlversuche: Gescheiterte Einstellversuche Ländercode“>uInt</Block>
<Block Eigenschaft=„AnzahlBootvorgänge: Anzahl der Bootvorgänge“>uInt</Block>
<Block Eigenschaft=„AnzahlCodefehler: Anzahl Codewiederherstellungen“>sInt</Block>
<Block Eigenschaft=„Softwareversion: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Hardwareversion: ASCII-Zeichen“>ASCII8</Block>
<Block Eigenschaft=„Maximalleistung“>uFestkomma16.16</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Lesen der Geräteparameter“ Enabled=„1“>
<ID>1014</ID>
<AnzahlDaten>0</AnzahlDaten>
<AntwortID>10005</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Schreiben der Schüco-Adresse“ Enabled=„1“>
<ID>1015</ID>
<AnzahlDaten>1</AnzahlDaten>
<Block Eigenschaft=„Schüco-Adresse: 1…32“>uChar</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Schreiben von Leistung und Ertrag“ Enabled=„0“>
<ID>10007</ID>
<AnzahlDaten>8</AnzahlDaten>
<Block Eigenschaft=„P_AC: AC-Leistung (gleitender Mittelwert)“>uFestkomma16.16</Block>
<Block Eigenschaft=„Ertrag: Geförderte Energie seit dem letzen Einschalten [KJ]“>uFestkomma16.16</Block>
<AntwortID>10000</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Lesen von Leistung und Ertrag“ Enabled=„1“>
<ID>1021</ID>
<AnzahlDaten>0</AnzahlDaten>
<AntwortID>10007</AntwortID>
<AntwortID>10001</AntwortID>
</Message>
<Message Beschreibung=„Schreiben des Betriebszustandes, des Fehler- und des Stoerstatus vom PV350W“ Enabled=„0“>
<ID>10003</ID>
<AnzahlDaten>12</AnzahlDaten>
<Block Eigenschaft=„Betriebszustand Bit0: STATE_READY: AC-seitig ist alles klar“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit1: STATE_ENOUGH_ENERGY: U-DC ist groß genug“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit2: STATE_MPP_INITIALIZED“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit3: STATE_POWER_LIMIT: Leistungsabsenkung wg. Übertemperatur“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit4: STATE_TRANSMIT“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit5: STATE_CALIBRATE: Kalibrierung läuft“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit6: STATE_STORE_SETUP: Schreibzugriff auf den Flashspeicher“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit7: STATE_ATTINY_OK: ATTiny meldet Betriebsbereitschaft“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit8: STATE_REGLER_GESPERRT: Einstellung Ländercode fehlt“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit9: STATE_ATTINY_PARAM_OK: ATTiny hat Länderparameter empfangen“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit10: STATE_STROMMANGEL“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit11: STATE_SYNC“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit12: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit13: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit14: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit15: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit16: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit17: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit18: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit19: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit20: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit21: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit22: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit23: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit24: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit25: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit26: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit27: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit28: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit29: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit30: obsolet“>Bit32</Block>
<Block Eigenschaft=„Betriebszustand Bit31: obsolet“>Bit32</Block>

  	&lt;Block Eigenschaft="Fehlerzustand Bit0: ERROR_TEMP_SENSOR:Temperatursensor arbeit nicht zuverlässig"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit1: ERROR_TEMP_HIGH: Übertemperatur"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit2: ERROR_IAC_CRITICAL: Überstrom AC-seitig"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit3: ERROR_UAC_HIGH: 110 % UNenn zu lange überschritten"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit4: ERROR_UAC_HIGH_CRITICAL: Überspannung AC"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit5: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit6: ERROR_UAC_LOW_CRITICAL: Unterspannung AC"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit7: ERROR_FREQUENCY_LOW: Netzfrequenz zu niedrig"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit8: ERROR_FREQUENCY_HIGH: Netzfrequenz zu hoch"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit9: ERROR_EEPROM_CRC: CRC-Fehler im Programmcode"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit10: ERROR_ATTINY_FREQ_LOW: ATTiny meldet zu niedrige Netzfrequenz"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit11: ERROR_ATTINY_FREQ_HIGH: ATTiny meldet zu hohe Netzfrequenz"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit12: ERROR_ATTINY_UAC_LOW: ATTiny meldet Unterspannung"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit13: ERROR_ATTINY_UAC_HIGH: ATTiny meldet Überspannung"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit14: ERROR_ATTINY_TIMEOUT: Keine Kommunikation zum ATTiny"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit15: ERROR_HOST_TIMEOUT: "&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit16: ERROR_U_PV_HIGH: U_PV zu hoch, evtl. Abschaltung durch Hardware"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit17: ERROR_SOFORTABSCHALTUNG: Einspeisung wurde wg. eines erkannten Fehlers unterbrochen"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit18: ERROR_INSELERKENNUNG: Abschaltung wg. Inselbetrieb"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit19: ERROR_RELAIS_ATTINY: Aufschaltrelais ATTiny defekt"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit20: ERROR_RELAIS_SAM7: Fehlfunktion Aufschaltrelais Sam7"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit21: ERROR_RELAIS_ATTINY: Fehlfunktion Aufschaltrelais ATTiny"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit22: ERROR_AC_NOTAUS: Abschaltung durch Spannungsspitze AC-Seite"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit23: ERROR_ATTINY_UNPLAUSIBEL: Diskrepanz Spannungsmeßwerte Sam7-ATTiny"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit24: ERROR_DC_LEISTUNG"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit25: ERROR_UAC_LOW"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit26: ERROR_NEUSTART_VERBOTEN"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit27: ERROR_SURGETEST"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit28: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit29: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit30: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Fehlerzustand Bit31: obsolet"&gt;Bit32&lt;/Block&gt;

  	&lt;Block Eigenschaft="Störzustand Bit0: DISTURB_PLL_LOW"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit1: DISTURB_ADC_CONVERSION"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit2: DISTURB_UDC_OVERFLOW"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit3: DISTURB_UDC_LOW: U-DC wird langsam kritisch gering"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit4: DISTURB_IAC_HIGH: Hoher AC-Strom"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit5: DISTURB_IAC_ZERO: AC-Strom ist null oder nahe null."&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit6: DISTURB_PI_HIGH"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit7: DISTURB_PI_LOW"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit8: DISTURB_ADC_LOW"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit9: DISTURB_FREQU_1: Frequenzwarnstufe 1 (unter 49,2 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit10: DISTURB_FREQU_2: Frequenzwarnstufe 2 (unter 48.8 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit11: DISTURB_FREQU_3: Frequenzwarnstufe 3 (unter 48.0 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit12: DISTURB_FREQU_4: Frequenzwarnstufe 4 (unter 47,5 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit13: DISTURB_FREQU_5: Frequenzwarnstufe 5 (über 50,3 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit14: DISTURB_FREQU_6: Frequenzwarnstufe 6 (über 51,0 Hz)"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit15: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit16: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit17: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit18: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit19: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit20: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit21: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit22: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit23: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit24: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit25: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit26: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit27: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit28: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit29: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit30: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;Block Eigenschaft="Störzustand Bit31: obsolet"&gt;Bit32&lt;/Block&gt;
  	&lt;AntwortID&gt;10000&lt;/AntwortID&gt;
  	&lt;AntwortID&gt;10001&lt;/AntwortID&gt;
  &lt;/Message&gt;
  &lt;Message  Beschreibung="Lesen des Betriebszustandes, des Fehler- und des Störstatus vom PV350W" Enabled="1"&gt;
  	&lt;ID&gt;1008&lt;/ID&gt;
  	&lt;AnzahlDaten&gt;0&lt;/AnzahlDaten&gt;
  	&lt;AntwortID&gt;10003&lt;/AntwortID&gt;
  	&lt;AntwortID&gt;10001&lt;/AntwortID&gt;
  &lt;/Message&gt;

</Protokoll>

Nun die Frage wie kann ich die empfangenen Daten aufbereiten? Mir würde es schon ausreichen die Betriebsdaten aus Block 10002 darstellen und speichern zu können.
Dazu habe ich an die Com Schnittstelle eine Register Variable gehangen. Die Register Variable erhält auch die Daten vom Port, sichtbar im Debug Fenster. Und nun wie weiter?? Die sache mit dem Speichern per Set_buffer hab ich nicht ganz verstanden :confused:

Grüße

Hallo ihr

Ich hab seit ca. 8 Monaten 4 Stück AEconversion Micro-Wechselrichter (INV350-60EU PLC) mit PLC Gateway (AEconversion · Entwicklung und Vertrieb vom Micro-Wechselrichter) erfolgreich in Betrieb.

Bereits seit 8 Monaten lese ich erfolgreich die Wechselrichter mittels KACO/(Schueco) Protokoll aus. Dieses Protokoll ist einfach und liefert AC-Leistung, AC-Spannung, AC-Strom, Tagesenergie, DC-Leistung, DC-Spannung, DC-Strom, WR-Temperatur und WR-Status in einem einfach lesbaren ASCII String.

Die letzten Tage hab ich mich ganz tief mit dem Bits und Bytes mit welchen die Original AESolar v1.6b Software mit den Wechselrichtern kommuniziert auseinandergesetzt und bin nach vielen, vielen Stunden Reverse Engineering jetzt so weit, das ich euch an den Ergebnissen teilhaben lassen kann! Bin mir nicht 100%-ig sicher, aber ich glaub das sollte das ‚APtronicProtokoll‘ sein mit welchem AESolar mit den WR kommuniziert.

Folgende Daten kann ich derzeit erfolgreich auslesen bzw. setzen:

[ul]
[li]Betriebsdaten
[/li][li]Leistung und Ertrag
[/li][li]Ländereinstellungen
[/li][li]Geräteparameter
[/li][li]Betriebszustand, Fehler- und des Störstatus
[/li][li]setzen der Leistungsreduzierung in % der Maximalleistung des WR
[/li][/ul]

Im Photovoltaikforum hab ich jetzt angefangen das Ganze genauer zu dokumentieren …

lg.
PreinfalkG