S0 (Ferraris 75U/kWh) rechnet falsche Leistung

  • Hallo allerseits!
    Ich habe einen Raspi-Clone ( Odroid C2 ) https://www.hardkernel.com/mai….php?g_code=G145457216438 unter Ubuntu 18.04.1 LTS laufen und vor kurzem VZLOGGER und Middleware/Frontend installiert. An einem GPIO habe ich einen optischen Sensor angeschlossen, der meinen alten Ferraris-Stromzähler (75 U/kWh) abtastet.
    Alle paar Stunden fielen mir dann sporadische Spikes bis über 20kW im Diagramm des Webends auf.
    Der optische Sensor könnte der Grund sein, also habe ich einen Timer (Ne555) aufgebaut, der alle ca. 128s einen Impuls von ca. 8s abgibt (realistische Zeiten für den Zähler). Damit ist schon mal Kontaktprellen, unsichere Detektion des Sensors etc. ausgeschlossen.
    Rechnerisch würden sich aus den 75U/kWh und der 128s Periode eine Leistung von ca. 375W ergeben - oder?


    Im Webend bekomme ich aber ca. 550W angezeigt.


    Das scheint wohl der Odroid nicht richtig zu ticken... Ich habe schon den Meson- und den Arch-Timer des Odroid C2 getestet - beide mit gleichem Ergebnis.


    Könnte dies an der Timerkonfiguration des VZLOGGERs liegen?
    Aus dem Source-Code MeterS0.cpp sehe ich, dass Clock_realtime verwendet wird - im Kommentar steht noch, dass clock_monotonic besser wäre, aber keine Begründung.
    Was meint Ihr, bin ich auf der richtigen Spur?
    Wie kann ich clock_monotonic testen und würde das Sinn machen?


    Die Spikes sind übrigens auch mit dem NE555-Timer da - ich vermute, dass Interrupt-Prios des Odroids der Grund sind.
    8s H-Pegel am GPIO sind halt schon lang.


    Was bedeutet gpio_dir? Laut Source ist das wohl nicht die Einstellung, ob Steigende oder Fallende Flanke des S0 Signals.
    Dies wird aber im Wiki behauptet? Jedenfalls haben verschiedene Einstellung keine Wirkung auf die Spikes.


    Vielen Dank für Eure Hilfe und die Volkszähler-Software!
    Thomas

  • Also ich kann mir nicht vorstellen, dass so eine krasse Abweichung (375 W vs 550 W) am Timer liegt. Das wäre ja voll daneben. Ist deine vzlogger.conf in Ordnung? Stell die hier doch einfach mal ein.


    Ansonsten könntest du das ja in der Datenbank checken (url/phpmyadmin). Geh dort auf die Daten (data) und schau dir die Timestamps der einzelnen Einträge an. Die müssten sich ja dann um jeweils 128000 ms unterscheiden.


    Was gpio_dir ist, ist mir auch nicht ganz klar. Ich hab das so verstanden, dass es einen zweiten Pin gibt, der die Richtung definiert. Die richtige Einstellung ist jedenfalls -1. Ich habe mir auch den Quellcode des S0-Meters angeschaut, und der prüft nur auf steigende Flanken. Ein Signal zählt nur dann, wenn es nach "debounce_delay" ms noch high ist. Das Software-Debouncing funktioniert also nur, wenn du positive Impulse hast! Mein Sensor hatte zunächst low-Impulse produziert, und da habe ich das Problem mit den gelegentlichen Spikes nicht in den Griff gekriegt. Seit ich das Signal invertiert und eine passende debounce_delay eingestellt habe (30 ms), funktioniert alles einwandfrei.

    "1.21 Gigawatt - Tom Edison, wie erzeugt man soviel Strom? Das ist unmöglich! Unmöglich!"

  • Hallo Monsmusik, danke für deine Antwort!
    Inzwischen habe ich den Odroid neu aufgesetzt. Ich habe auch eine RTC installiert, die die Systemuhr immer wieder schön richtig gestellt hat. Ohne diese ging die Uhr gnadenlos falsch.... Nach der Neuinstallation tickt der Odroid wieder richtig und auch die Leistungsrechnung ist jetzt korrekt. Keine Ahnung, was ich in der ersten Installation verbogen habe...


    Zu den Spikes:
    Super Idee, das werde ich bald testen.
    Ich habe jetzt einen Test laufen, in dem die Impulslänge ca. 500ms statt 8s ist....


    Grüße
    Thomas

  • Hallo Monsmusik,
    das kürzen der Impulslänge hats nicht wirklich gebracht..
    Inzwischen habe ich auch mehrere Posts über Spikes gelesen: Da ist wohl auch die Middelware schuld dran...


    Mit invertiertem Signal bekomme ich allerdings nur Mist erfasst. Egal, ob mit "Impulse" und "Impulse_neg" Einstellung.
    Ich werde mal die Signalpegel checken...
    Wie hast du den Vzlogger konfiguriert?


    Grüße
    Thomas

  • Hallo allerseits!
    Die Spikes sind weg!
    Durch Sammeln per AGGTIME (60s) und AGGMODE SUM sind sie verschwunden.
    Ich habe einen Odroid C2 im Einsatz, deshalb nicht über die Gpio-Nr. wundern!
    Mein IR-Sensor am 75U/kWh-Zähler mit positiven Impulsen hängt direkt daran.


    Grüße
    Thomas


    Meine vzlogger.conf:


  • Zitat von astromeier

    Was bedeutet gpio_dir? Laut Source ist das wohl nicht die Einstellung, ob Steigende oder Fallende Flanke des S0 Signals.
    Dies wird aber im Wiki behauptet?


    Im Wiki steht am Ende der Zeile ein Fragezeichen. Da von "behaupten" zu sprechen find ich etwas harsch.


    Zitat von Monsmusik

    Was gpio_dir ist, ist mir auch nicht ganz klar. Ich hab das so verstanden, dass es einen zweiten Pin gibt, der die Richtung definiert.


    So in etwa, genau weiß ich das aber auch nicht weil der Entwickler der das implementierte nie richtig erklärt hat.


    Zitat von astromeier

    Die Spikes sind weg!
    Durch Sammeln per AGGTIME (60s) und AGGMODE SUM sind sie verschwunden.


    Wir sind am Rpi auch schon paar mal über konkurrierende Interrupts gestolpert. Da tritt das Problem dann auf weil bei Zugriff auf die SD-Karte alle weiteren IRQ gesperrt werden.
    Umgehen kann man das indem man den Loglevel runter stellt oder das Logfile auf eine Ramdisk schreibt.



    mfg JAU

    No Shift - No Service