Ein einzelner MMC-Arm (MMCMultiCell, N=6 Halbbrueckenzellen, p_cellType="HB") in Reihe mit einer Arminduktivitaet an einer Spannungsquelle mit DC- und AC-Anteil (5000 V DC, 3000 V Amplitude bei 50 Hz). Die Parameter aller Elemente koennen geaendert werden. Dazu den #-Button an den Elementen druecken. Die Simulation kann fortgesetzt werden durch Druecken auf den „Start"-Button.
Die Regelung ist zweistufig kaskadiert. Der aeussere, langsame Kreis
(PI_vCavg) regelt die mittlere Zellspannung vCavg_pu
auf 1.0 p.u.; sein Ausgang wird additiv in den Sollstrom eingespeist
(p_iRef = 1*sin(2π·50·t) + PI_vCavg.ctrl). Der
innere, schnelle Kreis laeuft vollstaendig arm-intern im
MMCMultiCell-Block und bildet aus diesem Sollstrom die
diskrete Stellgroesse: die Ist-Zellanzahl n_ist
– also die Anzahl der Zellen, die aktuell tatsaechlich eingeschaltet
(zugeschaltet) sind. Ueberall im Folgenden, wo von n_ist
oder n_ff die Rede ist, ist damit konkret eine
Zellanzahl gemeint, kein abstrakter Regelparameter.
Die Stellgroesse n_ist (Ist-Zellanzahl) ist ganzzahlig
(0..N) – ein klassischer PI-Regler mit stetigem Stellsignal passt auf
eine derart grobkoernige Stellgroesse nicht.
Stattdessen vergleicht ein Schwellwertkontroller den Iststrom
i_pu direkt mit einer Schwelle iRefStatik: liegt
der Strom darueber, wird ein Level zugeschaltet, liegt er darunter, eines
abgeschaltet – im Grenzfall ein P-Regler mit Kp → ∞, also
ein reiner Relaisregler.
p_pre liefert die Vorsteuerungs-Zellanzahl
n_ff = round(p_pre·N) – die Anzahl Zellen, die laut
Vorsteuerung eigentlich eingeschaltet sein sollte, unabhaengig davon,
wie viele tatsaechlich (n_ist) gerade eingeschaltet sind.
Hier ist p_pre = V1001.emk / (N·vCNom), also die aus
der Quellspannung direkt geschaetzte, momentan benoetigte
Einfuegespannung, umgerechnet in eine Zellanzahl. Der
Schwellwertkontroller muss dadurch nur noch die Regelabweichung
zwischen Ist- und Soll-Zellanzahl um n_ff herum
ausgleichen (Korrekturband ±p_nCorrMax Zellen), statt die
Stellgroesse von Grund auf aufzubauen.
Ein Schwellwertvergleich ohne Gegenmassnahme wuerde bei so grobkoerniger
Stellgroesse (ein Zellflip aendert die Armspannung um vCNom) chattern:
jeder Flip erzeugt sofort einen Fehler in Gegenrichtung, der Regler
schaltet permanent. p_kStatik (hier 80e-3) verschiebt die
Vergleichsschwelle selbst um kStatik·(n_ist−n_ff)
– also proportional zur Differenz aus Ist-Zellanzahl und
Soll-Zellanzahl (Vorsteuerung) – analog zur Slope-Compensation bei
Peak-Current-Mode-Reglern – und zieht die Ist-Zellanzahl aktiv
Richtung Vorsteuerungs-Zellanzahl zurueck, ohne ein nichtlineares
Totband einzufuehren. Rueckfuehrgroesse ist bewusst die diskrete
Ist-Zellanzahl n_ist, nicht der Strom i
selbst oder ein gefilterter Strom (jedes Zeitglied in der
Regelstrecke kostet Phase).
p_iHyst (Default 0.15 p.u.) legt zusaetzlich ein Totband um
iRefStatik – fuer Faelle, in denen die Statik allein nicht
reicht (z.B. wenn gerade kein alternativer Zellkandidat fuer einen Flip
eligibel ist). Ein 21×21-Parameter-Sweep ueber kStatik×iHyst
zeigte kStatik=0.05/iHyst=0.15 als Bereich, in dem mittlere Schaltfrequenz
und RMS-Regelabweichung gemeinsam nahe ihrem Optimum liegen.
p_tSperr (hier 30 µs) begrenzt, wie oft der Arm
insgesamt schalten darf (Vergleichswert fsArmMax = 1/p_tSperr);
p_tSperrCell (hier 400 µs) erzwingt zusaetzlich eine
Mindestruhezeit pro Einzelzelle – thermisch begruendet, siehe die
fsTh-Plots. Ist gerade keine Zelle eligibel, wird ein faelliger Flip
verschoben, statt eine zu frueh wiederverwendete Zelle zu erzwingen.
Bei jedem Flip waehlt der Block aus dem eligiblen Zellpool diejenige Zelle, die am besten zur Spannungsbalance beitraegt: bei Richtungswechsel wird zuerst eine Zelle der Gegenpolaritaet in Bypass zurueckgefahren (die hoechste, wenn sie gerade laedt, sonst die niedrigste), danach wird aus dem Bypass-Pool aktiviert (die niedrigste bei Ladevorgang, die hoechste bei Entladevorgang). Dadurch bleiben die Einzelkondensatorspannungen (Plot „Einzelkondensatorspannungen") ohne separaten Balancing-Regler eng beieinander.