Forum: Mikrocontroller und Digitale Elektronik Frage betreffend FOC und RZ-PWM


von Tobias P. (hubertus)


Lesenswert?

Hallo,
Vielleicht habe ihr vor kurzem hier den Thread zur SVPWM-Ansteuerung 
eines BLDC gesehen.
Nun bin ich grade dabei, mich in die Theorie einzuarbeiten - sprich FOC 
und der ganze zugehörige Kram.
Dazu habe ich einige Fragen, bei welchen ihr mir hoffentlich 
weiterhelfen könnt.
Und zwar geht es um folgendes:

1. Man liest in diesem Zusammenhang immer wieder von der Clarke und der 
Park-Transformation.
Was bei diesen Transformationen jeweils gerechnet wird, weiss ich 
mittlerweile, allerdings verstehe ich nicht so ganz, was der Sinn davon 
ist. Wieso muss anhand zweier Phasenströme erst die Ströme Alpha und 
Beta Berechnen und wie kommt man auf diese Formeln:

ialpha = ia
ibeta = (ia + 2ib) / sqrt(3)

besonders der letzte Ausdruck würde mich interessieren. Ich nehme mal 
an, dass diese Rechnung einfach daher rührt, dass ia und ib als Vektoren 
angesehen werden, und anhand des Winkels zwischen diesen Vektoren ergibt 
sich ein bestimmter Umrechnungsfaktor. Richtig?

2. Aus diesen beiden Strömen ia und ib werden ja eben mittels Clark 
(oder Clarke?) die beiden Komponenten ialpha und ibeta berechnet. Wenn 
ich dies richtig verstanden habe, dann sind diese beiden Komponenten 
bezogen auf ein festes Koordinatensystem. Mittels der 
Park-Transformation werden dann aus ialpha und ibeta die beiden 
Komponenten d und q, welche im Prinzip dasselbe Aussagen wie ialpha und 
ibeta, aber auf ein Koordinatensystem bezogen sind, welches sich mit dem 
Rotor mit dreht. Ist das richtig so?
Und grade weil sich dieses Koordinatensystem mit dem Rotor dreht, 
erscheinen "aus Sicht des Rotors" die Komponenten d und q wie DC-Werte 
und können so "einfach" geregelt werden. Richtig?
Dabei repräsentiert die d-Komponente die Drehzahl des Motors, während q 
dem Moment entspricht. Ist das auch richtig so?

3. Jetzt kommt der grösste Stolperstein. Und zwar wurde bis jetzt mit 
dem Strömen gerechnet - aus ia und ib wurden ialpha und ibeta, und 
daraus wurden dann d und q, welches meiner Meinung nach eigentlich auch 
Ströme sind (oder besser gesagt: die Einheit dieser Grössen ist Ampere).
Wie komme ich denn jetzt auf die Spannungen? Um eine RZ-PWM zu machen, 
benötige ich ja Spannungen und nicht Ströme. Mal angenommen, ich lasse d 
und q jetzt durch meinen Regler. "hinten" am Regler kommt dann ja wieder 
irgend ein Wert raus, und anhand von diesem kann ich die RZ-PWM machen. 
Hier ist das beschrieben: 
http://ww1.microchip.com/downloads/en/AppNotes/ACIM%20Vector%20Control%2000908a.pdf 
Das Problem dabei: Bis Figur 3, Park Transformation, wird mit Strömen 
gerechnet. Dann wird geregelt, und als Eingangsgrössen für die inverse 
Park-Transformation tauchen dann plötzlich Spannungen auf! Und zwar vd 
und vq. Theta ist klar, ich gehe davon aus dass dies der Umlaufwinkel 
des Rotors ist. Aber woher kommen vd und vq?

4. Weiter. Ausgangsgrössen der inversen Park-Transformation sind die 
Grössen valpha und vbeta (auch hier: wieso sind aus den Strömen 
plötzlich Spannungen geworden?). Die werden mittels inverser Clark (oder 
Clarke) Transformation wieder in die 3 Phasen umgerechnet. Und hier ist, 
glaube ich, ein Fehler in der AppNote. Man betrachte Figur 5. Dort wird 
gesagt: va = valpha, vb = (vbeta + sqrt(3) * valpha) / 2. Für vc ist 
allerdings derselbe Ausdruck angegeben, wie für vb, und das ist meiner 
Meinung nach nicht richtig. Wie lautet vc in Wirklichkeit?

So, ich hoffe ihr könnt mir mit diesen Fragen ein bisschen weiter 
helfen. Es wäre auch ganz interessant, wenn ihr noch ein bisschen 
entsprechende Literatur empfehlen könntet, wo das ganze noch etwas mehr 
beschrieben ist.

Gruss Tobias

von bjojon (Gast)


Lesenswert?

Hallo,

