selfbus / software-arm-incubation

Selfbus software projects in development, for ARM microcontrollers
GNU General Public License v3.0
11 stars 14 forks source link

RM-bcu1: Summierung der RM-Werte immer Null nach Busspannungsausfall #13

Open Doumanix opened 5 years ago

Doumanix commented 5 years ago

Wie im Forum und in https://github.com/selfbus/software-arm-incubation/issues/12 von clown angesprochen: die Werte wie Anzahl Alarme, Anzahl Testalarme, etc. werden auf 0 gesetzt, wenn man den Rauchmelder vom Sockel abzieht oder die Busspannung vom RM- Modul trennt.

Nach Stefan Sveriges und oldcoolmans Ausführungen würde ich das aktuell als Feature (enhancement) einstufen, welches man durchaus mit dem ARM umsetzen könnte.

clown-m commented 5 years ago

Die Werte bleiben so lange erhalten wie die Busspannung anliegt, ein Trennen vom Sockel (Melder power off) hat keinen Einfluß. Busspannung weg = Werte weg !

StefanSverige commented 5 years ago

Also wie genau das auf dem ARM aussieht kann ich nicht sagen, die Software habe ich nicht portiert.

Beim LPC ist es so das der RM abgefragt wird, zyklisch und wenn man einen Wert vom Bus anfragt. Die Werte landen im Controller. Wenn der RM nicht mehr antwortet sind die letzten Werte noch im Controller. Ist die Busspannung weg, sind auch die Werte im Controller RAM futsch und müssen erst vom RM abgefragt werden.

Also kein Bug sondern so gewollt. Gibt es einen Usecase warum das geändert werden müsste?

/Stefan

Am 08.06.2019 um 17:38 schrieb clown-m:

Die Werte bleiben so lange erhalten wie die Busspannung anliegt, ein Trennen vom Sockel (Melder power off) hat keinen Einfluß. Busspannung weg = Werte weg !

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/selfbus/software-arm-incubation/issues/13?email_source=notifications&email_token=ABTC7FVLRZSOMRUVSLRPKM3PZPHADA5CNFSM4HWHOFO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXHW5KY#issuecomment-500133547, or mute the thread https://github.com/notifications/unsubscribe-auth/ABTC7FTUFZMGGSCLUMQX4FDPZPHADANCNFSM4HWHOFOQ.

Doumanix commented 5 years ago

Hi Stefan, danke für die Info! Der entscheidende Punkt ist, dass in der Lpc Version dann irgendwann doch der Summenwert vom RM kommt und auch auf den bis gegeben wird. Das scheint nach Michaels Aussage aktuell in der ARM Version noch nicht so zu sein. Da beginnt immer alles komplett von vorne. Ich habs aber selbst nicht analysieren können bis jetzt.

StefanSverige commented 5 years ago

Hi,

welchen Summenwert meinst du?

/Stefan

Am 15.06.2019 um 18:03 schrieb Doumanix:

Hi Stefan, danke für die Info! Der entscheidende Punkt ist, dass in der Lpc Version quick irgendwann doch der Summenwert vom RM kommt und auch auf den bis gegeben wird. Das scheint nach Michaels Aussage aktuell in der ARM Version noch nicht so zu sein. Da beginnt immer alles komplett von vorne. Ich habs aber selbst nicht analysieren können bis jetzt.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/selfbus/software-arm-incubation/issues/13?email_source=notifications&email_token=ABTC7FR4BNPVPGGYOMYADLTP2UHE7A5CNFSM4HWHOFO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXY27NA#issuecomment-502378420, or mute the thread https://github.com/notifications/unsubscribe-auth/ABTC7FT6LRET54KXWA2QFDTP2UHE7ANCNFSM4HWHOFOQ.

olterion commented 4 years ago

Hier habe ich etwas zu dem Fehler geschrieben und (hoffentlich) behoben: https://selfbus.org/forum/viewtopic.php?p=4736#p4736

Bitte testen!

Olli

dallmair commented 1 year ago

Wie im RocketChat besprochen sind die Werte in der Rauchmelder-MCU flüchtig: sobald der Melder von der Bodenplatte genommen wird UND keine Stützspannung vom RM-Modul mehr anliegt, werden die Werte zurückgesetzt.

Drei Use Cases sollten unterstützt werden:

  1. Wenn man das RM-Modul neu startet, z.B. nach einer Programmierung aus der ETS, wird weitergezählt.
  2. Wenn man einen Melder mal runterbaut, z.B. um zu weißeln, dann werden die Werte gespeichert und nach Wiederinbetriebnahme wird weitergezählt statt die Werte zurückzusetzen und bei 0 zu beginnen.
  3. Wenn man nach 10 Jahren den Melder tauscht und das Modul in den neuen Melder umbaut, dann werden die Werte zurückgesetzt.

Zur Implementierung dieser Erweiterung muss man sich die Seriennummer des Rauchmelders speichern und für jeden zu merkenden Zähler zwei Werte wegspeichern, ich nenne sie hier mal lastBaseValue und lastValue, dazu noch zwei weitere Werte im RAM halten, baseValue und currentValue. Die Umsetzung besteht dann aus folgenden Teilen:

  1. Nach dem Start des RM-Moduls werden nach Ablauf des Startup Delays alle Werte aus dem Melder abgerufen. Dann wird verglichen, ob die Seriennummer mit der gespeicherten Seriennummer übereinstimmt.
    1. Nein => Modul in neuen Melder umgebaut und daher baseValue = 0.
    2. Ja => Zwei Möglichkeiten: Nur das RM-Modul wurde neu gestartet (z.B. nach Programmierung aus der ETS) oder der ganze Melder wurde neu gestartet. Zur Unterscheidung dieser beiden Fälle vergleicht man die vom Melder gelieferte Betriebszeit mit der gespeicherten lastValue-Betriebszeit.
      • Gemeldet > gespeichert => Melder ist weitergelaufen, nur das RM-Modul wurde neu gestartet und daher baseValue = lastBaseValue.
      • Sonst => Melder wurde neu gestartet und daher baseValue = lastBaseValue + lastValue.
  2. Beim Schreiben der Werte in die jeweiligen Gruppenobjekte wird nicht nur der vom Melder gelieferte currentValue geschrieben, sondern baseValue + currentValue.
  3. Bei Busspannungsabfall: wegspeichern von baseValue und currentValue als lastBaseValue und lastValue.

~Solange wir keine Busspannungserkennung in der Lib haben, könnte man Punkt 3 alternativ implementieren, indem man die Werte wegschreibt wenn der Melder von der Bodenplatte genommen wurde.~

Darthyson commented 1 year ago
  1. Beim Brownout: wegspeichern...

Ins eeprom speichern dauert 104-110ms. Die Brown-Out-Detection kommt dafür zu spät. Da kommt man um Busspannungserkennung nicht drumrum.

Werte wegschreibt wenn der Melder von der Bodenplatte genommen wurde.

Geht leider so nicht, der Bodenplattenkontakt ist nach erstmaliger Betätigung ein ODER für Batteriespannung vorhanden oder 12V Betriebsspannung vorhanden. Löst also nicht mehr aus, wenn die Busspannung vorhanden ist und man den Rauchmelder von der Bodenplatte abnimmt.

dallmair commented 1 year ago

Danke für das Feedback, habe ich in den obigen Kommentar eingearbeitet.