Forum: Mikrocontroller und Digitale Elektronik Raumzeigermodulation und PWM-Register


von Mike (Gast)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei mir die Funktionsweise der FOC und vor allem der 
Raumzeigermodulation zu Gemüte zu führen. Das meiste ist auch relativ 
klar. Es hakt aber leider bei der Zuordnung zu den 
PWM-/Compare-Registern.

Ich habe meine alpha- und beta-Komponenten, ich hab den Sektor bestimmt 
und ich hab die Einschaltzeiten der Grundvektoren, zwischen denen mein 
Referenzspannungszeiger liegt, errechnet.
So, wie die Amplitude der Teilspannungen auf meine 
Gesamt-(Zwischenkreis-)spannung bezogen ist, sind die Schaltzeiten der 
Grundvektoren ja auf meine PWM Periodendauer bezogen. Ist ok.
Aber wie mache ich jetzt die Zuordnung zu meinen drei 
PWM-Vergleichswerten?Ich hab grad leider irgendwie nen Brett vorm Kopf. 
Zwei errechnete Schaltzeiten, irgendwo soll noch der 0-Vektor rein und 
ich hab drei PWM-Register. Wie kommt das alles zusammen?

Ich würd mich freuen, wenn mir da einer ein bißchen auf die Sprünge 
helfen könnte!

VG,
Mike

von Martin (Gast)


Lesenswert?

Ich werd nicht so ganz schlau aus dem, was Du schreibst. Ausgehend von 
den d/q-Stromreglern drehst Du mit dem Rotorwinkel auf alpha, beta und 
dann per rück-Clarke auf U,V,W. Aber das hast Du ja verstanden. Die U, 
V, W skalierst Du halt um auf die PWM-Werte, wobei das einzig 
verbliebene Stück magic die zero sequence modulation oder midpoint shift 
des SVPWM ist. Hier ist es sehr schön beschrieben: 
http://microchip.wikidot.com/mct5001:start (der ZSM-Viewer funktioniert 
seit einer Weile nicht mehr).

- Martin

von Mike (Gast)


Lesenswert?

Hi Martin und vielen Dank für deine Antwort!

Entschuldige, falls ich mein Problem nicht verständlich genug 
beschrieben habe. Liegt vielleicht ein bißchen dadran, daß ich selbst 
nicht so recht weiß, wo mein Problem ist :P .

Aber ich glaube deine Antwort hat mir schon geholfen, sofern ich das 
richtig verstanden habe:
nachdem ich aus u_alpha und u_beta per Rücktransformation U_a, U_b und 
U_c (U-V-W, X-Y-Z, wie-auch-immer) gewonnen habe, stellen diese 
Spannungen bezogen auf die Zwischenkreisspannung auch meinen 
Compare-Wert bezogen auf meinen Timer-Maximalwert dar?
So hab ich die ganze Literatur, die ich bisher gewälzt habe, irgendwie 
icht verstanden :/ .

Ich versuche mein Problem nochmal verständlicher zu formulieren:
Angenommen ich hätte keine alpha-beta-Komponenten. Nur meinen 
Referenzspannungsvektor und den dazugehörigen Winkel. Dann ergeben sich 
daraus ja die Anteile an den entsprechenden Sektor angrenzenden 
Grundvektoren.
Beispielwerte: Sektor 2 (zwischen 60° und 120°), 0,1 * 60°-Vektor (011), 
0,6 * 120°-Vektor (010).
Wie ist jetzt der Zusammenhang zwischen der relativen Länge meiner 
beiden Grundvektoren und meinen drei PWM-Compare-Werten in Abhängigkeit 
vom Sektor?

von Martin (Gast)


Lesenswert?

Lies noch mal hier 
http://microchip.wikidot.com/mct5001:which-zsm-is-best
das Beispiel ab Gleichung (1) durch. Dort wird Deine Frage beantwortet.
Du musst bedenken, dass Du keine absoluten Spannungen stellst, da der 
Motor keinen Potentialbezug zu einer Masse hat, sondern nur an den drei 
Phasen hängt. Rechne das Beispiel durch, dann sollte es klar werden.
Konkret skalierst Du die U-V-W-Werte (Spannungen) mit einem Faktor, um 
auf Deinen PWM-Range zu kommen (z.B. 512), dann gibt es noch einen 
Offset (1). Natürlich in Wirklichkeit noch einen Bereichscheck und einen 
Maximalwert, wenn Du die Ströme in den lowside-Schaltern misst.
Um die Sektoren mussst Du Dich gar nicht kümmern. Das ist nur für die 
Modellierung von SVPWM nötig, Du stellst einfach die PWM-Einheit auf 
symmetrisches center-aligned PWM ein und gut ist.

- Martin

von Mike (Gast)


Lesenswert?

Ok, danke. Ich lese es mir durch und versuch es nochmal zu verstehen. 
Ich werde aber wiederkommen. Entweder, um zu verkünden, daß ich's 
geschnall habe oder um weiter zu jammern ;) .

Danke nochmal!

von Mike (Gast)


Lesenswert?