Ialpha und Ibeta sind Raumzeiger - hier werden im Prinzip die drei 
Strangströme in einen zweidimensionalen (zeitabhängigen) Vektor 
überführt (geht, da Ia+Ib+Ic bekanntlich Null ist).

Hier findest Du eine kurze Erklärung zu RZ (inkl. Formelherleitung):
http://www.ruhr-uni-bochum.de/eaee/dokus/raumzeiger.pdf

Die Raumzeiger sind nun auf den Stator bezogen (Stator fest, Rotor 
dreht). Durch die Transformation mit der Drehzahl bekommst Du dann Iq 
und Id. Diese Größen sind dann auf den Rotor bezogen (Rotor fest, Stator 
dreht).

Ist schon lange her, aber soweit ich mich erinnere wird der Strom in ein 
Motormodell gespeist aus dem hinterher die notwendigen Spannungen raus 
kommen.

Nach der Regelung mußt du diese Größen natürlich wieder 
zurücktransformieren. Also wieder auf den festen Stator beziehen und in 
die Strangspannungen zurückführen.

von Tobias P. (hubertus)


Lesenswert?

Hi bjojon,
danke erstmal für den Link.
Von den Raumzeigern habe ich schon ein bisschen Ahnung, ich habe eine 
lauffähige Raumzeigermodulation bereits implementiert, und die 
funktioniert auch. Damals hatte ich allerdings "Constant Volts per 
Hertz", also eine Steuerung und keine Regelung. Ausserdem war das eher 
für DAMs, ich möchte es aber mit einem BLDC ausprobieren.
Anwendung habe ich dazu zwar grade keine, aber es wäre sicher lehrreich 
sowas mal gemacht zu haben ;-)

Geht denn diese FOC auch ohne Motormodell? In den wenigen Dokumenten, 
die ich dazu bereits gefunden habe, wird von diesem Modell nichts 
erwähnt.
Ich könnte mir vorstellen, dass man auch die Ströme zur Berechnung der 
Raumzeiger benutzen könnte, denn m.E. ist der Motor ja in erster Linie 
induktiv, sprich Strom und PWM sind zueinander proportional. Nicht?
Und anhand der Regelung pendelt sich das dann automatisch auf den 
"richtigen" Wert ein, so stelle ich mir das jedenfalls vor.

Gruss

von Alex R. (alexr)


Lesenswert?

Hi,
1.
nicht ganz richtig, aber für die Übersicht reichts.
2. falsch
Id = Idirekt, d. h. das resultierende magnetische Feld fließt in 
Richtung des Stators.
Iq = I quadratur (oder so) d.h. das Feld steht 90° zum Stator.
Nur durch Iq wird ein Drehmoment erzeugt. Id macht nur Verluste.

Also: bei der permanent-erregten Synchronmaschine regle auf Id=0.
Bei der Asynchronmaschine wirds etwas komplizierter (Schlupf und 
Vormagnetisierung)
 3 und 4 kommt noch...
Alex

von Tobias P. (hubertus)


Lesenswert?

Hi Alex,
hmm, in den gängigen AppNotes wird immer gesagt Id ~ flux und Iq ~ 
torque. Was sagt denn dieser flux aus bzw. wozu brauchts den?
Wenn es also so ist, dass Id nur Verluste erzeugt und daher 0 sein 
sollte - sehe ich das richtig, dass ich dann gar nicht die Drehzahl 
regeln kann, sondern nur das Moment? Und die Drehzahl ergibt sich dann 
automatisch aus dem Moment und der Last. Korrekt? Was, wenn ich jetzt 
aber eine konstante Drehzahl will? Kann ich dann FOC nicht benutzen?

Noch was zum Punkt 1.
Ich habe mir dazu mal eine Zeichnung gemacht mit diesen 3 Vektoren Ia, 
Ib, Ic. Ich nehme mal an, dass dieser Ausdruck 2/sqrt(3) daher kommt, 
dass sin 120° = 2/sqrt(3) ist? Da wird also eigentlich mit 
Winkelfunktionen herumgerechnet, sodass man die richtigen Beträgt 
bekommt, wenn man ia und ib auf die beiden Achsen alpha und beta 
projiziert. Ist meine Annahme richtig?

Hui, ich sehe schon: bei diesem Steuerverfahren wird ganz schön viel 
gerechnet. Das braucht wohl ordentlich Dampf, ich beginne langsam zu 
zweifeln dass das ohne DSP machbar ist.... Hast du da Erfahrung? Ich 
würde es auf einem ARM7 versuche, @ ca. 60 MHz.

Du sagst, dass nur Iq das Drehmoment bestimmt. Dann sind die 
Transformationen wohl einfach dazu da, das Feld immer so zu drehen, dass 
es in einem möglichst grossen Winkel < 90° zum Rotor steht, oder? Ideal 
wäre es dann wohl, wenn man den Winkel immer auf 90° halten könnte, dann 
wird, wenn meine Vorstellung korrekt ist, das Moment immer maximal sein.

Gruss

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.