forked from helgeerbe/OpenDTU-OnBattery
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
110526b
commit faa15f3
Showing
1 changed file
with
16 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
faa15f3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
ich hoffe, es ist ok wenn ich meine Gedanken zu den Anpassungen hier äußere :), auch wenn es (ich vermute) Work In Progress ist? :D
Kann es sein, dass die Abschaltung so nicht mehr funktioniert, wie gedacht?
der
PowerLimiterClass::shutdown()
ruft am Ende dencommitPowerLimit
auf. damit setzte er bisher, da dercommitPowerLimit
mehrere Befehle in die Warteschlange schickte, sowohl das Limit auf das untere Leistungslimit, als auch den Wechselrichter in den "stopp".Mit der Umstellung auf "1 Befehl pro Durchlauf", die ich gut finde, würde das so aktuell nicht mehr funktionieren.
eventuell ist das aber gar nicht wichtig, wenn wir beim Starten sicherstellen, dass vor dem starten das untere Leistungslimit als Limit gesetzt ist. oder?
ein weiterer Punkt der mir auffällt, wo ich mir aber nicht sicher bin wie es sich im Einsatz verhalten wird:
if (diff > hysteresis)
setzt immer einen neues Limit und verlässt anschließend die Funktion. Wenn man nun einen schwankenden Verbrauch hat, würde er ggf. mehrmals in Folge nur das Limit anpassen, aber nie starten.Meine Idee und Reihenfolge der Umsetzung wäre:
diff > hysteresis
wahr ist, dann passe das aktuelle Limit an.Wie siehst du das?
Gruß
faa15f3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich seh das so, dass ich es zwar spannend finde, dass du dich für meine Arbeit interessierst, aber das ist wirklich nur ein "oh, ich committe das schnell, weil ich was anderes tun muss", und ich hab noch nicht einmal sichergestellt, dass es wenigstens kompiliert. Es war auch insbesondere mitten in einem Gedankengang.
Das stimmt nicht, wegen
Wenn der Inverter gestartet werden soll, dann wird das lower power limit gesetzt. Egal wie der Verbrauch schwankt.
Ich versuche seit gestern Abend ein neues Konzept einzuführen. Erwähnt hatte ich es schon: In die loop eingreifen. Ideal wäre es, wenn diese Funktion (lokal heißt sie seit gestern Abend anders) versprechen würde, dass sie sich darum kümmert, dass die zuvor angeforderten Zustände tatsächlich erreicht werden und entsprechend Rückmeldung gibt. Diese Funktion wird dann mehr oder weniger als erstes aufgerufen in der DPL loop, und solange die sagt "ich brauch noch einen Aufruf, der Inverter ist noch nicht so eingestellt wie vorhin gefordert" passiert im DPL nichts außer dass im nächsten loop wieder diese Funktion aufgerufen wird.
Da stecke ich jetzt mitten drin. Das größte Problem ist zu entscheiden, ob ein Limit wie gewünscht gesetzt wurde, oder noch nicht. Das hat damit zu tun, dass die Hoymiles lib nur relative Limits speichert, die auch noch berechnet sind wenn man zuvor absolute Limits angefordert hat. Da gibt es also mindestens Rundungsfehler zu berücksichtigen. Vermutlich werde ich jedes absolute Limit in ein relatives umrechnen und dann prüfen, ob das relative Limit genau wie gefordert zurückgemeldet wird vom Inverter.
faa15f3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh, das habe ich wohl tatsächlich (ebenfalls) übersehen .... du hast natürlich Recht :)
kann man relative Limits als Float übergeben? zumindest in der Weboberfläche geht es nicht. sowohl "45,1" als auch "45.1" werden als "45" übergeben.
bei absoluten 271W hingegen werden nach dem Übertragen 45.1% bzw. 270.6W angezeigt (bei meinem HM-600)
![grafik](https://private-user-images.githubusercontent.com/50098985/308970058-e9ee6e0d-139c-4bdf-b573-b58e5b5c13e7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA4NDQ5NjAsIm5iZiI6MTcyMDg0NDY2MCwicGF0aCI6Ii81MDA5ODk4NS8zMDg5NzAwNTgtZTllZTZlMGQtMTM5Yy00YmRmLWI1NzMtYjU4ZTViNWMxM2U3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEzVDA0MjQyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlNjc2MGVlNjg5ZDljMDE5NjMwM2YzYTQwYWQ5YmRmOGE1Y2U2ZDVkMjlhMjE5ZWQ1NzZlODU4ZTU3M2U3ZTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.ZO6yZZ99GfQ4V-eumiio3w_NDPP_Vkye2he9OjARSYo)
2 Nachkommastellen scheint es nicht zu geben. 271W wären sonst 45.16666.
faa15f3
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI: Mein HM-1500 beispielsweise erhält zwar von der Hoymiles Lib einen Wert in Promille, aber er rundet dann selbstständig (scheinbar immer nach unten) auf ganze Prozent. Das meldet er dann auch so in Promille. Jedenfalls sagt der Code der Hoymiles Lib das. Wer weiß, wie sich die anderen Inverter so verhalten... In helgeerbe#708 habe ich implementiert, dass wir annehmen, dass ein Limit Command, das erfolgreich war und nach einem Update-Zyklus verschickt wurde, jenes vom DPL war und dass das Limit dann auch übernommen wurde.