Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

first poc for power set via mqtt #109

Closed
wants to merge 3 commits into from
Closed

Conversation

aschiffler
Copy link
Contributor

No description provided.

@aschiffler
Copy link
Contributor Author

Der Ansatz ist, dass sich die Applikation auf eine topic subscribed z.B. "home/system_name/wr_id/powerset" und immer wenn dort eine Nachricht abgesetzt wird z.B. "400" im entsprechenden Inverter die Leistung entsprechend limitiert wird. Es wird dann ein Packet gesendet entsprechend der Funktion "UsartNrf3_Send_PackDevControl" (siehe auch: https://www.mikrocontroller.net/topic/525778#7134280

@fila612
Copy link
Contributor

fila612 commented Jul 21, 2022

rein interessehalber: was würde passieren wenn ich z.b. bei einem HM-600 das neue Limit auf 700 setzen würde?
ich hätte jetzt vermutet das HM-600, HM-700 und HM-800 ggf. technisch baugleich sind und nur durch ein HerstellerLimit begrenzt sind. Würde man dies damit auch anpassen können?

@aschiffler
Copy link
Contributor Author

Vermutung: Die Firmware der Umrichter hat die Leistungsgrenzen hinterlegt. Die Ansteuerung via "Funk" ist nur eine Schnittstelle und die Firmware prüft gegen die Version des Umrichters. Also es wird wohl nicht mehr Leistung "rauskommen".

@stefan123t
Copy link
Collaborator

@aschiffler danke für die Implementierung des PowerLimit aus den Erfahrungen der UsartNrf3_Send_PackDevControl() Methode.

Ich habe ein paar Bemerkungen in den Code Review gepackt, vor allem:

  • What about users not wanting to set the PowerLimit.
  • Can we set it from the Setup UI ?
  • Will it be possible to reset it to unlimited ?

@lumapu
Copy link
Owner

lumapu commented Jul 25, 2022

wie ist der pull Request zu sehen, soll ich ihn mergen? Habe leider aktuell wenig Zeit mich näher mit der Thematik auseinanderzusetzen.

@aschiffler
Copy link
Contributor Author

Hi,

ich werde den Request schließen. Es war wohl eine etwas überstürtze Aktion meinerseits. Ich wollte damit einen dokumentierten Sartpunkt setzen wie ein Seting bzw. eine Eingabe an die Umrichter in der Architektur verankert werden könnte. Ich bin hier weiter dran das umzusetzten auch unter Berücksichtigung der gelisteten Punkte von @stefan123t
Aktuell funktioniert das für meinen Anwendungsfall gut. Es gibt jedoch auch aus meiner Sicht noch ein paar offene Punkte:

  • Einstellung des Leistungsfaktors (PFSet) ist offensichtlich nur möglich sinnvoll wenn eine gewisse mindest DC Leistung zur Verfügung steht in meinem Fall (HM1500) sind das ca. 200W. Das ist aus elektrotechnischer Sicht klar.
  • Die Antwortzeit der Limitierungsregelung ist im Fall unlimitiert nach z.B. 400W deutlich länger als wenn man von eingeschwungener Limitierung z.B. 400 W auf 600 W erhöht.
  • Der wechselrichter scheint das Limit nicht persistent zu handhaben. Wenn keine DC-Leistung zur Verfügung steht (= Nachts) ist am nächsten morgen die Limitierung wieder auf "unbegrenzt".

@aschiffler aschiffler closed this Jul 26, 2022
@stefan123t
Copy link
Collaborator

@aschiffler Danke für den Hinweis dass die Limitierung nach einem Hard-Reset (über Nacht) wieder auf unlimited steht. Das war mW bisher von @DanielR92 und @De-Ichirou noch nicht beobachtet worden. Wir hatten nur den Soft-Reset per Device Control Command versucht.

@stefan123t
Copy link
Collaborator

@aschiffler für das MQTT Topic kannst Du vielleicht auch mal sehen wie die anderen das in #111 für die Ablage des Last Will Testament (LWT) umsetzen. Sollte mE ja unterhalb der WR Struktur sein.

@DanielR92
Copy link
Collaborator

Das werde ich heute mal testen, zur Not 24H mal im Leerlauf probieren.
Funktionen wie limitierung, Power On/Off/Reset gehen ja auch mittlerweile schon.

Die Sache mit PF ist mir auch aufgefallen, das muss ich mir nochmal genauer anschauen.

Bin heute gegen 16Uhr dann aktiv dran. =)

@homeautomation2022
Copy link

