NEWS
Modbus Finder 7M.38.8.400.0212 auslesen
-
@aherby die Umrechnerei der Register ist ja der Irrsinn, ich komm damit überhaupt nicht klar.
Hab zum Glück entdeckt, dass die Register ab 32480 als floating die Daten bereits ohne Umrechnen liefern. Damit komme ich klar. Nur leider werden da die energy counter nicht mit vier Nachkommastellen ausgegeben, das fehlt mir, denn dann sieht man schneller, dass Strom fliesst.
Hast du die Umrechnungen geschafft? Kannst du mir die vielleicht zukommen lassen, wäre toll?!
Ich hab den Finder hinter dem vom EVU-Zähler und der Finder zählt mehr als der ehz-Zähler vom EVU, nicht viel, aber erstaunlich. Kannst du das bestätigen? Vielleicht zählt auch der vom EVU weniger. -
@matis ja der Finder-Zähler muss ja hinterm EVU-Zähler sitzen. alles andere darf man nicht machen.
Bei den Registern muss ich schauen was ich wie nutzen.
Ja mein und hoffentlich jeder andere EVU-Zähler saldiert die Einspeisung.
Somit kannst du auf Phase 2 einspeisen und auf Phase 1 und z. B. Phase 3 es "abnehmen /verbrauchen".Mein EVU Zähler sagt ca. 157 kWh und Finder550 kWh
-
@matis werte doch die einzelnen Stromwerte aus
register 32517 bis 32521
-
@aherby Ich nehm schon auch den Strom, hätte aber gerne die Leistung auch mit 4 Stellen. Wie auch immer.
Der Finder saldiert auch, wenn du solche massiven Abweichungen hast liegt das an den Registern, wenn du die aus 30407 nimmst und nicht umrechnest, dann kommt abhängig vom Wert immer wieder Mist raus. Die flaoting sind korrekt: ab 32638 -
_address deviceId name description unit type len factor offset formula role room cw isScale 30464 3 Energie_Bezug Netz: Energie Bezug 1.8.0 kWh uint16be 1 0.0001 0 value false false 30466 3 Energie_Einspeisung Netz: Energie Einspeisung 2.8.0 kWh uint16be 1 0.0001 0 value false false 32500 3 Spannung_U1 Finder: U1 V floatsw 2 1 0 value false false 32502 3 Spannung_U2 Finder: U2 V floatsw 2 1 0 value false false 32504 3 Spannung_U3 Finder: U3 V floatsw 2 1 0 value false false 32516 3 Strom_I1 Finder: I1 A floatsw 2 1 0 value false false 32518 3 Strom_I2 Finder: I2 A floatsw 2 1 0 value false false 32520 3 Strom_I3 Finder: I3 A floatsw 2 1 0 value false false 32530 3 Wirkleistung_P1 Finder: Wirkleistung P1 W floatsw 2 1 0 value false false 32532 3 Wirkleistung_P2 Finder: Wirkleistung P2 W floatsw 2 1 0 value false false 32534 3 Wirkleistung_P3 Finder: Wirkleistung P3 W floatsw 2 1 0 value false false 32536 3 Gesamtwirkleistung Finder: Gesamtwirkleistung W floatsw 2 1 0 value false false 32538 3 Blindleistung_Q1 Finder: Blindleistung Q1 var floatsw 2 1 0 value false false 32540 3 Blindleistung_Q2 Finder: Blindleistung Q2 var floatsw 2 1 0 value false false 32542 3 Blindleistung_Q3 Finder: Blindleistung Q3 var floatsw 2 1 0 value false false 32544 3 Gesamtblindleistung Finder: Gesamtblindleistung var floatsw 2 1 0 value false false 32546 3 Scheinleistung_S1 Finder: Scheinleistung S1 VA floatsw 2 1 0 value false false 32548 3 Scheinleistung_S2 Finder: Scheinleistung S2 VA floatsw 2 1 0 value false false 32550 3 Scheinleistung_S3 Finder: Scheinleistung S3 VA floatsw 2 1 0 value false false 32552 3 Gesamtscheinleistung Finder: Gesamtscheinleistung VA floatsw 2 1 0 value false false 32554 3 Leistungsfaktor_PF1 Finder: Leistungsfaktor PF 1 cφ floatsw 2 1 0 value false false 32556 3 Leistungsfaktor_PF2 Finder: Leistungsfaktor PF 2 cφ floatsw 2 1 0 value false false 32558 3 Leistungsfaktor_PF3 Finder: Leistungsfaktor PF 3 cφ floatsw 2 1 0 value false false 32560 3 Gesamtleistungsfaktor Finder: Gesamtleistungsfaktor cφ floatsw 2 1 0 value false false 32584 3 Frequenz Finder: Frequenz Hz floatsw 2 1 0 value false false 32638 3 Energie_Bezug Finder: Netz Energie Bezug 1.8.0 kWh floatsw 2 0.001 0 value false false 32640 3 Energie_Einspeisung Finder: Netz Energie Einspeisung 2.8.0 kWh floatsw 2 0.001 0 value false false 32642 3 Blindenergie_Bezug Finder: Netz Blindenergie Bezug 3.8.0 kvarh floatsw 2 0.001 0 value false false 32644 3 Blindenergie_Einspeisung Finder: Netz Blindenergie Einspeisung 4.8.0 kvarh floatsw 2 0.001 0 value false false 32658 3 Temperatur Finder: Temperatur °C floatsw 2 1 0 value false false 32570 3 Phasenwinkel_U1_L1 Finder: Phasenwinkel zw. U1 und L1 ° floatsw 2 1 0 value false false 32572 3 Phasenwinkel_U2_L2 Finder: Phasenwinkel zw. U2 und L2 ° floatsw 2 1 0 value false false 32574 3 Phasenwinkel_U3_L3 Finder: Phasenwinkel zw. U3 und L3 ° floatsw 2 1 0 value false false
-
_address deviceId name description unit type len factor offset formula role room poll wp cw isScale 40054 3 Connection and Total Energy Calculation 0=Not set 1=Vector 2=Arithmetic 3=Vector-Aronschaltung uint16be 1 1 level true false false false 40151 3 Frequency nominal value Frequenz Hz uint16be 1 1 level true false false false 40157 3 Language / Sprache 0=English 1=Francais 2=Deutsch uint16be 1 1 level true false false false 40162 3 Zeit Zeit uint32le 2 1 0 value true false false false 40164 3 Datum Datum uint32le 2 1 0 value true false false false 40165 3 Jahr Jahr uint16be 1 1 0 value true false false false 40167 3 Automatische S/W-Zeit-Umschaltung 0=Nein, 1=Ja uint16be 1 1 level true false false false 40171 3 LCD-Konfiguration LCD: 0=OBIS 1=Buchstaben uint16be 1 1 0 value true false false false 40203 3 Modbus-Adresse Modbus-Adresse uint16be 1 1 level true false false false 40204 3 Baud Rate Baud rate: 4=19200 5=38400 uint16be 1 1 level true false false false 40205 3 Stop Bit 0 = 1 Stopp bit; 1 = 2 Stopp bits uint16be 1 1 level true false false false 40206 3 Parity 0 = No parity, 1 = Odd parity, 2 = Even parity uint16be 1 1 level true false false false 40207 3 Data Bits 0 = 8 Bit uint16be 1 1 level true false false false
-
@aherby Zeit und Datum konnte ich irgendwie umrechnen, war aber eher ein Versuch als sinnvoll, denn Datum und Zeit spielen überhaupt keine Rolle. Für die Energiewerte hab ich das bis jetzt noch nicht geschafft.
// Berechnen von Datum und Zeit des Finderzählers const outputTimeState = 'javascript.0.Finder.Zeit'; const outputDateState = 'javascript.0.Finder.Datum'; const modbusTimeState = 'modbus.4.holdingRegisters.3.40162_Zeit'; // Zeit (2 Register) const modbusDateState = 'modbus.4.holdingRegisters.3.40164_Datum'; // Datum (2 Register) const modbusJahrState = 'modbus.4.holdingRegisters.3.40165_Jahr'; // Jahr (2 Register) // States anlegen, falls sie noch nicht existieren createState(outputTimeState, "", { name: "Uhrzeit", type: "string", read: true, write: false }); createState(outputDateState, "", { name: "Datum", type: "string", read: true, write: false }); // Funktion zur Umwandlung von BCD in Dezimal function decodeBCD(value) { return ((value >> 4) * 10) + (value & 0x0F); } // Funktion zur Umwandlung der Modbus-Zeit function parseTime(registers) { if (!registers || registers.length !== 2) return 'Fehler'; let raw = (registers[1] << 16) | registers[0]; let hundredths = decodeBCD(raw & 0xFF); let seconds = decodeBCD((raw >> 8) & 0xFF); let minutes = decodeBCD((raw >> 16) & 0xFF); let hours = decodeBCD((raw >> 24) & 0xFF); return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}.${hundredths}`; } // Funktion zur Umwandlung des Modbus-Datums function parseDate(registers) { if (!registers || registers.length !== 2) return 'Fehler'; // 32-Bit-Wert zusammensetzen (unsigned 32-Bit) let raw = (registers[1] << 16) | registers[0]; // BCD-Dekodierung für Tag und Monat let day = decodeBCD(raw & 0xFF); let month = decodeBCD((raw >> 8) & 0xFF); // Jahr aus dem Modbus-Register 'Jahr' holen let year = getState(modbusJahrState).val; return `${day.toString().padStart(2, '0')}.${month.toString().padStart(2, '0')}.${year}`; } // Funktion zum Lesen und Umwandeln der Werte function readModbusTimeAndDate() { let timeRegisters = [ getState(modbusTimeState).val & 0xFFFF, (getState(modbusTimeState).val >> 16) & 0xFFFF ]; let dateRegisters = [ getState(modbusDateState).val & 0xFFFF, (getState(modbusDateState).val >> 16) & 0xFFFF ]; let timeString = parseTime(timeRegisters); let dateString = parseDate(dateRegisters); setState(outputTimeState, timeString, true); setState(outputDateState, dateString, true); } // Zeitgesteuertes Auslesen alle 5 Sekunden schedule("*/5 * * * * *", function () { readModbusTimeAndDate(); });
-
@aherby Ich weiß nicht, warum ich das vorher übersehen hatte, aber es gibt doch Register für Energie, mit Nachkommastellen ohne Umrechnen und sogar schnellem update:
30463 3 Energie_Bezug Finder: Netz Energie Bezug 1.8.0 kWh int32be 2 0.0001 0 value false false 30465 3 Energie_Einspeisung Finder: Netz Energie Einspeisung 2.8.0 kWh int32be 2 0.0001 0 value false false 30467 3 Blindenergie_Bezug Finder: Netz Blindenergie Bezug 3.8.0 kvarh int32be 2 0.0001 0 value false false 30469 3 Blindenergie_Einspeisung Finder: Netz Blindenergie Einspeisung 4.8.0 kvarh int32be 2 0.0001 0 value false false
-
@matis hey das mit dem Umrechnen verstehe ich gerade nicht.
Die Holdingregister sind zum einstellen. z. B. Datum, Sprache und Modbusadresse._address deviceId name description unit type len factor offset formula role room cw isScale 30407 33 Energy Counter n1 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) kWh uint32be 2 0.1 0 false false 30407 33 Bezugsenergie uint32be 2 0.1 0 false false 30409 33 Energy Counter n2 Wirkenergie +Q2 -Q3 (A.E.0 =2.8.0) kWh uint32be 2 0.1 0 false false 30409 33 Einspeiseenergie uint32be 2 0.1 0 false false 30411 33 Energy Counter n3 Blindenergie -Q1 +Q2 (r.I.0 = 3.8.0) kvarh uint32be 2 0.1 0 false false 30413 33 Energy Counter n4 Blindenergie-Q3 +Q4 (r.E.0 = 4.8.0) kvarh uint32be 2 0.1 0 false false 30416 33 Energy Counter 1 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) kWh uint16be 1 0.1 0 false false 30418 33 Energy Counter 2 Blindenergie -Q1 +Q2 (r.I.0 = 3.8.0) kvarh uint16be 1 0.1 0 false false 30420 33 Energy Counter 3 Scheinenergie (S.A.0 = 9.8.0) kVAh uint16be 1 0.1 0 false false 30422 33 Energy Counter 4 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) kWh uint16be 1 0.1 0 false false 30424 33 Energy Counter 5 Wirkenergie +Q2 -Q3 (A.E.0 =2.8.0) kWh uint16be 1 0.1 0 false false 30426 33 Energy Counter 6 Blindenergie-Q3 +Q4 (r.E.0 = 4.8.0) kvarh uint16be 1 0.1 0 false false 30428 33 Energy Counter 7 Scheinenergie (S.A.0 = 9.8.0) kVAh uint16be 1 0.1 0 false false 30430 33 Energy Counter 8 kWh uint16be 1 0.1 0 false false 30432 33 Energy Counter 9 uint16be 1 0.1 0 false false 30434 33 Energy Counter 10 uint16be 1 0.1 0 false false 30463 33 1000 x Energy Counter n1 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) Wh int32be 2 0.1 0 false false 30465 33 1000 x Energy Counter n2 Wirkenergie +Q2 -Q3 (A.E.0 =2.8.0)? Wh int32be 2 0.1 0 false false 30467 33 1000 x Energy Counter n3 Blindenergie -Q1 +Q2 (r.I.0 = 3.8.0) varh int32be 2 0.1 0 false false 30469 33 1000 x Energy Counter n4 Blindenergie-Q3 +Q4 (r.E.0 = 4.8.0) varh int32be 2 0.1 0 false false 30471 33 1000 x Energy Counter 1 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) Wh int32be 2 0.1 0 false false 32639 33 Float Energy Counter n1 Wirkenergie +Q1 -Q4 (A.I.0 = 1.8.0) [Float] Wh floatbe 2 1 0 false false 32641 33 Float Energy Counter n2 Wirkenergie +Q2 -Q3 (A.E.0 =2.8.0) [Float] Wh floatbe 2 1 0 false false 32643 33 Float Energy Counter n3 [Float] varh floatbe 2 1 0 false false 32645 33 Float Energy Counter n4 [Float] varh floatbe 2 1 0 false false 32659 33 Float Internal Temperature Gerätetemperatur [Float] °C floatbe 2 1 0 false false 32751 33 Float Aktiv Tariff floatbe 2 1 0 false false
ist es möglich, dass du im Register verrutscht bist?
Beispiele:
32638 bei dir und ich habe den Displaywert auf 32639.
32640 bei dir und ich habe den Displaywert auf 32641
...vielleicht habe ich irgendwas komiches bei der Einrichtung eingestellt oder verstellt.
Aber die Modbuswerte stimmen stimmen bei mir mit dem Display.
Die Bezeugleistung muss bei mir passen, da der Finderzähler später eingebaut ist gebenüber dem EVU-Zähler.
Bei der 2.8.0 oder Einspeisung zählt meiner zuviel. -
@aherby ja +1 bei den Registern ist richtig, nur 32639 ff. zeigt keine korrekten Wert und aktualisiert sehr langsam. Besser sind 30463 ff.