Hallo nochmal, dein Code bildet ein 16 Bit Zweierkomplement bei 8 Bit Nutzdaten. Das kann natürlich nicht funktionieren.
Dürfen wir erfahren wo dieser PHP-Code herkommt? Grüße Frank Michael Kaufmann <kaufmann-mich...@outlook.com> schrieb am Do., 7. März 2019, 13:45: > Servus nochmal, > > > > habe den Fehler gefunden. Aber leider noch keine Lösung dafür J > > > > 2. Beispiel: Zähler zeigt 130 W Lieferung (A-), also -130W an: Im > empfangenen SML Protokoll wird aber +130W ausgegeben. Logdatei 130W > A-.log‘. > > > > > http://bildhost.unter-limit.de/archiv.php?bild=367&bild_name=130alog061K2.jpg > > > > 77 => 7x = Liste, x7 = Liste mit 7 Einträgen > > 070100100700FF => 07 = Länge in Bytes, 0100100700FF OBIS Kennzahl => > 16.7.0 = Gesamtwirkleistung > > 01 => Status: ohne Wert bzw. 01=optional > > 01 => ValTime: ohne Wert bzw. 01=optional > > 62 1B => 6x xx = unsigned Integer, x2 xx = Länge 2 Byte, xx 1B = > Unit: 1B = 27dez = Watt > > 52 00 => 5x xx = Integer, x2 xx = Länge 2 Byte, xx 00 = Scaler: > 0 à 10^0 = 1 > > 52 82 => Value: 5x xx = Integer, x2 xx = Länge 2 Byte, Value 82 > hex = 130 dez (entspricht +130 Watt) > > 01 => ValueSignature: ohne Werte bzw. 01=optional > > > > Man darf den Wert nicht einfach von hex auf dez umrechnen, sondern man > muss das 2er Komplement verwenden. > > > > 7 6 5 4 3 2 1 0 Bitwertigkeit > 1 0 0 0 0 0 1 0 (82hex in Binärdarstellung) > -128+0+0+0+0+0+2+0= -126 Watt > > > > Wie habt ihr das beim Volkszähler gelöst. Bei meinem Skript wird es > momentan so umgerechnet. > > > > case '5x': # Integer > > $temp = hexdec($this->read($LEN-1)); > > $this->debug('Value: ('.$temp.')'); > > if($temp>32768){ > > return $temp -= 65536; > > } > > else{ > > return $temp; > > } > > break; > > So einfach darf man es sich aber nicht machen. Ich kann leider nicht so > gut PHP programmieren. Habt ihr einen Vorschlag oder einen Tipp? > > > > Vielen Dank. > > > > Gruß > > Michael > > > > > > *Von:* Michael Kaufmann > *Gesendet:* Sonntag, 24. Februar 2019 15:41 > *An:* volkszaehler-users@demo.volkszaehler.org > *Betreff:* WG: Zählerwechsel (optische Schnittstelle) > > > > Hallo zusammen, > > > > ich habe gerade die Email an das bayerwerk geschickt, da die ich folgendes > Problem mit der übertragenen Leistung über die Info Schnittstelle habe. > > > > Habe ich irgendwo einen Denkfehler? Auch wenn das PHP Skript nicht von > volkszähler.org <http://xn--volkszhler-v5a.org> ist, der SML Datenstrom > ist doch das selbe. Interpretiere ich den SML Datenstrom falsch? > > > > Wenn ich über die PV Einspeise, sollte die Leistung negativ übertragen > werden. Wenn ich beziehe, wird die Leistung positiv übertragen. Im Prinzip > funktioniert dies schon, allerdings wird die Leistung positiv übertragen, > wenn sich die Leistung in einem Bereich von 0W bis ca. -135W. Ab -140W > (also A- Lieferung) wird auch -140W übertragen, bzw. ein Wert mit > Vorzeichen. 140W Toleranz kann doch auch nicht sein oder? > > > > Auszug aus der Email ans Bayernwerk: > > wie besprochen hier die verschiedenen Beispiele SML Log <-> tatsächliche > Anzeige der Leistung am Iskra MT691. Die Obis Kennzahlen 1.8.0 und 2.8.0 in > kWh werden korrekt übermittelt. Nur die übertragene Leistung macht > Probleme. > > Die Logdateien können z. B. mit Notepad++ geöffnet werden. Notepad++ > stellt die Zeilenumbrüche korrekt dar. > > > > Die SML Protokollbeschreibung ist zu finden unter > https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtgebundene_LMN-Schnittstelle_Teilb.pdf?__blob=publicationFile&v=2. > Die Methode „GetListResponse“ ist auf Seite 36 beschrieben. > > > > *Übersicht:* > > 1. Beispiel, fehlerhaft. Zähler zeigt 90W Lieferung (A-) an: Im > empfangenen SML Protokoll wird aber +164W ausgegeben. Logdatei 90W A-.log‘. > > 2. Beispiel, fehlerhaft. Zähler zeigt 130 W Lieferung (A-), also -130W > an: Im empfangenen SML Protokoll wird aber +130W ausgegeben. Logdatei 130W > A-.log‘. > > 3. Beispiel, okay. Zähler zeigt 140 W Lieferung (A-), also -140W an: Im > empfangenen SML Protokoll wird -140 ausgegeben. Logdatei 140W A-.log‘. > > 4. Beispiel, okay. Zähler zeigt 28W Bezug (A+), also +28 W an: Im > empfangenen SML Protokoll wird auch 28W ausgegeben. Logdatei 30 W A+.log‘. > > > > *Fazit: Zähler überträgt bis ca. -130W Lieferung positive Werte. Ab ca. > -140W Lieferung, werden die korrekten Werte übertragen. Positive Leistung > (A+) wird aber auch im niedrigerem Leistungsbereich <100W korrekt > übertragen. Siehe dazu Beispiel 4. * > > > > 1. Beispiel: Zähler zeigt 90W Lieferung (A-) an: Im empfangenen SML > Protokoll wird aber +164W ausgegeben. Logdatei 90W A-.log‘. > > > > > http://bildhost.unter-limit.de/archiv.php?bild=366&bild_name=90alogI6SFT.jpg > > > > 77 => 7x = Liste, x7 = Liste mit 7 Einträgen > > 070100100700FF => 07 = Länge in Bytes, 0100100700FF OBIS Kennzahl => > 16.7.0 = Gesamtwirkleistung > > 01 => Status: ohne Wert bzw. 01=optional > > 01 => ValTime: ohne Wert bzw. 01=optional > > 62 1B => 6x xx = unsigned Integer, x2 xx = Länge 2 Byte, xx 1B = > Unit: 1B = 27dez = Watt > > 52 00 => 5x xx = Integer, x2 xx = Länge 2 Byte, xx 00 = Scaler: > 0 à 10^0 = 1 > > 52 A4 => Value: 5x xx = Integer, x2 xx = Länge 2 Byte, Value A4 > hex = 164 dez (entspricht +164 Watt) > > 01 => ValueSignature: ohne Werte bzw. 01=optional > > > > Obwohl der Zähler 90W Lieferung (A-) anzeigt, wird über das SML Protokoll > +164 Watt vom Zähler geschickt. > > > > http://bildhost.unter-limit.de/archiv.php?bild=361&bild_name=90wa10X6A.jpg > > > > > > 2. Beispiel: Zähler zeigt 130 W Lieferung (A-), also -130W an: Im > empfangenen SML Protokoll wird aber +130W ausgegeben. Logdatei 130W > A-.log‘. > > > > > http://bildhost.unter-limit.de/archiv.php?bild=367&bild_name=130alog061K2.jpg > > > > 77 => 7x = Liste, x7 = Liste mit 7 Einträgen > > 070100100700FF => 07 = Länge in Bytes, 0100100700FF OBIS Kennzahl => > 16.7.0 = Gesamtwirkleistung > > 01 => Status: ohne Wert bzw. 01=optional > > 01 => ValTime: ohne Wert bzw. 01=optional > > 62 1B => 6x xx = unsigned Integer, x2 xx = Länge 2 Byte, xx 1B = > Unit: 1B = 27dez = Watt > > 52 00 => 5x xx = Integer, x2 xx = Länge 2 Byte, xx 00 = Scaler: > 0 à 10^0 = 1 > > 52 82 => Value: 5x xx = Integer, x2 xx = Länge 2 Byte, Value 84 > hex = 130 dez (entspricht +130 Watt) > > 01 => ValueSignature: ohne Werte bzw. 01=optional > > > > http://bildhost.unter-limit.de/archiv.php?bild=362&bild_name=130waEBVR7.jpg > > > > > > 3. Beispiel: Zähler zeigt 140 W Lieferung (A-), also -140W an: Im > empfangenen SML Protokoll wird -140 ausgegeben. Logdatei 140W A-.log‘. > > > > > http://bildhost.unter-limit.de/archiv.php?bild=368&bild_name=140alogBYTTI.jpg > > > > 77 => 7x = Liste, x7 = Liste mit 7 Einträgen > > 070100100700FF => 07 = Länge in Bytes, 0100100700FF OBIS Kennzahl => > 16.7.0 = Gesamtwirkleistung > > 01 => Status: ohne Wert bzw. 01=optional > > 01 => ValTime: ohne Wert bzw. 01=optional > > 62 1B => 6x xx = unsigned Integer, x2 xx = Länge 2 Byte, xx 1B = > Unit: 1B = 27dez = Watt > > 52 00 => 5x xx = Integer, x2 xx = Länge 2 Byte, xx 00 = Scaler: > 0 à 10^0 = 1 > > 53 FF 74 => Value: 5x xx xx = Integer, x3 xx xx = Länge 3 Byte, > Value FF 74 hex = 65396 dez (16bit entsprechen 65536, 65396 – 65536 = -140 > Watt) > > 01 => ValueSignature: ohne Werte bzw. 01=optional > > > > http://bildhost.unter-limit.de/archiv.php?bild=363&bild_name=140waLS9OG.jpg > > > > > > 4. Beispiel: Zähler zeigt 28W Bezug (A+), also +28 W an: Im empfangenen > SML Protokoll wird auch 28W ausgegeben. Logdatei 30 W A+.log‘. > > > > > http://bildhost.unter-limit.de/archiv.php?bild=365&bild_name=30alogSA09T.jpg > > > > 77 => 7x = Liste, x7 = Liste mit 7 Einträgen > > 070100100700FF => 07 = Länge in Bytes, 0100100700FF OBIS Kennzahl => > 16.7.0 = Gesamtwirkleistung > > 01 => Status: ohne Wert bzw. 01=optional > > 01 => ValTime: ohne Wert bzw. 01=optional > > 62 1B => 6x xx = unsigned Integer, x2 xx = Länge 2 Byte, xx 1B = > Unit: 1B = 27dez = Watt > > 52 00 => 5x xx = Integer, x2 xx = Länge 2 Byte, xx 00 = Scaler: > 0 à 10^0 = 1 > > 52 1C => Value: 5x xx = Integer, x2 xx xx = Länge 2 Byte, Value > 1C hex = 28 dez (entspricht +28 Watt) > > 01 => ValueSignature: ohne Werte bzw. 01=optional > > > > http://bildhost.unter-limit.de/archiv.php?bild=364&bild_name=30waHMPKM.jpg > > > > > > >