@aschiffler Vielen Dank erst mal für das Implementieren der Power Limit Funktion!
Ich nutze sie mit einem HM-800 seit 2 Tagen, macht soweit, was sie soll, allerdings macht der HM nicht was man denken würde, ich habe zwischen Kanal 1 und 2 unterschiedliche Leistungen und Ströme, ist das bei dir auch so(natürlich nur mit Batterie)? Die Differenz ist so groß, dass der Sollwert(Limit) nicht erreicht wird.
Wie lange muss der HM Spannungslos sein damit er das Limit vergisst? Ich habe DC und AC von der Batterie getrennt und DC kurzgeschlossen, danach wieder alles eingeschaltet, wenn der keine Pufferbatterie hat, sollte er das doch eigentlich vergessen - ist bei mir nicht so.

@aschiffler
Copy link
Contributor Author

@homeautomation2022
Also bei mir ist der Wechselrichter 24/7 am AC Netz. Ich habe festgestellt bzw. so beobachte ich es, dass er das Limit auf unbegrenzt zurücksetzt wenn am WR über Nacht längere Zeit keine Spannung am DC Eingang anliegt. (HM1500)

Hinsichtlich der Regelung ist es m.E. so, dass der wir mittels dem implementieren Befehl nur den Wirkleistungssollwert sezten. Der Leistungsfaktor hat -- per Default -- den Sollwert 1. Das Bedeutet -- so meine Beobachtung am Leisungsmessgerät -- dass die Regelung / Wirkleistungs-Limitierung nur dann den Sollwert ereicht wenn auch die zweite Regelsollgröße (PF) im "Zielkoridor" ist. Sprich man muss innerhalb des WR genug Scheinleistung haben damit der Hochsetzsteller funktioniert. Bei mir (HM1500) funktioniert eine Wirkleistungslimitierung mit PF_soll=1 nur wenn eine Gesamt DC-Leistung von > 200 W anliegt.
Also um die Regelung im WR bzw. die Funktion der Limitierung zu beurteilen ist es notwendig mind. die Blindleistung, PF oder cosphi zu messen.

@stefan123t
Copy link
Collaborator

@homeautomation2022 dass die beiden Eingänge des Wechselrichters gemeinsame + und - Potentiale haben durch den Anschluß der Batterie wird nicht jedem sofort klar. M.E. führt das zu einem Regelungsproblem das zwangsläufig (stochastisch) auseinander laufen muss.

@homeautomation2022
Copy link

homeautomation2022 commented Jul 31, 2022

Habe ja inzwischen (wie im Discord geschrieben) zumindest das Problem umgangen, wenn auch immer noch nicht richtig, in dem ich exakt gleich lange Plus und Minus Kabel verwende, jetzt ist der Massestrom, in dem auch der intern Messshunt sitzt auf beiden Seiten fast annähernd gleich, allerdings der Plus Strom nicht, das bekomme ich nicht hin, es ist eine Differenz von ca. 4A zwischen Kanal 1 und 2(desto mehr Leistung, umso geringer die Differenz! bei 3A kommt z.B. alles über nur einen Plus-Anschluss, bei 9A kommt immerhin 7A vom anderen Plus-Anschluss), aber er muss die intern verbinden im Betrieb! Ich habe ja auch beobachten können wie er die zyklisch für 45s verbindet und dann 15s lang trennt, wenn man nur eine Masse anschließt und beide Plus an eine Quelle und den Strom jeweils einzeln misst. Sinn dahinter ist noch unbekannt, eigentlich sollten beide Kanäle komplett unabhängig voneinander arbeiten. Die Massen sind intern permanent verbunden, kann man auch messen im abgeklemmten Zustand. Die Stelle konnte ich aber anhand der Platinen Fotos nicht eindeutig finden.

@aschiffler Danke auch für die Info, dass deiner ebenfalls das Limit vergisst, wenn die Elkos entladen sind. Es scheint hier wohl Unterschiede zu geben.
Achso und teste das mal bitte mit 0x81 statt 0x80 CMD, das ist/war in deinem Code falsch, mit etwas Glück entscheidet das zwischen temporär und remanent???

@@ -166,6 +166,28 @@ class HmRadio {
return mTxChLst[mTxChIdx];
}*/

void sendControlPacket(uint64_t invId, uint16_t data) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function name is not that optimal. We will have more ControlPackages in the future (ON/OFF/RESET/RESTART). This name should be dedicated for power limiting. In my fork i implemented already a function call for these: https://github.com/a-marcel/ahoy/blob/main/tools/esp8266/hmRadio.h#L221

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@a-marcel Thanks for the input. My intention was /is to be as close to the implementation as it is done on the original DTU. There is that kind of function call but of course, extended with the parameter 'subcmd' aka: on/off/reset/activepowercontro/reactivepowercontrol/powerfactor which all use the same main cmd "devcontrol"
But as stated before this merge request is closed due to missing code quality / functionality

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants