nD-enerserve Forums

Full Version: Falsche Spannungswerte nach Netztrennung
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hallo in die Runde,

mir ist aufgefallen, dass, nachdem man den SmartPi vom Strom nimmt (Stromversorgung über die Spannungsmessung) und wieder anschließt (per FI oder Automat im Schrank), die Spannung falsch gemessen wird (ca. 10 Volt zu hoch). Nachdem man den SmartPi per Kommandozeile rebootet, stimmen die Werte wieder. Das Verhalten ist reproduzierbar. Es passiert immer, wenn man dem SmartPi die Stromzufuhr kappt und (ob kurz danach oder mit Pause) anschließend wieder versorgt. Dies ist insbesondere bei Stromausfällen nervig, die man nicht mitbekommt. Ist das Verhalten erklärbar?

Gruß,
Daniel
Hallo Daniel,

das Verhalten ist noch nicht erklärbar.
Wir versuchen das mal zu reproduzieren.

Gruß Jens
Ich kann das Verhalten bestätigen. Ist bei mir auch so.
Ich kann das Verhalten für die Phasen 2 und 3 bestätigen. Die Phase 1 stimmt aber immer.
Auch von mir noch einmal die Bestätigung, dass die Werte abweichen.

Gibt es hierzu inzwischen neue Erkenntnisse?
Hallo Andi,

ja gibt es.
Bei der Netztrennung scheint der AD-Wandler ein Problem mit der I2C-Kommunikation zu bekommen. Daraufhin startet sich der readout-Prozess neu. Allerdings scheint der AD-Wandler in einem komischen Zustand zu sein und daher treten auf L2 und L3 diese Spannungen auf. Wir haben bei uns gerade eine neue Version im Test, die das Problem abstellt. Ich stelle die hier morgen mal zum Testen zur Verfügung.

Viele Grüße Jens
Hallo Jens,

ist der Fix auch schon im Github?

LG
Hallo Daniel,

noch nicht. Wir testen ja noch. Hier aber schon mal die Änderungen im Code:

Code:
func InitADE7878(c *Config) (*i2c.Device, error) {

    // **** Opening and closing the i2c fixes an error that incorrect values are displayed on pahse 2 and 3 when the program is restarted.

    d, erre := i2c.Open(&i2c.Devfs{Dev: c.I2CDevice}, ADE7878_ADDR)
    if erre != nil {
        panic(erre)
    }

    time.Sleep(time.Second)

    erre = d.Close()
    if erre != nil {
        panic(erre)
    }

    // **** END of fix

    d, err := i2c.Open(&i2c.Devfs{Dev: c.I2CDevice}, ADE7878_ADDR)
    if err != nil {
        panic(err)
    }

    // 0xEC01 (CONFIG2-REGISTER)
    // 00000010 --> I2C-Lock
    //err = d.Write(append(ADE7878REG["CONFIG2"], 0x02))

Im Anhang ist noch eine kompilierte Version zum Testen (Zip-Datei).

Viele Grüße Jens
Danke Jens, werde das testen. Wäre cool, wenn man so etwas im Branching-Modell auf Github irgendwie beziehen könnte.
Hallo Jens,

habe die Binary heute getestet, den SmartPi vom Netz genommen und wieder angesteckt. Leider immer noch falsche Spannungswerte.

Code:
pi@smartpi:~ $ ls -la /usr/local/bin/smartpireadout
-rwxr-xr-x 1 pi pi 9807443 Jun 23 21:25 /usr/local/bin/smartpireadout

pi@smartpi:~ $ /usr/local/bin/smartpireadout -v
2020.06.09-12:56:59


LG
Daniel
Pages: 1 2