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
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
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?
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
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!
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?
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
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 .
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.