Martin schrieb:
> Lies noch mal hier
> http://microchip.wikidot.com/mct5001:which-zsm-is-best
> das Beispiel ab Gleichung (1) durch. Dort wird Deine Frage beantwortet.
> Du musst bedenken, dass Du keine absoluten Spannungen stellst, da der
> Motor keinen Potentialbezug zu einer Masse hat, sondern nur an den drei
> Phasen hängt. Rechne das Beispiel durch, dann sollte es klar werden.
> Konkret skalierst Du die U-V-W-Werte (Spannungen) mit einem Faktor, um
> auf Deinen PWM-Range zu kommen (z.B. 512), dann gibt es noch einen
> Offset (1).

Hi nochmal,

ok, ich glaub das hab ich auch verstanden. Das funktioniert aber nur, 
wenn ich durch Rücktransformation die drei Einzelspannungen hab.

@PWM: ist auf Center-aligned (symmetrisch) eingestellt.

Aber wie würde das in diesem von mir beschriebenen Fall gemacht werden:
Mike schrieb:
> Angenommen ich hätte keine alpha-beta-Komponenten. Nur meinen
> Referenzspannungsvektor und den dazugehörigen Winkel. Dann ergeben sich
> daraus ja die Anteile an den entsprechenden Sektor angrenzenden
> Grundvektoren.
> Beispielwerte: Sektor 2 (zwischen 60° und 120°), 0,1 * 60°-Vektor (011),
> 0,6 * 120°-Vektor (010).
> Wie ist jetzt der Zusammenhang zwischen der relativen Länge meiner
> beiden Grundvektoren und meinen drei PWM-Compare-Werten in Abhängigkeit
> vom Sektor?

In den ganzen Dokumenten, die ich durch habe, wird immer t1, t2 und t0 
ausgerechnet, womit die Einschaltdauern der Grundvektoren und des 
0-Vektors beschrieben werden. Natürlich kann ich jetzt die relative 
Einschaltdauer auf meine PWM-Periodendauer beziehen. ABER: mir ist 
leider immer noch nicht klar, wie diese Zeiten auf die einzelnen 
Brückenzweige/Compare-Register zu beziehen wären. Das muß doch irgendwie 
vom Sektor abhängig sein!
Ich kann ja wohl nicht sagen Compare-Wert_1 = t1, Compare-Wert_2 = t2 
und Compare-Wert_3 = t0. Dann würden sich ja meine Pulsmuster alle 60° 
wiederholen, wenn der Sektor da nicht mit reinspielen würde, oder?!
Wie funktioniert die Zuordnung von diesen drei Schaltzeiten zu den 
Brückenzweigen?

von Martin (Gast)


Lesenswert?

Also mal schauen, ob ich mich nicht selber verheddere...

Die beiden PI-Stromregler für D- und Q-Strom haben als Eingang einen 
Strom (den Regelfehler) und am Ausgang eine Spannung in V. Nehmen wir 
mal an, UD = 100 V und UQ = 0 V. Mit Phi = 0 ergibt die 
Park-Clarke-Rücktransformation Spannungen von V = 100 V, U = -50 V und W 
= - 50 V.

Nehmen wir an, die Busspannung sei 400 V und der PWM-Zähler würde bis 
400 zählen. Mit 20 kHz PWM (lahme IGBTs) würde der Zähler also mit 8 MHz 
zählen.
Wenn Du das U-Register auf 0 setzt, sind die lowside-IGBTs immer an und 
die Ausgangsspannung ist 0. Wenn das Register auf 400 steht, sind die 
highside-Schalter immer an und die Ausgangsspannung ist 400 V. Wenn das 
Register auf 200 steht, ist am Ausgang ein PWM mit 50% und Mittelwert 
200 V.

Legen wir die Mittelpunktsspannung (also der Sternpunkt des Motors) 
vorerst auf 200 V fest (also kein midpoint shift). Dann würdest Du am 
U-Anschluss der IGBT-Brücke 200 + 100 = 300 V sehen wollen und an V und 
W jeweils 200 - 50 = 150 V. In die U, V und W-Register würdest Du also 
300, 150 und 150 schreiben. Wenn Du Dir die resultierende Schaltsequenz 
anschaust, stellst Du fest, dass der Spannungsvektor, den der Motor 
sieht, genau den Sektorwerten entspricht, die Du wahrscheinlich 
berechnet hast.

Um den verfügbaren Spannungshub zu erhöhen, verschiebt man jetzt noch 
den Mittelpunkt, so dass die Phasenspannungen gleich viel Abstand nach 
oben und unten haben (Gleichung 1 wie oben). Also
Mitte = 200 V - (max(u,v,w) + min(u,v,w))/2 = 200 V - (100 V - 50 V)/2
= 200 V - 25 V = 175 V. Damit würde man ins U-PWM-Register 100+175 =275 
und in die V- und W-Register -50+175 = 125 laden.

Der Motor würde von U nach V und von U nach W jeweils 275 - 125 = 150 V 
sehen und von V nach W 0, was genau dem entspricht, was wir wollten.

Alles klar?

- Martin

von Mike (Gast)


Lesenswert?

Hi,

