Skip to content

Fix: Keine CP-Unterbrechung nach Phasenumschaltung - #3328

Merged
LKuemmel merged 2 commits into
openWB:masterfrom
s0170071:fix/no-cp-interruption-after-phase-switch
Aug 26, 2026
Merged

LKuemmel merged 2 commits into
openWB:masterfrom
s0170071:fix/no-cp-interruption-after-phase-switch

Conversation

@s0170071

Copy link
Copy Markdown
Contributor

Problem

Nach einer Phasenumschaltung erkennt initiate_control_pilot_interruption() den Uebergang von 0A auf den Sollstrom als neuen Ladestart und loest eine unnoetige CP-Unterbrechung aus. Das fuehrt dazu, dass der EVSE-Strom kurz gesetzt (z.B. 6,9A), sofort wieder auf 0A gestoppt und dann die CP-Leitung getoggled wird, bevor die Ladung tatsaechlich startet.

Auswirkung

Nach jeder Phasenumschaltung wird eine ueberfluessige Stopp/Start-Sequenz durchgefuehrt:

  • EVSE set_current 6,9A (Ladung startet kurz)
  • EVSE set_current 0A (sofort gestoppt)
  • CP-Signal ON (Unterbrechung)
  • CP-Signal OFF
  • EVSE set_current 6,9A (Ladung startet erneut)

Dies verzoegert den Ladestart um ca. 10s und erzeugt unnoetige EVSE-Toggles, die die Relay-Loop-Erkennung ausloesen koennen.

Ursache

In process_algorithm_results() wird nach dem Ende des phase_switch-Threads der Zustand auf WAIT_FOR_USING_PHASES gesetzt. Im selben Zyklus berechnet der Algorithmus einen Sollstrom (z.B. 6,9A). initiate_control_pilot_interruption() sieht current_prev=0, current=6,9 und interpretiert das als neuen Ladestart — obwohl der Uebergang von 0A auf Sollstrom nur durch die gerade abgeschlossene Phasenumschaltung bedingt ist.

Loesung

In initiate_control_pilot_interruption() wird der Zustand WAIT_FOR_USING_PHASES als Ausschluss-Kriterium geprueft. Wenn der Ladepunkt gerade aus einer Phasenumschaltung kommt, wird keine CP-Unterbrechung ausgeloest, da perform_phase_switch() die CP-Leitung bereits selbst umschaltet.

@LKuemmel
LKuemmel merged commit 0cd3de7 into openWB:master Aug 26, 2026
1 check passed
LKuemmel added a commit that referenced this pull request Oct 16, 2026
* Control-Pilot-Unterbrechung: state_prev statt state prüfen

initiate_control_pilot_interruption() schloss eine CP-Unterbrechung beim
Ladestart aus, sobald control_parameter.state == WAIT_FOR_USING_PHASES
war (#3328) - gedacht, um nach einer echten Phasenumschaltung keine
doppelte CP-Umschaltung auszulösen, da die Umschaltung selbst bereits CP
umschaltet. WAIT_FOR_USING_PHASES wird aber unconditional auch direkt
nach Ablauf der Einschaltverzögerung erreicht (counter.py,
switch_on_timer_expired(), unabhängig von einer Phasenumschaltung) - bei
Ladepunkten ohne Phasenumschalt-Hardware (auto_phase_switch_hw=False)
damit bei jedem PV-Ladestart, siehe Discussion #3908.

Neues state_prev-Feld (analog zu current_prev/charge_state_prev/
plug_state_prev) erlaubt die Unterscheidung: nur wenn der vorherige
Zyklus tatsächlich noch PERFORMING_PHASE_SWITCH war, hat die
Umschaltung selbst gerade erst CP umgeschaltet.

* CP-Unterbrechung: pending Phasenumschaltung ausschließen, state_prev in setdata.py behandeln

---------

Co-authored-by: LKuemmel <[email protected]>
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.

2 participants