Modbus - negativen PowerFactor

Begonnen von Zwiebel, 07 Februar 2017, 12:32:51

Vorheriges Thema - Nächstes Thema

Zwiebel

Hallo

ich verwende die Modbusmodule schon länger und bin sehr zufrieden damit.
Aber bei einem von meine Zähler bekomme ich negative Werte.

Log Auszug:


2017-02-04_20:58:29 Spuelmaschine PowerFactor: -1.0
2017-02-04_20:58:29 Spuelmaschine CosPhi__grd: 0.0
2017-02-04_20:59:32 Spuelmaschine Power__W: -2013
2017-02-04_21:00:32 Spuelmaschine Energy_total__kVArh: 34.988
2017-02-04_21:00:33 Spuelmaschine Current__A: 8.78
2017-02-04_21:00:36 Spuelmaschine Energy_import__kWh: 0.000
2017-02-04_21:00:36 Spuelmaschine Energy_export__kWh: 13.989
2017-02-04_21:00:36 Spuelmaschine Energy_import__kVArh: 34.988
2017-02-04_21:00:36 Spuelmaschine Energy_export__kVArh: 0.000
2017-02-04_21:00:36 Spuelmaschine energyTotal: 0.000
2017-02-04_21:00:36 Spuelmaschine energyToday: 0
2017-02-04_21:00:36 Spuelmaschine costtoday: 0
2017-02-04_21:00:37 Spuelmaschine Voltage__V: 229.1
2017-02-04_21:00:37 Spuelmaschine Current__A: 8.74
2017-02-04_21:00:37 Spuelmaschine Power__W: -2024
2017-02-04_21:01:31 Spuelmaschine Power__W: -2009
2017-02-04_21:02:31 Spuelmaschine Energy_total__kWh: 14.053
2017-02-04_21:04:35 Spuelmaschine Frequency__Hz: 50.0
2017-02-04_21:04:35 Spuelmaschine Power__W: -1977
2017-02-04_21:05:30 Spuelmaschine Power__W: -1983
2017-02-04_21:05:31 Spuelmaschine Current__A: 8.67
2017-02-04_21:06:31 Spuelmaschine Power__W: -1962
2017-02-04_21:06:31 Spuelmaschine Energy_import__kWh: 0.000
2017-02-04_21:06:31 Spuelmaschine Energy_export__kWh: 14.186
2017-02-04_21:06:31 Spuelmaschine energyTotal: 0.000
2017-02-04_21:06:31 Spuelmaschine energyToday: 0
2017-02-04_21:06:31 Spuelmaschine costtoday: 0
2017-02-04_21:07:31 Spuelmaschine Power__W: -1914
2017-02-04_21:08:35 Spuelmaschine Power__W: -1897
2017-02-04_21:08:36 Spuelmaschine Energy_import__kVArh: 34.993


Technisch ist das "-" warscheinlich auch richtig, aber wenn ich ein Chart anzeigen lassen will schaut der nicht schön aus.
Wie kann ich verhindern das das "-" mit ins logfile geschrieben wird?

vielen dank Gruß
Zwiebel

rudolfkoenig

Entweder per readingsChange/userreadings/etc ein neues Reading basteln, was geloggt wird, oder vor der Anzeige das "-" wegoperieren (bei FileLog/SVG mit "Function").

Zwiebel

Hallo

ah an Funktion hab ich garnicht gedacht.
so schaut es besser aus:
abs($fld[3])

Vielleicht gibt es noch eine Möglichkeit am Strom Zähler oder am Modbus Modul etwas einzustellen.

vielen dank Gruß
Zwiebel

StefanStrobel

Hallo Zwiebel,

wie hast Du denn die Modbus-Abfragen definiert?
Für jeden Wert definiert man ja typischerweise die Register-Adressen und einen unpack-code, der regelt wie die Daten interpretiert werden müssen (als signed integer, unsigned integer, big endian / small endian etc.)
Ich könnte mir vorstellen, dass da etwas optimiert werden kann.
Zudem kann man auch für jedes Reading im Modbus-Modul noch Perl-Expressions für die Umwandlung hinterlegen.

Am besten schaust Du mal das Wiki zu ModbusAttr an. Da sind die relevanten obj- Attribute beschrieben.

Gruss
    Stefan

Zwiebel

Hallo Stefan,

ich hab im Forum hier das Modul 98_SDM220.pm gefunden und eingebunden. Das funktioniert mit meinem SDM120 ganz gut. 


         # Leistungsfaktor,      nur bei jedem 17. Zyklus:       10s --> 2min 50s
        "i30"   =>      {       # input register 0x001E
                                        # The power factor has its sign adjusted to indicate the nature of the load.
                                        # Positive for capacitive and negative for inductive
                                        name            => "Power factor",                      # internal name of this register in the hardware doc
                                        reading         => "PowerFactor",                       # name of the reading for this value
                                        format          => '%.1u',                                      # format string for sprintf
                                        #format         => '%.1f',                                      # format string for sprintf
                                        polldelay       => "x17",                                       # only poll this Value if last read is older than 17*Iteration, otherwiese getUpdate will skip it
                                },



Ich werde es jetzt mal mit "format          => '%.1u', " weiter laufen lassen...

vielen dank Gruß
Zwiebel