also vorweg: ich weiß wirklich wirklich zu schätzen, daß du dir so viel 
Mühe gibst, mir das beizubiegen. Das ist wirklich nett!
Darum hoffe ich, daß du nicht sauer wirst, weil du glauben könntest, daß 
ich mich absichtlich doof stelle :) .

Deine Beschreibung ist wirklich gut und nachvollziehbar. Sie bezieht 
sich aber leider immer noch nicht ganz auf meine eigentliche Frage.

Mike schrieb:
>> Wie ist jetzt der Zusammenhang zwischen der relativen Länge meiner
>> beiden Grundvektoren und meinen drei PWM-Compare-Werten in Abhängigkeit
>> vom Sektor?

Zum Beispiel hier:
http://cache.nxp.com/files/dsp/doc/app_note/AN3301.pdf
ab Seite 22.

Da wird es so gemacht, daß man mit den Grundvektorlängen (dort t_1 und 
t_2 genannt) die absoluten Schaltzeiten t1, t2 und t3 berechnet werden 
(Eqn. 46 - 48).
Es wird zwar auch eine inverse Clarke gemacht, aber nur, um dann per 
Fallunterscheidung auf den Sektor zu kommen (spart den arctan).
Mit den Schaltzeiten t1, t2, t3 und dem Sektor wird dann entschieden, 
welcher Wert in die PWM-Register geladen werden muß (Tabelle 4, Seite 
24). Und genau DEN Zusammenhang versteh ich nicht. Die Zuordnung der 
Schaltzeiten zu den PWM-Registern in Abhängigkeit vom Sektor. Genau das, 
was in der Tabelle 4, S. 24 dargestellt ist.

Kein Sorge... ich frag mich schon die ganze Zeit selbst, ob das denn 
wirklich so schwer sein kann XD .

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Dieses Kapitel scheint mir also übermässig kompliziert zu sein. Wozu 
diese Sektor-Rechnerei wirklich gut sein soll, ist mir nicht ganz klar. 
Im allgemeinen (SVM-) Fall mag das ja nötig sein, aber bei PWM (SVPWM) 
ergeben sich die Sektoren von alleine, wenn man die Spannungen richtig 
setzt.

Aber wenn Du die Zeiten und die dazugehörigen Vektoren hast, kannst Du 
doch die Kurvenformen aufmalen und die Registerwerte ablesen. Ich habe 
eine kleine Skizze gemacht:

Fall 1: Spannung = 0, also nur Nullvektoren. Um das Gleichgewicht im 
Kosmos zu wahren, verteilen wir die halbe halbe auf O000 und O111. 
PWM-Register a,b,c also 200 (PWM-Periode 400).

Fall 2: U60 während 50% der Zeit. Links dran 25% O000 und rechts 25% 
O111. Registerwerte a,b 300 und c 100.

Fall 3: U60 während 25% und U120 25% (Sektor II). Links und rechts 
Nullvektoren dran, also PWM a=200, b=300, c=100

So in etwa dürfte das Tabelle 4 machen. Wie genau das aber funktioniert 
ist mir grad zu mühsam zum herausfinden. Gehirnjogging macht Spass, aber 
man kann sich lohnendere Ziele aussuchen.

Warum man zuerst die Zeiten berechnen will und danach per 
Fallunterscheidungen die Zeiten dem PWM zuordnen soll, ist mir nicht 
klar. Das wird sicher funktionieren, aber wozu das Theater? Per inversem 
P/C die Spannungen berechnen, umskalieren auf PWM-Werte und fertig. Der 
zeitliche Ablauf über die Sektoren ergibt sich von alleine richtig.

von Mike (Gast)


Lesenswert?

Hi,

also erst nochmal vielen Dank, daß du dir nochmal die Mühe gemacht hast. 
Ich hab das Gefühl, daß du Recht hast und daß ich da gedanklich 
irgendwie falsch unterwegs war. Auf die Idee mir das einfach mal auf zu 
malen, bin ich irgendwie nicht gekommen. Wäre vielleicht mal gut gewesen 
;) .

Das mit der Rücktransformation, ohne sich dabei um Winkel und Sektoren 
kümmern zu müssen, ist wirklich eine charmant einfache Methode :) .

Ich bin aber leider immer wieder in der Literatur und auch in 
Beispielimplementationen darüber gestolpert, wie Leute es eben so 
gemacht haben, daß der absolute Winkel des Referenzspannungszeiger 
bestimmt wurde (arctan). Dann wußte man des Sektor, konnte dann mit der 
Amplitude Referenzspannungszeiger die Längen des benachbarten 
Grundvektoren errechnen und schließlich dann wieder per 
Fallunterscheidung die errechneten Zeiten auf die PWM-Register beziehen. 
Schön fand ich das auch nicht ;) . Zumal ich es ja auch nicht 
verstanden hatte :P (aufmalen?!).

Ich fand übrigens den Abschnitt in dem von dir verlinkten Wiki genial, 
wo aus dem Hexagon ein Würfel gemacht wird. Hat das ganze zwar nicht 
einfacher gemacht, aber es war ziemlich interessant!

Grüße und danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.