Hi,
Ich versuche bei einem PMSM Motor die Induktivitäten Ld und Lq zu
messen. Dazu appliziere ich ein konstantes Vd und lasse den
Spannungszeiger mit 1kHz drehen.
Dies führt zu einem Sinusförmigen Stromverlauf, wobei mir der
Stromzeiger Id um etwa 85° nacheilt, aufgrund der Induktivität. Nun
filtere ich das Stromsignal mit einem Lock-In Verstärker bei 1kHz und
bekomme die Amplitude und die Phase des Stromsignals Id. Das scheint
soweit sehr gut zu funktionieren.
Nun habe ich aber festgestellt, dass die Amplitude von Id nicht von der
Amplitude von Vd abhängig ist, sondern direkt von der Eingangsspannung.
Kommt dies vom Inverter, der ja nur die Eingangsspannung anlegen kann
oder GND? Weiter sehe ich noch nicht ganz, wie ich die Induktivität aus
dem Stromsignal und dem Eingangssignal Vd berechnen kann. Ich habe also
den Realteil und den Imaginärteil meines Stromes Id und ich suche:
Somit kann ich eigentlich folgendes machen:
Dann sollte ich doch Ld einfach wie oben berechnen können, aber bei V_d
scheint anders zu sein, bzw. den Einfluss auf die Ampltiude. Wie muss
ich da die Eingangsspannung mit einbeziehen?
Id sollte von Vd abhängen, bist du dir sicher dass dein Vd über die PWM
auch in einen Spannungszeiger mit entsprechenden Pulsweiten bei der
jeweiligen Eingangsspannung darstellt und du nicht einfach die
Pulsweiten falsch geberechnest?
Bert S. schrieb:> Nun habe ich aber festgestellt, dass die Amplitude von Id nicht von der> Amplitude von Vd abhängig ist, sondern direkt von der Eingangsspannung.
Den Satz verstehe ich nicht.
Was genau ist Vd und was deine "Eingangsspannung"
oben schribst du "konstant".
Bert S. schrieb:> Dazu appliziere ich ein konstantes Vd
Ist das die Vorbereitung oder Nachbereitung eines Praktikumsversuchs?
Dann häng alle Infos rein.
Alex E. schrieb:> Id sollte von Vd abhängen, bist du dir sicher dass dein Vd über die PWM> auch in einen Spannungszeiger mit entsprechenden Pulsweiten bei der> jeweiligen Eingangsspannung darstellt und du nicht einfach die> Pulsweiten falsch geberechnest?
Das einzige was ich mache ist Vd und Vq (Reglerausgang) direkt mit der
Injektion zu überschreiben, dass sollte also schon passen. FOC
funktioniert ja ansonsten perfekt mit dieser Implementation.
Udo S. schrieb:> Den Satz verstehe ich nicht.> Was genau ist Vd und was deine "Eingangsspannung"
Vd ist die Direct Spannungsamplitude bei FOC. Mit dieser Amplitude wird
der Id (Feld erzeugende) Strom normalerweise geregelt, wobei für die
Induktionsmessung eine hochfrequentes Signal direkt appliziert wird, was
beim Strom Id zu einer Phasenverschiebung kommt, woraus man dann die
Induktivität berechnen kann.
Die Eingangsspannung wird bei FOC gewandelt (wie ein Buck Converter) und
alle Signale entsprechend skaliert. Von daher ist der applizierte Strom
am Ende Spannungsunabhängig, jedoch habe ich irgendwie bei der
Induktivitätsberechnung die Eingangsspannung drin und ich weiß noch
nicht wieso.
Das die FOC läuft heißt im Messebetrieb gar nichts. Die PI Regler machen
das schon solange der Rotor Winkel passt.
Wenn du da Schwankungen an der Eingangsspannung hast dann gibt der Pi
mehr oder weniger pseudo "Vs" raus. Hast du Mal die Frequenz geändert?
Und das Drehfeld mit geeignetem TP gemessen? Bevor das nicht überprüft
ist brauchst du mit der Rechnung garnicht weiter machen. Meine FOC lief
auch aber im Messebetrieb kam BS raus. Da merkt man erst wie viel die
internen Werte mit der Realität zu tun haben.
Alex E. schrieb:> Wenn du da Schwankungen an der Eingangsspannung hast dann gibt der Pi> mehr oder weniger pseudo "Vs" raus.
Die Spannung schwankt nicht, ich habe das nur mal mit einem
Labornetzteil überprüft und die Abhängigkeit entdeckt.
Alex E. schrieb:> Hast du Mal die Frequenz geändert?
Ich habe schon zwischen 200Hz und 1kHz probiert, es bleibt das selbe.
Bei höherem Vd scheint die Amplitude des Id Stromes ungefähr gleich,
aber der Id Strom schiebt sich weg vom Nullpunkt und so liegt z.B ein
Signal A * sin(omega t) + offset an. Von daher scheint schon etwas
komisch zu sein.
Alex E. schrieb:> Und das Drehfeld mit geeignetem TP gemessen?
Ich kann mal die Phasenströme mit dem Oszi messen, Vd kann ich ja nicht
darstellen.
Bert S. schrieb:> Ich kann mal die Phasenströme mit dem Oszi messen, Vd kann ich ja nicht> darstellen.
Da du nur Vd setzt sollte die Amplitude der Spannungen passen.
Bert S. schrieb:> Ich habe schon zwischen 200Hz und 1kHz probiert, es bleibt das selbe.> Bei höherem Vd scheint die Amplitude des Id Stromes ungefähr gleich,> aber der Id Strom schiebt sich weg vom Nullpunkt und so liegt z.B ein> Signal A * sin(omega t) + offset an. Von daher scheint schon etwas> komisch zu sein.
Das ist allerdings sehr Auffällig. Ist vllt das Offset abhängig von Vd?
Bert S. schrieb:> Die Spannung schwankt nicht, ich habe das nur mal mit einem> Labornetzteil überprüft und die Abhängigkeit entdeckt.
Die Schwankt bei Last garantiert nur merkst du das nicht. LabNTs und die
Zuleitungen sind wahrscheinlich alles andere als eine Steife
Spannungsquelle. Ist aber für die erstmal egal.
Dein Problem ist das Offset im Strom das darf nicht da sein.
Alex E. schrieb:> Das ist allerdings sehr Auffällig. Ist vllt das Offset abhängig von Vd?
Ja, das sieht so aus.
Alex E. schrieb:> ein Problem ist das Offset im Strom das darf nicht da sein.
Ok, ich gehe dem mal nach. Momentan setze ich Vd und den elektrischen
Winkel aus einem Interrupt mit 5kHz, wobei der Drehwinkel mit 500Hz
wechselt. Die FOC wird mit 20kHz aufgerufen, aus einem anderen
Interrupt, der mir dann Vd setzt und entsprechend die PWM Signale.
Weiter habe ich mal das ganze simuliert, in der Simulation funktioniert
alles und ich kann Ld bzw. Lq ziemlich genau berechnen. Die Umsetzung
ist identisch auf dem Controller, aber eben, irgendwie scheint das
applizieren von Vd noch problematisch zu sein.
Bert S. schrieb:> Ok, ich gehe dem mal nach. Momentan setze ich Vd und den elektrischen> Winkel aus einem Interrupt mit 5kHz, wobei der Drehwinkel mit 500Hz> wechselt. Die FOC wird mit 20kHz aufgerufen, aus einem anderen> Interrupt, der mir dann Vd setzt und entsprechend die PWM Signale.
Hört sich unnötig kompliziert an. Warum incrementierst du den Winkel
nicht mit 20khz
Alex E. schrieb:> Hört sich unnötig kompliziert an. Warum incrementierst du den Winkel> nicht mit 20khz
Ich werde es mal ausprobieren, momentan sind die Kalibrierungsroutinen
so geschrieben, dass sie separat von einem timer interrupt aufgerufen
werden, ich denke die Struktur muss noch überarbeitet werden.
Bis vor kurzem wurde alles zyklisch ohne Interrupt durchlaufen, sprich
zuerst Messdaten erfassen, dann Positionsregler, dann Ausgang an
Geschwindigkeitsregler und dann FOC und am ende setzen der PWM Signale.
Das funktioniert soweit sehr gut, aber ich bin mir noch nicht sicher,
wie es Interrupt basiert besser gelöst werden könnte. Wie genau wird das
sonst gehandhabt? Die Strommessung sollte ja wahrscheinlich kurz vor der
FOC stattfinden und das PWM setzen direkt danach. Die PWM Frequenz ist
im Moment noch 32kHz, also schneller als die FOC cycle time.
Für die Strommessung kommen momentan INA240 zum Einsatz (direkt
Phasenstrom), wobei hier über DMA einige Samples gelesen werden und dann
ein MOV den Strom noch filtert. Ich weiss nicht, ob ich evtl. mit
Interrupts direkt wie beim Low-Side messen bessere Resultate bekomme
Wie bei jeder Regelung üblich machst du alles in einem also Strommessung
auswerten, verarbeiten Strom Regler ggf. Beobachter und dann die PWM
Werte ins Shadow Register der Timer. Dann hast du einen Zyklus Versatz
den du als totzeit ansehen kannst und eben so auch kompensieren.
Ganz klassisch lässt du dafür den ADC synchron zur PWM samplen und wenn
der fertig ist machst du obige Verarbeitung. Oder du entkoppelst das
komplett wie du es jetzt hast, dann musst du nur sicherstellen daß der
ADC min 2x schneller Sampled als die PWM damit du mit nyqust kein
Problem hast. Die Samples kannst du wieder Puffern und einen Mittelwert
bilden oder anders fir filtern und gut. Nur bekommst du so jitter in die
Regelung weil das Update der PWM Register nicht sicher gestellt ist.
Wenn du gerade den PWM Zyklus verpasst werden die Werte erst einen
Zyklus später übernommen und wenn du Just in time Mal die Register setzt
dann hast du diesen Versatz nicht.
Üblich wäre die synchrone Variante weil das Timing komplett vorhersehbar
und kompensierbar (Phasenverschiebung die durch die Verzögerung
entsteht) ist.
Ok, ich habe jetzt mal alles gemessen und es sieht alles sehr gut aus.
Angehängt sind die Ströme Ia und Ib, die ich direkt in ein Buffer
schreibe und dann auslese. Ebenfalls sehen die Ströme auf dem Oszi sehr
gut aus, wie angehängt.
Ebenfalls sind die Stromamplituden unabhängig von der Eingangsspannung
und skalieren linear mit Vd. Die injizierte Frequenz von 500Hz stimmt
perfekt.
Von dem her, der applizierte Spannungsvektor Vd erzeugt schöne
Phasenströme Ia und Ib, aber irgendwie funktioniert das wandeln nach Id
nicht richtig, sondern schiebt mir Id und Iq nur entlang einer Achse
nach oben/unten. Was man auf dem Plot sieht ist, dass die gemessenen
Phasenströme einen leichten Offset haben, obwohl wenn ich die
Phasenströme mit dem Oszi messe, sehe ich diesen nicht. Auch nicht, wenn
ich im Position Mode bin und einen fixen Iq_max einstelle, sehen die
Amplituden für Ia und Ib sauber aus, ohne Offset. Dieser Offset könnte
wohl einer der Gründe sein, aber ich sehe nicht, wieso Iq/Id immer die
gleiche Amplitude haben, aber der Offset zunimmt. Und dann noch die
Abhängigkeit der Eingangsspannung macht keinen Sinn.
Hier mal der Code für das Wandeln, aber der muss schon gehen,
schließlich geht FOC ohne Probleme. Kann es also alleine am Offset
liegen?
Edit: Ok, Iq und Id müssten ja sowiso konstant sein, wenn die Ströme Ia,
Ib und Ic schön Sinusförmig sind. Ic ist bei mir leicht daneben, aber
das Board hat einen Shunt, der ein bisschen schlechter ist, von daher
der leichte Offset. Also müsste Id ja eigentlich proportional zur Vd
amplitude einen Offset bekommen. Daher sehe ich nicht genau, wieso ein
Vd rotierender Vektor ein rotierenden Id um den Nullpunkt erzeugen
sollte?
Edit 2: Ok, Ia, Ib und Ic sollten beim rotierenden Drehfeld alle eine
andere Amplitude haben, das scheint bei mir nicht der Fall zu sein,
wieso sehe ich noch nicht.
Erste Frage warum nimmst du nicht die kombinierte Variante?
Der Code sieht in Ordnung aus.
Bert S. schrieb:> Edit: Ok, Iq und Id müssten ja sowiso konstant sein, wenn die Ströme Ia,> Ib und Ic schön Sinusförmig sind. Ic ist bei mir leicht daneben, aber> das Board hat einen Shunt, der ein bisschen schlechter ist, von daher> der leichte Offset. Also müsste Id ja eigentlich proportional zur Vd> amplitude einen Offset bekommen. Daher sehe ich nicht genau, wieso ein> Vd rotierender Vektor ein rotierenden Id um den Nullpunkt erzeugen> sollte?
??? Gibst du jetzt ein konstantes Vd raus und rotierst mit dem
elektrischen Winkel das System oder gibst du einen Sinus auf Vd?
Alex E. schrieb:> Erste Frage warum nimmst du nicht die kombinierte Variante?
Gute Idee, habe das nicht gesehen.
Alex E. schrieb:> Gibst du jetzt ein konstantes Vd raus und rotierst mit dem elektrischen> Winkel das System oder gibst du einen Sinus auf Vd
Ich gebe ein konstantes Vd aus und variiere den elektrischen Winkel mot
500Hz
Bert S. schrieb:> Ich gebe ein konstantes Vd aus und variiere den elektrischen Winkel mot> 500Hz
Dann solltest du eigentlich einen konstanten Stromvektor mit im
wesentlichen negativen Iq und nur wenig Id erhalten.
Hmm ok, das bekomme ich soweit auch, das konstante Schwingen mit fixer
Amplitude kommt wahrscheinlich von den Abweichungen in der Strommessung.
Man könnte so also Lq berechnen, aber Abhängig von Rs. Ist das der
richtige Weg oder wäre es einfacher mit einem Sinusförmige Vd?
:) jetzt kommen wir doch weiter. Welche Amplitude hat die Schwingung?
Und hat die ca. Die doppelte Frequenz deines Drehfeldes? Dann kommt die
Schwingung mit hoher Wahrscheinlichkeit von der Achsigkeit des Motors
also der Differenz von Ld und Lq.
Alex E. schrieb:> jetzt kommen wir doch weiter. Welche Amplitude hat die Schwingung?> Und hat die ca. Die doppelte Frequenz deines Drehfeldes? Dann kommt die> Schwingung mit hoher Wahrscheinlichkeit von der Achsigkeit des Motors> also der Differenz von Ld und Lq.
Ja das sollte hinkommen :D
So, nachdem ich die Strommessung mit dem PWM triggere, bekomme ich
nochmals bessere Phasenströme Ia und Ib. Auch hier sieht man diesen
Offset von vielleicht -100mA, dies scheint aber nicht weiter tragisch zu
sein.
Id und Iq sehen ein bisschen komisch aus, aber eben wahrscheinlich wegen
der Überlagerung von Harmonischen. Sehen die Signale so in Ordnung aus?
Man sieht jetzt auch schön, die doppelte Frequenz in Id wo in Ia/Ib ist.
Das ganze analysiere ich mit einem Lock-In Amplifier, der gibt mir bei
1xOmega einen recht konstanten Output, bei 2xOmega nicht mehr, obwohl Id
mit 2xOmega zu drehen scheint.
Bert S. schrieb:> Das ganze analysiere ich mit einem Lock-In Amplifier, der gibt mir bei> 1xOmega einen recht konstanten Output, bei 2xOmega nicht mehr, obwohl Id> mit 2xOmega zu drehen scheint.
Lock-Amplifier? Eine PLL? Hast du Mal n Link zu dem Verfahren kenne ich
noch nicht.
Ich nutze dazu einen Goertzel.
Bert S. schrieb:> Id und Iq sehen ein bisschen komisch aus, aber eben wahrscheinlich wegen> der Überlagerung von Harmonischen. Sehen die Signale so in Ordnung aus?
Noch nicht. Du hast jetzt eine Phase von 45° aber dein Rs ist bestimmt
nicht so groß wie w*L also musst du erstmal die Phasenverschiebung durch
die Strommessung kompensieren. Du hast jetzt bei 500Hz ca. 45° also grob
250us. Musst du Mal mit deinen Daten zurück rechnen.
Dann ist die Amplitude der 2 * w Schwingung ist V= w*(Lq - Ld) * I
Und die DC Komponente des Stromes ist V=w*(Ld + Lq) / 2 * I
Alex E. schrieb:> Noch nicht. Du hast jetzt eine Phase von 45° aber dein Rs ist bestimmt> nicht so groß wie w*L also musst du erstmal die Phasenverschiebung durch> die Strommessung kompensieren. Du hast jetzt bei 500Hz ca. 45° also grob> 250us. Musst du Mal mit deinen Daten zurück rechnen.
Woran erkennst du die 45°, ich habe gerade gesehen, dass Iq/Id und Ia/Ib
von Oben nicht aus der gleichen Messung sind, ich werde die Messung
nochmals wiederholen.
Alex E. schrieb:> Lock-Amplifier? Eine PLL? Hast du Mal n Link zu dem Verfahren kenne ich> noch nicht.> Ich nutze dazu einen Goertzel.
Ok, ich denke Goertzel und Lock-In kommen auf das gleiche, es wird im
Endeffekt das Signal rekonstruiert bei einer fixen Frequenz:
https://www.zhinst.com/ch/en/resources/principles-of-lock-in-detection
Grüsse Bert
Bert schrieb:> Woran erkennst du die 45°, ich habe gerade gesehen, dass Iq/Id und Ia/Ib> von Oben nicht aus der gleichen Messung sind, ich werde die Messung> nochmals wiederholen.
Iq und Id liegen beide bei ca. -600 also im 3. Quadranten eigentlich
sollte der Vektor aber max 90° hinter der Spannung liegen. Da die
Spannung ein positives Vd ist hast du aber eher 135°. Daher die 45°
These.
Bert schrieb:> Ok, ich denke Goertzel und Lock-In kommen auf das gleiche, es wird im> Endeffekt das Signal rekonstruiert bei einer fixen Frequenz:>> https://www.zhinst.com/ch/en/resources/principles-of-lock-in-detection
Ah kannte ich noch nicht ist aber schön wenn ich mal Speichersparen
muss, da man dafür ja keine größere Menge an Samples Puffern muss. Die
Rechenzeiten wären auch interessant. Danke für den Link.
Willst du das verfahren eigentlich nur zum Messen benutzen oder auch
während der Rotation der Maschine? Dass sind dann 2 Paar Schuhe.
Alex E. schrieb:> Iq und Id liegen beide bei ca. -600 also im 3. Quadranten eigentlich> sollte der Vektor aber max 90° hinter der Spannung liegen. Da die> Spannung ein positives Vd ist hast du aber eher 135°. Daher die 45°> These.
Ok, ja die Messdaten waren halt die falschen, ich habe es versucht noch
zu wiederholen, irgendwie habe ich aber wohl was verändert, ich bekomme
andere Signale für Iq und Id. Ebenfalls habe ich mal Vd * sin(theta)
geplottet, Vd bleibt ja konstant und theta der elektrische Winkel.
Das sieht doch gut aus. Du hast noch einen leicht negativen Id und ist
die Welle fixiert oder kann die mit 500Hz oszillieren? Das würde die
Oberwellen erklären.
@edit: versuche Mal 1khz oder etwas mehr was ändert sich dann an dem
Signal.
Die Welle ist nicht fixiert, dann kommt das wohl so hin. Ich mache
Morgen mal noch bei 1kHz eine Messung. Dann probiere ich mal den
Goertzel, beim Lock-In bekomme ich irgenwie den Offset nicht raus, ich
könnte den aber durch averaging und abziehen entfernen und so beide
Signalkomponenten evaluieren
Ziel ist es eigentlich an allen Rotorpositionen bei einem bestimmtem
Strom Ld zu messen, da dies mit dem Torque ripple korreliert. Aus dem
Mapping möchte ich dann einen Feed Forward Term ermitteln. Hast du das
schon mal gemacht?
Grüsse und danke, Bert
So habe mal die Messung mit 1kHz Injection ausgeführt, denke die Signale
sehen gut aus so. Komisch ist nur, dass es mir Id so weit noch unten
geschoben hat.
Anbei noch eine Messung mit 500Hz mit der gleichen Vd Amplitude.
Das passt voll zu meinen Erwartungen. Bei 500Hz scheint sich deine
Motorwelle noch gut zu bewegen bei 1kHz kommt sie deutlich weniger mit
wenn man sich den Anteil der harmonischen ansieht.
Bert S. schrieb:> So habe mal die Messung mit 1kHz Injection ausgeführt, denke die Signale> sehen gut aus so. Komisch ist nur, dass es mir Id so weit noch unten> geschoben hat.
Das ist auch völlig klar du hast eine Verzögerung in deiner
Strommessung/Auswertung. Also Bandbreite Stromsensor + HW RC TP + SW
Filter haben eine Signallaufzeit und die wird bei den Feldfrequenzen
signifikant. Da die Zeit konstant ist verdoppelt sich bei doppelter
Frequenz die Phase und genau das siehst du hier. Wenn du L und R deiner
Wicklungen kennst kannst du den Phasenfehler bei den Frequenzen
bestimmen und die Zeit berechnen. Dann musst du nur um
eine Parktransformation (zusätzlich nur für die Ströme Id/Iq] machen.
Da sich die Drehzahl nur langsam ändert kannst du den Sinus und Cosinus
für die Drehung auch in einer Langsamen Loop rechnen.
Alex E. schrieb:> Das ist auch völlig klar du hast eine Verzögerung in deiner> Strommessung/Auswertung.
Ok, wie würden die Ströme Iq/Id ohne Verzögerung der Strommessung
aussehen? Wären die ohne negativen Offset?
Alex E. schrieb:> Da die Zeit konstant ist verdoppelt sich bei doppelter> Frequenz die Phase
Von deinem vorigen Beitrag müsste ich ja den Offset bestimmen sowie die
2 * omega Schwingung. Den Offset bekomme ich durch averaging, die
2*omega Frequenz kann ich also berechnen, indem ich den Lock-In über den
korrigierten Iq/Id laufen lasse, sprich mit der kompensierten Park
Trafo?
Die Phaseninduktivität ist 1.1mH und der Phasenwiderstand ist 0.22mOhm,
daraus ergibt sich ein Tl = 5ms und daraus ein omega * Tl = 10*PI, da
wäre ich ja eigentlich wieder am gleichen Ort vom Winkel her? Was
übersehen ich da?
Bert S. schrieb:> Die Phaseninduktivität ist 1.1mH und der Phasenwiderstand ist 0.22mOhm,> daraus ergibt sich ein Tl = 5ms und daraus ein omega * Tl = 10*PI, da> wäre ich ja eigentlich wieder am gleichen Ort vom Winkel her? Was> übersehen ich da?
OK jetzt habe ich Mal Zeit:
Punkt 1: 0.22Ohm und 1.1mH ergeben bei 1kHz
Du hast aber einen Stromvektor von Iq = -300 und Id = -350 also:
somit
Hat deine Strommessung bei 1kHz einen Phaselag von 42° und daher eine
Laufzeit Verzögerung von
Um die These zu beweisen bei 500Hz sind das 21° Phase also
somit sind das 20° lag. QED
So meinte ich das. Wenn das passt kannst du mit der Auswertung des Iq
mit lockin auswerten.
Alex E. schrieb:> Dann ist die Amplitude der 2 * w Schwingung ist V= w*(Lq - Ld) * I> Und die DC Komponente des Stromes ist V=w*(Ld + Lq) / 2 * I
Danke dir, ich habe es soweit hinbekommen, Id bleibt um den Nullpunkt
stehen und Iq bewegt sich in die negative Richtung. Das ganze ist nun
auch Eingangsspannungsunabhängig. Die Verzögerung der Strommessung kam
daher, dass ich einen Mittelwert über die DMA Strommessungen mache, wenn
ich direkt auslese habe ich eine Verzögerung von ca. 5us.
Zur obigen Formel, Ist V = Vd in beiden Gleichungen und I = Id in der
ersten und Iq_dc in der zweiten?
Was ich schon mal sehr spannend finde ist, dass ich den elektrischen
Winkel so schätzen kann, jetzt sehe ich auch wie die Positionsschätzung
über HFI funktioniert. Der Lock-In scheint auch eine sehr schnelle
Phasenkonvergenz zu besitzen, das wäre somit für die Positionsschätzung
ideal, gerade da er Rekursiv ist.
Ich habe mal jetzt mal alles so implementiert wie oben von den
Gleichungen her, ich bekomme extrem stabile Werte über den ganzen
Spannungsbereich und nur Abweichungen von maximal so 0.5%.
Nun stimmen aber Ld und Lq irgendwie noch nicht und der Wert ändert sich
proportional zum applizierten Vd. Habe ich was nicht berücksichtigt in
den Formeln?
Bert S. schrieb:> Der Lock-In scheint auch eine sehr schnelle Phasenkonvergenz zu> besitzen, das wäre somit für die Positionsschätzung ideal, gerade da er> Rekursiv ist.
Das sieht für mich auch sehr gut aus. Hab aber bisher nur FPGA
Implementierungen gesehen. Hast du einen Link zu einer C/C++
Implementierung? Ich das Rad ja nicht neu erfinden.
Bert S. schrieb:> Ich habe mal jetzt mal alles so implementiert wie oben von den> Gleichungen her, ich bekomme extrem stabile Werte über den ganzen> Spannungsbereich und nur Abweichungen von maximal so 0.5%.> Nun stimmen aber Ld und Lq irgendwie noch nicht und der Wert ändert sich> proportional zum applizierten Vd. Habe ich was nicht berücksichtigt in> den Formeln?
Mmh. Was kommt denn für ld und lq raus? Ich sehe so jetzt nix falsches.
Kann du Mal die einzelnen Werte Posten das ich das nachvollziehen kann.
Alex E. schrieb:> Mmh. Was kommt denn für ld und lq raus? Ich sehe so jetzt nix falsches.> Kann du Mal die einzelnen Werte Posten das ich das nachvollziehen kann.
Ich bekomme für ein Vd von 2V ein Ld von 0.3mH, aber eben linear in Vd,
für ein 4V Vd bekome ich dann 0.6mH etc. Lq bewegt sich bei 54uH. Da es
sich nicht um ein salient Motor handelt, müsste Lq = Ld = Ls sein, in
etwa und Ls ist 1.1mH.
Alex E. schrieb:> Hast du einen Link zu einer C/C++> Implementierung? Ich das Rad ja nicht neu erfinden.
Ich habe das mal selber implementiert:
Ist soweit noch nicht sehr effizient, ich wollte es aber mal
funktionierend bringen. Die LPF Filter sind recht langsam gewählt für
einen sehr genauen Output.
2V bzw 4V kommt mir sehr niedrig vor. Die Werte des Motors lassen auf
einen Motor schließen der für 400V oder mehr Zwischenkreis Spannung
ausgelegt ist. Aber deine Strommessung scheint ja schon gute Werte zu
liefern. Was sind die Werte von Id_amp und Iq_dc bei 2V und 4V. Ist der
Sinus hörbar oder ist der Antrieb noch Recht ruhig? Für eine gute L
Messung muss der Ton schon nerven:).
Alex E. schrieb:> 2V bzw 4V kommt mir sehr niedrig vor. Die Werte des Motors lassen> auf> einen Motor schließen der für 400V oder mehr Zwischenkreis Spannung> ausgelegt ist. Aber deine Strommessung scheint ja schon gute Werte zu> liefern. Was sind die Werte von Id_amp und Iq_dc bei 2V und 4V. Ist der> Sinus hörbar oder ist der Antrieb noch Recht ruhig? Für eine gute L> Messung muss der Ton schon nerven:).
Das ist ein +48VDC Motor und die Messung ist schon sehr nervig :). Bei
2.2V Vd bekomme ich ein Id_amp von 36mA und ein Iq_dc von -386mA.
Vllt verliert deine Strommessung bei 1 kHz schon etwas Amplitude oder es
steckt noch ein Fehler in der Kalibrierung der Messung das kann jetzt
vieles sein
Alex E. schrieb:> Passt doch.> Lq=2.2V2∗Π∗1000Hz∗(0.386A−0.036)=1000.4uHLd=2.2V2∗Π∗1000Hz∗(0.386A+0.036 )=830uH> L_q = \frac{2.2V}{2 * \Pi * 1000Hz *(0.386A - 0.036)} = 1000.4uH>> L_d = \frac{2.2V}{2 * \Pi * 1000Hz *(0.386A + 0.036)} = 830uH
Danke, ja scheint zu passen, ich habe irgendwie bei den Formeln was
falsch gemacht.
Hast du schon mal sowas wie hier versucht:
(DOI:10.6113/JPE.2010.10.2.176, am besten mit sci-hub öffnen -->
https://sci-hub.se/http://koreascience.or.kr/article/JAKO201019451500666.page)
(Momentan irgendwie gerade nicht verfügbar)
Ich habe bei einem Motor Torque Ripples mit der 6ten Harmonischen des
elektrischen Winkels (hat ja jeder Motor), die ich gerne kompensieren
würde. Was in diesem Paper beschrieben wird ist, dass Ld an
verschiedenen mit verschiedenen Strömen Positionen gemessen wird und so
eine feed-forward Funktion erstellt wird, welche dann Stromabhängig
einen feed-forward Term generiert. Ich bin mit der Umsetzung noch nicht
ganz vertraut und gerade wie der Strom eingestellt wird ist mir noch
nicht ganz klar (ich denke ein konstantes Id und dann die Induktivität
berechnen)
Unter der DOI hab ich das PDF gefunden auch ohne scihub.
Die bauen aber nur ein Kennfelde (Winkel/Solldrehmoment) auf dass das
Rastmoment kompensiert. Die Maschine ist auch sehr spezifisch für die
Anwendung ausgelegt. Im industriellen Bereich wird sowas oft bei
Drehzahl geregelten Antrieben mit einer FFT auf dem Sollstrom gemacht.
Also bei Laufender Maschine FFT machen DC ausklammern und IFFT auf den
Sollstrom vorsteuern. Dann der nächste durch Gang bis der THD unter x
Prozent ist. Dann speichert man die iFFT Kurve.
Die Methode aus dem Paper ist Recht simple um nur den Coging Torque raus
zu bekommen. Das kann die FFT Methode hat bei anderen Lasten unter
Umständen genau das nicht berücksichtigt.
Alex E. schrieb:> Im industriellen Bereich wird sowas oft bei> Drehzahl geregelten Antrieben mit einer FFT auf dem Sollstrom gemacht.> Also bei Laufender Maschine FFT machen DC ausklammern und IFFT auf den> Sollstrom vorsteuern. Dann der nächste durch Gang bis der THD unter x> Prozent ist. Dann speichert man die iFFT Kurve.
Ok, das klingt auch mal sehr spannend
Alex E. schrieb:> Die Methode aus dem Paper ist Recht simple um nur den Coging Torque raus> zu bekommen. Das kann die FFT Methode hat bei anderen Lasten unter> Umständen genau das nicht berücksichtigt.
Wie ich das verstanden habe wird hier aktiv der Torque Ripple und nicht
das Cogging kompensiert. Man misst also bei hohen Strömen die
Induktivität Ld und dieses Mapping ist proportional zur Verzerrung des
magnetischen Flusses bei diesen hohen Strömen. Das FF passiert dann
proportional zum Strom. Bei der Rastmomentkompensation wird ja nur bei
jeder Position der Strom gemessen um diese Position zu halten und dann
ein statisches FF erstellt.
Noch eine andere Frage, für MTPA muss ich ja ein Ld und Lq nehmen, aber
von welcher Position? Ld und Lq variieren ja mit dem elektrischen Winkel
und bei manchen Winkeln sind Ld und Lq praktisch identisch.
Die Messmethode aus dem Paper ist pures HFI. Also du fährst den Motor in
FOC bei konstanter niedriger Drehzahl und addierst auf Vd einen Sinus
mit 1kHz und wertest dann die Iq Amplitude aus um Ls zu messen. Wie du
es jetzt auch gemacht hast nur unter drehender Maschine. Das musst du
dann für mehrere Lasten machen und dann hast du das Kennfeld für den
Feed Forward. Die Rotorlage ist dabei quasi Abfall :)
Alex E. schrieb:> Das musst du> dann für mehrere Lasten
Ok, die Lasten müssten ja eigentlich perfekt sein, sprich kein Ripple
enthalten, sonst geht es ja nicht. Kann ich auch eine Last simulieren,
indem ich einen großen Id Strom appliziere? Dieser führt ja zu den
gleichen Sättigungseffekten?
Bert S. schrieb:> Alex E. schrieb:>> Das musst du>> dann für mehrere Lasten>> Ok, die Lasten müssten ja eigentlich perfekt sein, sprich kein Ripple> enthalten, sonst geht es ja nicht. Kann ich auch eine Last simulieren,> indem ich einen großen Id Strom appliziere? Dieser führt ja zu den> gleichen Sättigungseffekten?
Theoretisch stimme ich zu nur ggf. müsste man die Phase des Feed Forward
anpassen weil es ja auf Id gemessen wurde und auf Iq angewendet werden
wird.
Bert S. schrieb:> Wie ich das verstanden habe wird hier aktiv der Torque Ripple und nicht> das Cogging kompensiert. Man misst also bei hohen Strömen die> Induktivität Ld und dieses Mapping ist proportional zur Verzerrung des> magnetischen Flusses bei diesen hohen Strömen. Das FF passiert dann> proportional zum Strom. Bei der Rastmomentkompensation wird ja nur bei> jeder Position der Strom gemessen um diese Position zu halten und dann> ein statisches FF erstellt.
Hier wird aber kein Ripple gemessen sondern die Änderung der
Induktivität durch die Positionsabhängige Qualität des Magnetischen
Kreises und exakt das ist der Grund für das Rastmoment eines Motors,
mechanische Effekt werden nicht berücksichtigt.
Das ist deutlich besser als die Methode mit festhalten an Position x.
Bert S. schrieb:> Noch eine andere Frage, für MTPA muss ich ja ein Ld und Lq nehmen, aber> von welcher Position? Ld und Lq variieren ja mit dem elektrischen Winkel> und bei manchen Winkeln sind Ld und Lq praktisch identisch.
Die sind praktisch identisch? Das wäre sehr komisch. Der Punkt ist deine
Maschine hat einfach keine signifikante Achsigkeitkeit die im
Rotoraufbau begründet ist sondern nur ein Unterschied von Ld und Lq der
durch Sättigungseffekte begründet ist. Dementsprechend ist MTPA nicht
sinnvoll für die Maschine und die Rotorlage Ermittlung über HFI wird
auch problematisch.
Alex E. schrieb:> Theoretisch stimme ich zu nur ggf. müsste man die Phase des Feed Forward> anpassen weil es ja auf Id gemessen wurde und auf Iq angewendet werden> wird.
Ok danke, ich werde das mal probieren.
Alex E. schrieb:> Die sind praktisch identisch? Das wäre sehr komisch.
Ld schwankt zwischen 0.8mH und 0.92mH, Lq zwischen 1mH und 0.94mH je
nach position, wobei bei Ld = 0.8mH Lq = 1mH ist und bei der Position Lq
= 0.94mH Ld = 0.92mH ist. Es handelt sich aber um einen non-salient
Motor, von daher ist das wahrscheinlich schon zu erwarten.
Alex E. schrieb:> Dementsprechend ist MTPA nicht> sinnvoll für die Maschine und die Rotorlage Ermittlung über HFI wird> auch problematisch.
Ok, ich wollte das einfach mal implementiert haben, sobald ich mal einen
salient Motor habe zum testen.
Was ich noch spannend finde ist, dass im Paper von oben der Strom Id
sinusförmig appliziert wird und dann die Spannung ausgelesen wird, dies
ist doch aber viel schwieriger zu erzielen, oder sehe ich das falsch?
Weiter kann ich ja momentan nur ein konstantes Vd und einen drehenden
elektrischen Winkel nutzen, wenn ich aber das ganze über den normalen
Regler werfen möchte, muss ich ja ein Vd_HFI feed-forwarden und der
elektrische Winkel bleibt wie beim normalen Regler. Reicht es da,
einfach ein Vd * Sinus(omega t) zu forwarden?
Bert S. schrieb:> Reicht es da,> einfach ein Vd * Sinus(omega t) zu forwarden?
Jop, nichts anderes machen die auch. Im Paper ist das V_dac welches auf
das normale Vd nach dem Regler addiert wird. Hier kann man noch
unterscheiden. Wenn du nur Vd mit dem Sinus beaufschlagst ist das kein
komplettes Drehfeld und somit ist die Stromantwort Positionsabhängig.
Das nutzt man eigentlich bei HFI direkt. Also man jagt nur auf Vd das
Signal rein und guckt sich Iq an. Wenn die Amplitude des
Injektionssignales in Iq nahe 0 ist liegt der aktuelle Rotorwinkel der
FOC auf dem wirklichen Rotorwinkel oder 180° gedreht dazu.
Für die Messung ist das aber ungünstig, vllt fällst du hier mit der
jetzigen Messung rein. Siehe
https://www.db-thueringen.de/servlets/MCRFileNodeServlet/dbt_derivate_00013770/ilm1-2007000172.pdf
ab Seite 63. Die Diss ist generell ein guter Überblick über alles was so
Standard ist im sensorlosen Bereich. Kannst ja mal drüber fliegen.
Für die Messung solltest du einen komplettes Drehfeldvorsteuern also Vd
und Vq. So hast du es ja implizit auch gemacht all du noch den ganzen
d/q-Frame mit 1kHz rotiert hast.
Ich habe mal Kapitel 4 durchgelesen und verstehe nun auch besser, wie du
auf die Berechnung von Lq und Ld gekommen bist, danke dafür.
Alex E. schrieb:> Für die Messung solltest du einen komplettes Drehfeldvorsteuern also Vd> und Vq. So hast du es ja implizit auch gemacht all du noch den ganzen> d/q-Frame mit 1kHz rotiert hast.
Das macht absolut sinn, nur wie genau soll ich das am besten machen?
Vd_hfi = Vd' * sin(wt) und Vq_hfi = V_q' * cos(wt)? So wären ja die
Signale 90° phasenverschoben wie zuvor.
Dann wird es meiner Meinung nach etwas knifflig. Wenn ich jetzt an
verschiedenen Positionen ein Ld messen will und das bei einem konstanten
Id (als Last Ersatz), dann muss mein Iq auch leicht ansteigen um das
Reluktanzmoment von Id auszugleichen und auch um den Cogging Strom an
der jeweiligen Position zu erbringen. Diese beiden Ströme sollten sich
aber schnell stabilisieren und so könnte ich vor jeder Messung zuerst
die Rotorposition neu einstellen, Iq und Id messen, ein HFI applizieren
und bei der Berechnung von Iq_dc sowie Id_amp die Offsets abziehen?
Bert S. schrieb:> Das macht absolut sinn, nur wie genau soll ich das am besten machen?> Vd_hfi = Vd' * sin(wt) und Vq_hfi = V_q' * cos(wt)? So wären ja die> Signale 90° phasenverschoben wie zuvor.>> Dann wird es meiner Meinung nach etwas knifflig. Wenn ich jetzt an> verschiedenen Positionen ein Ld messen will und das bei einem konstanten> Id (als Last Ersatz), dann muss mein Iq auch leicht ansteigen um das> Reluktanzmoment von Id auszugleichen und auch um den Cogging Strom an> der jeweiligen Position zu erbringen. Diese beiden Ströme sollten sich> aber schnell stabilisieren und so könnte ich vor jeder Messung zuerst> die Rotorposition neu einstellen, Iq und Id messen, ein HFI applizieren> und bei der Berechnung von Iq_dc sowie Id_amp die Offsets abziehen?
Ja das denke ich auch. Willst du das ohne Geber machen oder mit einem
Geber? Ohne Geber ist die Frage ob du bestimmte Positionen überhaupt bei
einem niedrigen Strom erreichen kannst. In dem Paper hatten die ja schon
einen Motor der kein Rastmoment hatte und nur unter Last gerastet hat
das ist ja deutliche einfacher als mit einem Rastmoment das auch ohne
Bestromung bereits vorhanden ist weil der Motor so einfach gebaut ist.
Alex E. schrieb:> Ja das denke ich auch. Willst du das ohne Geber machen oder mit einem> Geber? Ohne Geber ist die Frage ob du bestimmte Positionen überhaupt bei> einem niedrigen Strom erreichen kannst. In dem Paper hatten die ja schon> einen Motor der kein Rastmoment hatte und nur unter Last gerastet hat> das ist ja deutliche einfacher als mit einem Rastmoment das auch ohne> Bestromung bereits vorhanden ist weil der Motor so einfach gebaut ist.
Ich mache das mit Geber und die Rastmomentkompensation (FF von Iq an
spezifischer Position nach statischer Analyse) mache ich auch schon
vorher, von dem her ist ein positionsabhängiges Rastmoment-Mapping
vorhanden.
Im Endeffekt möchte ich die Sättigung des magnetischen Flusses bei
höheren Strömen kompensiere, was sich durch ein Torque Ripple bemerkbar
macht. Das Erkennen der Position über HFI ist mir eigentlich im Moment
noch nicht wichtig, obwohl das natürlich auch etwas feines ist und ich
später sicher auch noch damit herumprobieren möchte :)
Alex E. schrieb:> Oder ist es wie bei mir Spaß an der Freude?
Genau, ich interessiere mich einfach für Servomotoren und deren
Ansteuerung :) und ich möchte mal so einen Simulator bauen für ein
Steuerrad, der sich gut anfühlt und richtig Power hat. Im Moment fühlt
man einfach noch die 6te Harmonische, sprich beim 2 PP Motor gibt es 12
mal pro Umdrehung einen Ripple.
Ich suche momentan noch verschiedene Paper zusammen, habe mal eine
schöne Übersicht über die verschiedenen Möglichkeiten der
Parameteridentifikation gefunden:
https://eprints.whiterose.ac.uk/173931/1/09402773.pdf
So, folgendes Paper beschreibt das Messen der Induktivitäten unter einem
applizierten Iq und Id Strom am besten:
https://sci-hub.ee/10.1109/ecce44975.2020.9235908
(DOI:10.1109/ECCE44975.2020.9235908)
Was ich nicht verstehe ist, warum dazu eine Valpha/Vbeta sowie
zusätzlich eine Vd/Vq Injektion notwendig ist?
Bert S. schrieb:> So, folgendes Paper beschreibt das Messen der Induktivitäten unter einem> applizierten Iq und Id Strom am besten:>> https://sci-hub.ee/10.1109/ecce44975.2020.9235908> (DOI:10.1109/ECCE44975.2020.9235908)>> Was ich nicht verstehe ist, warum dazu eine Valpha/Vbeta sowie> zusätzlich eine Vd/Vq Injektion notwendig ist?
vom ersten Lesen ist mir das auch nicht ganz klar. Aber wenn man sich
den Vergleich ansieht dient die mehrfach Injection schlicht der Erhöhung
des SNR und dabei misst er auch noch die Kreuzkopplung der
Induktivitäten. Wenn man das ganze Verfahren durchzieht dauert das
wahrscheinlich ewig aber man bekommt anscheinend ein sehr gutes Bild von
den Induktivitäten bei verschiedenen Arbeitspunkten.
Ich habe mir noch überlegt, der Ripple könnte auch von der
Nichtlinearität des Inverters kommen, gerade da ich einen 2PP Motor habe
und 12 mal pro Umdrehung eine Rasterung spüre bei hohem Strom. Ist der
Ripple der Nichtlinearität des Inverters linear im Strom oder sollte der
nicht konstant sein und Stromunabhängig?
Daher implementiere ich zuerst mal noch eine Dead Time Compensation mit
Zero-Clamping, wie hier beschrieben:
(https://sci-hub.se/10.1049/ip-epa:20045123)
Nur verstehe ich nicht ganz, wie man das ganze im Position Mode stabil
bekommen soll. Das Problem ist ja, dass wenn der Strom um den Nullpunkt
ist, es zu einer starken Oszillation kommt, da die Vd_comp und Vq_comp
Komponenten zwischen 2 Werten springen. Wie handhabt man die Dead Time
Kompensation, so dass es zu keiner Oszillation kommt im Position Mode?
Ich habe auch mal versucht das ganze erst ab einem Iq von 1A zu
aktivieren, aber auch hier kommt es schnell mal zu einer Oszillation
wenn ich auf eine neue Position springe.
In dem Paper wird ebenfalls eine Vamp definiert, die sqrt(2/3) so gross
ist wie Vacomp, jedoch geht das irgendwie mit der Clark und Park Trafo
nicht auf, da die Amplitude im Valpha/Vbeta System bereits mit dem
Faktor 2/3 gestaucht wird.
Bert S. schrieb:> Daher implementiere ich zuerst mal noch eine Dead Time Compensation mit> Zero-Clamping, wie hier beschrieben:>> (https://sci-hub.se/10.1049/ip-epa:20045123)
Bis auf die Kompensation der Kapazitäten mit der LUT ist das das gleiche
wie bei allen anderen:
https://www.nxp.com/docs/en/application-note/AN4863.pdfBert S. schrieb:> Nur verstehe ich nicht ganz, wie man das ganze im Position Mode stabil> bekommen soll. Das Problem ist ja, dass wenn der Strom um den Nullpunkt> ist, es zu einer starken Oszillation kommt, da die Vd_comp und Vq_comp> Komponenten zwischen 2 Werten springen. Wie handhabt man die Dead Time> Kompensation, so dass es zu keiner Oszillation kommt im Position Mode?> Ich habe auch mal versucht das ganze erst ab einem Iq von 1A zu> aktivieren, aber auch hier kommt es schnell mal zu einer Oszillation> wenn ich auf eine neue Position springe.
Wenn du die Formeln 11 und 12 aus der AN4863 von oben nimmst hast du das
Problem nicht weil die Unabhängig von der Stromrichtung sind. Und du
bist automatisch bei dem case 3 aus dem Paper von dir. Weil du Vd comp
nicht mehr rechnerisch dort halten musst wo sie hin soll sondern gleich
ideal vorgibst. Wenn man die Gleichungen 11 und 12 dann noch an den
spitzen verrundet wie bei Case 4 aus dem Paper dann hätte man auch das
erschlagen.
Viel schwieriger finde ich den Spannungsfehler zu beziffern. Ich habe
meine dead time comp nach AN4963 implementiert habe aber Probleme Uerr
genau zu bestimmen, der rechnerische Wert ist bei mir zu hoch. Vllt
liegt es ja an den Kapazitäten oder ich mache noch einen Rechnenfehler.
Das werde ich bei Gelegenheit mal prüfen. Kannst ja mal berichten wie es
bei dir Funktioniert.
Bert S. schrieb:> In dem Paper wird ebenfalls eine Vamp definiert, die sqrt(2/3) so gross> ist wie Vacomp, jedoch geht das irgendwie mit der Clark und Park Trafo> nicht auf, da die Amplitude im Valpha/Vbeta System bereits mit dem> Faktor 2/3 gestaucht wird.
in Gleichung 3 im Paper sehe ich keinen Faktor. Somit passt das meiner
Meinung nach ohne es genau nachzuvollziehen. Witziger Weise ist in der
AN4863 von 4/3 die rede für Uerr.
Alex E. schrieb:> Viel schwieriger finde ich den Spannungsfehler zu beziffern. Ich habe> meine dead time comp nach AN4963 implementiert habe aber Probleme Uerr> genau zu bestimmen, der rechnerische Wert ist bei mir zu hoch. Vllt> liegt es ja an den Kapazitäten oder ich mache noch einen Rechnenfehler.> Das werde ich bei Gelegenheit mal prüfen. Kannst ja mal berichten wie es> bei dir Funktioniert.
Danke dir, ich werde das mal ausprobieren und Bescheid geben.
So ich habe das mal noch wie in
(https://www.nxp.com/docs/en/application-note/AN4863.pdf) implementiert,
irgend etwas geht mir das nicht auf.
In pink ist die Vq Kompensation und in grün die Vd Kompensation. Bei der
Vq Kompensation ist irgendwie keine Verrundung vorhanden wie es nach
AN4863 sein sollte und Vd hat einen Offset. Ich gehe dem mal noch nach,
aber rein von den Formeln her sollte es stimmen und auch die
angenommenen Werte sehen gut aus:
foc.ctrl.verr_dt_comp_mV bleibt stabil,
foc.ctrl.sector_dt bewegt sich in {0..5}
Wie ich das sehe wird aber auch hier beim Wechsel zwischen Iq > 0 und Iq
< 0 eine Spiegelung entlang der X-Achse dieser Kompensationsspannung
stattfinden und somit eine Instabilität bei Iq = 0 vorherrschen.
Ebenfalls ist zwischen zwei Sektoren durch die Noise eine Unstetigkeit,
was auch zu Instabilität führt. Evtl. habe ich aber wie du gesagt hast
einfach eine zu hohe Kompensationsspannung.
Edit: Ok, es scheint, dass der Sektor für SVPWM für die DTC anders
gewählt wird, und zwar um 30° gedreht im UZS
Ich habe es mal so wie in AN4863 stabil hinbekommen, jetzt spürt man
aber noch den Ripple bei den Sektor Übergangen, weil Iq ja springt. Ist
dass, weil die Verrundung fehlt?
Wie genau machst du das mit der Verrundung? Wenn man das Zero Clamping,
noch implementiert, dann kommt man ja auf Va_comp, Vb_comp und Vc_comp,
jedoch bewegen wir uns in AN4863 direkt im Vq und Vd System und hin und
her transformieren wäre eher rechenintensiv. Gibt es da einen
einfacheren Trick für Zero Clamping und reicht das Zero Clamping für die
Verrundung?
Was auch noch komisch ist, dass die SVPWM Sektoren um 30° verschoben
sind, ich sehe dass noch nicht genau ein.
Bert S. schrieb:> Ich habe es mal so wie in AN4863 stabil hinbekommen, jetzt spürt man> aber noch den Ripple bei den Sektor Übergangen, weil Iq ja springt. Ist> dass, weil die Verrundung fehlt?
Die Verrundung ist ja aus deinem Paper die habe ich auch noch nicht
implementiert. Bei mir ist die DTC aus solange der Iq Sollwert unter
einer einstellbaren Schwelle ist und darüber richtet sich die DTC immer
nach dem Iq Sollwert. Der Istwert hat bei mir auch für Rückkopplungen
gesorgt.
Bert S. schrieb:> Wie genau machst du das mit der Verrundung? Wenn man das Zero Clamping,> noch implementiert, dann kommt man ja auf Va_comp, Vb_comp und Vc_comp,> jedoch bewegen wir uns in AN4863 direkt im Vq und Vd System und hin und> her transformieren wäre eher rechenintensiv. Gibt es da einen> einfacheren Trick für Zero Clamping und reicht das Zero Clamping für die> Verrundung?
So wie ich das Zero Clamping verstanden habe ist das in der AN4863
Methode schon drin. Die Autoren in dem Paper sind ja von den Phasen
ausgegangen und haben für die Phasen eine DTC gemacht und dass dann in
DQ transformiert und dort dann gesehen dass sie einen Offset haben und
diesen Offset kompensiert.
AN4863 ist durch die reine Vorsteuerung im DQ bereits offsetfrei und
braucht dieses Problem gar nicht zu lösen. Das meinte ich auch initial
als ich die AN vorgeschlagen habe.
Bert S. schrieb:> Was auch noch komisch ist, dass die SVPWM Sektoren um 30° verschoben> sind, ich sehe dass noch nicht genau ein.
Liegt an der Phase des Stromes von 90° und der 120° Phasenverschiebung
zwischen den Phasen. Siehe Figure 6 in der AN. Ich hab das Bild mal
angehängt.
Du bist da jetzt ungefähr so weit wie ich in dem Thema. Für die
Verrundung könnte man einmal für die komplette elektrische Umdrehung die
Vd/q Werte über die Gleichungen berechnen und in einer LUT speichern und
dann jagt man einen gleitenden Mittelwert mittig darüber um die Kanten
raus zu bekommen.
Die Frage ist wie lang man den Mittelwert macht und ob man die LUT nicht
eher für einen Sektor macht und dann Ende-zu-Ende stätig. Also wenn die
LUT in einer Schleife durchlaufen wird darf kein Sprung in den
Ausgangswerten sein.
Alex E. schrieb:> Liegt an der Phase des Stromes von 90° und der 120° Phasenverschiebung> zwischen den Phasen. Siehe Figure 6 in der AN. Ich hab das Bild mal> angehängt.
Danke dir, ich habe momentan noch das Problem, dass ich zwar die
richtigen Vq_comp und Vd_comp bekomme, aber diese noch nicht mit Ia,Ib
und Ic richtig in phase sind, wie im Anhang. Wenn Ia, Ib und Ic = Null
sind, dann bin ich nicht wie beim Paper beim starken Anstieg von
Vq_comp, sondern 180° verschoben. Wieso sehe ich noch nicht.
Alex E. schrieb:> Für die> Verrundung könnte man einmal für die komplette elektrische Umdrehung die> Vd/q Werte über die Gleichungen berechnen und in einer LUT speichern und> dann jagt man einen gleitenden Mittelwert mittig darüber um die Kanten> raus zu bekommen.> Die Frage ist wie lang man den Mittelwert macht und ob man die LUT nicht> eher für einen Sektor macht und dann Ende-zu-Ende stätig. Also wenn die> LUT in einer Schleife durchlaufen wird darf kein Sprung in den> Ausgangswerten sein.
Das klingt interessant, ich überlege mir auch mal was.
Was ich noch sehe in meinem Paper und deinem ist, dass bei meinem Paper
Vq_comp und Vd_comp von den Signalen her gerade vertauscht sind, bei dir
ist Vq_comp das Signal, dass um den Nullpunkt ändert, bei meinem Paper
ist Vq_comp das Wellenförmige Signal mit Offset. Was ist nun richtig?
Ich habe mal noch Vd_comp und Vq_comp getauscht, das scheint wesentlich
besser zu sein, es gibt mir weniger Verzehrung und ich spüre auch diesen
Übergang nicht mehr bei den Sektoren.
So wie ich das sehe, hat AN4863 wirklich gerade die beiden
Kompensationspannungen vertauscht.
Bert S. schrieb:> Ich habe mal noch Vd_comp und Vq_comp getauscht, das scheint wesentlich> besser zu sein, es gibt mir weniger Verzehrung und ich spüre auch diesen> Übergang nicht mehr bei den Sektoren.>> So wie ich das sehe, hat AN4863 wirklich gerade die beiden> Kompensationspannungen vertauscht.
Das erklärt Einiges. Jetzt wo du es schreibst habe ich bei mir die
Spannungen auch gedreht, ist aber schon lange her. Hätte da mal n
Kommentar machen müssen.
Wie passt du Uerr bei dir? Kannst du einfach nur die Totzeit annehmen?
Alex E. schrieb:> Wie passt du Uerr bei dir? Kannst du einfach nur die Totzeit annehmen?
Genau, ich habe meine 200ns Todzeit genommen und die Signale sehen
massiv besser aus. Denke Uerr passt mit dem 4/3 Faktor.
Ich habe Mal in meinem Code geguckt ich habe damals meine Sektor
Berechnung um 180° gedreht aber dass er gibt ja ein völlig anderes
Signal als Vd/q getauscht. Danke dafür, ich werde das nochmal genauer
untersuchen.
Hast du die DTC jetzt durchgehend aktiv?
Was ich momentan noch als Problem habe:
Mit DTC schwingt der Positionsregler stärker bei einem neuen
Referenzwert. Das Problem ist auch hier wieder das Umschalten von der
Richtungsabhängigkeit. Bei einem positiven Iq_ref müssen die Vd_com und
Vq_comp addiert werden und bei einem negativen Iq_ref subtrahiert, dies
führt dann zu mehr Instabilität.
Ich habe folgendes bereits versucht:
- Implementierung einer Hysterese, dies scheint aber nur teilweise zu
funktionieren, da ein Überschwinger durch das ein und ausschalten von
DTC verstärkt wird.
- Implementierung einer Rampe um den Nullpunkt für Vd_comp und Vq_comp,
das führt aber trotzdem zu ähnlicher Instabilität.
Evtl. ist auch der Unbelastete Motor das Problem, dort wird halt das
Überschwingen verstärkt. Hast du evtl. noch eine andere Idee, wie man
das perfekt stabil bekommt? Die Signale sehen soweit top aus und auch Id
hat wesentlich weniger Spikes drauf.
Bei einer Positionsregelung würde ich das an die Drehzahl hängen also
die Höhe der DTC wird von 10rpm bis runter zu 0 rpm abgeschwächt. Weil
die Störungen ohne DTC bei niedrigen Drehzahlen in der Bandbreite der
Stromregeler untergehen sollte.