Technologieaustausch

[Implementierung des bürstenlosen STM32-Motor-FOC von Grund auf] [Theorie] [3/6 Position, Geschwindigkeit, Stromsteuerung]

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Vorherige Sektion Durch die Ableitung von SVPWM haben wir die Fähigkeit erlangt, jede auf den Motorrotor wirkende Kraft zu kontrollieren. In diesem Abschnitt wählen wir die im vorherigen Abschnitt erhaltene SVPWM-Form der Rotor-dq-Achsen-Entkopplung, um die Rotorkraft angemessen zu steuern und das ultimative Ziel der FOC-Motorsteuerung zu erreichen: Positions-, Geschwindigkeits- und Stromsteuerung.

PID-Steuerung

Personen, die diesen Abschnitt lesen, verstehen höchstwahrscheinlich die PID-Steuerung (Proportionalproportional-, Integral-Integral- und Differential-Differentialsteuerung), die ebenfalls durch meine Fähigkeiten eingeschränkt wird. Ich werde hier keine vollständige Erklärung geben und auch keine fortgeschrittenen Steuerungsmethoden beinhalten.
Ob Position, Geschwindigkeit oder Strom des Motors, sie alle können als Regelparameter betrachtet werden.
Wenn der Echtzeitwert eines gesteuerten Parameters unter dem Zielwert liegt, muss aus intuitiver Sicht eine externe Kraft angewendet werden, um den gesteuerten Parameter zu erhöhen. Wenn die externe Kraft zu groß ist, wird der gesteuerte Parameter überschwingen, was dazu führt, dass die Schwingungsamplitude des gesteuerten Parameters in der Nähe des Zielwerts immer größer wird. Wenn die externe Kraft zu klein ist, erreicht der Parameter den Zielwert zu langsam. Daher ist es notwendig, eine geeignete äußere Kraft zu erhalten, damit die gesteuerten Parameter nicht immer heftiger schwingen und die Verstellgeschwindigkeit nicht zu langsam wird. Aus dieser intuitiven Steuerungsidee ergibt sich das P in PID. Wenn Sie einfach die P-Steuerung verwenden, stellen Sie die Größe der externen Kraft ein = die Differenz zwischen dem gesteuerten Parameter und dem Zielwert * P-Koeffizient. Es ist sehr intuitiv zu sagen, dass die ausgeübte externe Kraft umso größer ist. Wenn der P-Koeffizient relativ klein eingestellt ist, schwingt der gesteuerte Parameter zwar nicht ständig und kann sich langsam auf den Zielwert stabilisieren, die Anpassungsgeschwindigkeit ist jedoch zu langsam. Zu diesem Zeitpunkt kann die D-Steuerung von PID hinzugefügt werden Der gesteuerte Parameter schrumpft ursprünglich schnell auf den Zielwert.
Betrachten wir die D-Steuerung aus einer intuitiven Perspektive. Wenn sich der gesteuerte Parameter unter reiner P-Steuerung dem Zielwert nähert oder ihn überschreitet, hilft eine Korrekturkraft in der entgegengesetzten Richtung zur Geschwindigkeit, dass der gesteuerte Parameter in die Nähe des Zielwerts bremst Bremse schneller auf Zielwert. Diese Korrekturkraft in entgegengesetzter Richtung zur Geschwindigkeit ist D-Steuerung. Nach dem Hinzufügen der D-Steuerung ist die externe Steuerkraftgröße = die Differenz zwischen dem gesteuerten Parameter und dem Zielwert * P-Koeffizient der gesteuerten Parametergeschwindigkeit * D-Koeffizient. Bei Verwendung einer reinen D-Steuerung erhält der gesteuerte Parameter keine externe Kraft, da die Geschwindigkeit des gesteuerten Parameters im Anfangszustand 0 ist. Es ist auch ersichtlich, dass die P-Steuerung externe Kraft bereitstellt und die D-Steuerung die externe Kraft einschränkt. Wenn der D-Koeffizient zu groß gewählt wird, kann eine geringe Geschwindigkeit eine große äußere Kraft verursachen. Wenn der D-Koeffizient zu klein gewählt wird, reicht er nicht aus, um die äußere Kraft der P-Steuerungsproduktion einzuschränken, und die gesteuerten Parameter werden langsamer stabilisieren.
Betrachten wir die I-Steuerung aus einer intuitiven Perspektive. Wenn der gesteuerte Parameter belastet wird, reicht die durch die einfache P-Steuerung bereitgestellte externe Kraft möglicherweise nicht aus, um die Last zu tragen. Daher kann ein solcher Mechanismus hinzugefügt werden, um den Unterschied zwischen zu verringern Der gesteuerte Parameter und der Zielwert werden über die Zeit akkumuliert und die Leistung ermittelt, die erforderlich ist, damit der gesteuerte Parameter den Zielwert erreicht, wenn eine Last vorliegt. Ich kontrolliere diesen Mechanismus. Nach dem Hinzufügen der I-Steuerung ist die Größe der externen Steuerkraft = die Differenz zwischen dem gesteuerten Parameter und dem Zielwert * P-Koeffizient, die Geschwindigkeit des gesteuerten Parameters * D-Koeffizient, die Differenz zwischen dem gesteuerten Parameter und dem Zielwert akkumuliert sich über die Zeit * I Koeffizient.
Bei der Steuerung des Motors ohne besondere Umstände kann die PID-Steuerung nur die Kraft der q-Achse steuern, da die d-Achse nicht zur Drehung des Motors beiträgt, und die d-Achse kann gesteuert oder der Ausgang gesteuert werden direkt auf 0 gesetzt werden.

Filter

Bei der Drehzahlregelung und Stromregelung sind Drehzahl und Strom instabil und ändern sich schnell. Der folgende Wert ist beispielsweise ein direkt berechneter Wert der Motordrehzahl und schwankt um den wahren Wert . Wenn ein solcher Wert direkt verwendet wird, führt dies zu starken Schwankungen des PID-Ausgangs.
Fügen Sie hier eine Bildbeschreibung ein
Das Bild unten zeigt, dass es nach dem Filtern näher am wahren Wert liegt:Fügen Sie hier eine Bildbeschreibung ein Es gibt viele Filtermethoden, wie z. B. Tiefpassfilterung und Kalman-Filterung. Das Wesentliche besteht darin, einen Wert nahe dem tatsächlichen Wert in mit Rauschen vermischten Daten zu schätzen. Da das Filtern ein sehr großes Thema ist, wird das Prinzip in diesem Abschnitt nicht erläutert. Sie können den Code im folgenden praktischen Teil direkt anzeigen. Wir erinnern Sie lediglich daran, dass Filterberechnungen durchgeführt werden müssen, bevor der PID-Regler eingegeben wird.

individuelle Positionskontrolle

Position bezieht sich auf den Winkel. Es ist zu beachten, dass es zwei physikalische Winkel gibt, einen ist der Motorwinkel und der andere ist der Rotorwinkel. Der Motor-Encoder ist am Rotorgehäuse montiert, sodass der Encoder den Winkel des Rotorgehäuses ermittelt und sich der Rotor im Inneren befindet. Da das Rotorgehäuse und der Rotor fest miteinander verbunden sind, besteht ein fester Versatz zwischen den beiden Winkeln . Bei der Installation kann der Nullpunkt des Geräts nicht genau auf den Rotor-Permanentmagneten ausgerichtet sein. Der Encoderwinkel wird vom Encoder bereitgestellt, auch der Rotorwinkel kann bekannt sein. Wie Sie diesen festen Offset erhalten, erfahren Sie im anschließenden praktischen Teil. In diesem Abschnitt müssen Sie nur den theoretischen Berechnungsteil absolvieren. Der resultierende magnetische Vektor wirkt auf den Permanentmagneten des Rotors, sodass die theoretische Berechnung auf dem Rotorwinkel basiert.
Fügen Sie hier eine Bildbeschreibung ein
Es gibt zwei Methoden zur Rotorpositionsregelung:

PID-Methode:
Die intuitive Idee besteht darin, die q-Achse des Rotors zu verwenden, um den Rotor kontinuierlich nach links und rechts zu ziehen. Sobald der Rotor von der Zielposition abweicht, wenden Sie eine umgekehrte Kraft auf die q-Achse an, um ihn zu ziehen die Zugkraft und der Rotor kehrt in die Zielposition zurück.
Vorteile: Die Q-Achse kann eine größere Kraft bereitstellen und die Positionssteuerung ist schneller und leistungsfähiger.
Nachteile: Da sich die q-Achse um 90 Grad vom magnetischen Vektor des Rotor-Permanentmagneten unterscheidet, muss die Echtzeitposition (Winkel) des Rotors bekannt sein.
Da die Echtzeitposition des Rotors mit einem Encoder leicht zu ermitteln ist, wird in den meisten Fällen PID zur Steuerung der Position verwendet.
Fügen Sie hier eine Bildbeschreibung ein
Das FOC-Steuerungsblockdiagramm eines separaten Standorts ist unten dargestellt. Was das Bild bedeutet, ist, eine Zielposition einzugeben, die Differenz mit dem vom Encoder berechneten Winkel zu berechnen und dann den PID-Regler einzugeben, um nur die Rotor-Q-Achsen-Intensität zu steuern, die D-Achsen-Intensität wird direkt auf 0 gesetzt und Schließlich wird die Intensität der dq-Achse (0 ~ 1) in die zuvor abgeleitete SVPWM-Funktion eingegeben, und die Ausgabe ist der PWM-Arbeitszyklus des UVW-Brückenarms.Zu beachten ist hierbei die eingegebene Zielposition θ in theta_{in}θInEs kann sich um den Rotorwinkel oder Encoderwinkel oder Multiturn-Winkel handeln, sofern er mit der Rückmeldung in Zusammenhang steht θ ThetaθBehalten Sie einfach den gleichen Winkel bei.
Fügen Sie hier eine Bildbeschreibung ein

Erzwungener Widerstand der D-Achse:
Die Kernidee besteht darin, die Spule künstlich zu steuern, um einen magnetischen Zielspulenvektor zu erzeugen, und die d-Achse des Permanentmagneten wird zur Zielposition angezogen. Beachten Sie, dass diese Methode die d-Achse zur Zielposition zieht.
Vorteile: Da die Zielposition generiert wird, ist es nicht erforderlich, den Rotorwinkel zu kennen, der Rotor wird natürlich davon angezogen.
Nachteile: Die Tangentialkraftkomponente ist gering und eine leichte äußere Tangentialkraft kann dazu führen, dass sich der Rotor offensichtlich aus der Position bewegt.
Fügen Sie hier eine Bildbeschreibung ein

Individuelle Geschwindigkeitsregelung

Die Verwendung der D-Achsen-Widerstandsmethode zur Geschwindigkeitssteuerung ist nicht geeignet, da der Zweck des D-Achsen-Widerstands nicht darin besteht, einen Encoder zu verwenden. Ohne die Encoderdaten ist es schwierig, die Geschwindigkeit zu berechnen. Die Geschwindigkeitssteuerung kann die PID-Steuerungsmethode verwenden. Da sich der Geschwindigkeitswert jedoch während der Motordrehung relativ instabil ändert und die D-Steuerung proportional zur Änderung des gesteuerten Parameters ist, wird im Allgemeinen nur die PI-Steuerung verwendet.
Die Berechnungsmethode der Geschwindigkeit ist nämlich sehr einfach Aktueller Winkel − Letzter aufgezeichneter Winkel Δ t frac{Aktueller Winkel - Letzter aufgezeichneter Winkel}{Delta{t}}ΔTaktuellen WinkelLetzter aufgezeichneter Winkel
Eine Geschwindigkeitsregelung kann erreicht werden, indem die Differenz zwischen der Zielgeschwindigkeit und der Echtzeitgeschwindigkeit in die PI-Regelung eingegeben wird.
Das FOC-Steuerungsblockdiagramm der einzelnen Geschwindigkeit ist unten dargestellt.
Fügen Sie hier eine Bildbeschreibung ein

Individuelle Stromsteuerung

Der Strom des Motors stellt das Drehmoment dar. Nachdem die Kraft des Rotors von der dq-Achse entkoppelt wurde, kann festgestellt werden, dass nur die q-Achse zur Drehung des Motors beiträgt und nur die q-Achse ein Drehmoment erzeugt. Daher muss nur der q-Achsenstrom gesteuert werden Steuern Sie das Motordrehmoment. Wenn auch der d-Achsen-Strom gesteuert wird, kann die Motorstromauslastung verbessert, die Wärmeerzeugung reduziert und die maximale Drehmomentabgabe des Motors erhöht werden.
Fügen Sie hier eine Bildbeschreibung ein
Ermitteln Sie den Motorstrom:
Die Rotor-dq-Achse ist ein abstraktes Konzept, das zur Erleichterung der Entkopplung der Rotorkraft verwendet wird. Der Strom, der direkt erfasst werden kann, ist der Strom auf der Motorphasenleitung Der Strom kann anhand des Phasenleitungsstroms berechnet werden.
Es gibt viele Möglichkeiten, den Phasenleitungsstrom zu erkennen. Die beiden gebräuchlichsten Methoden sind: 1. Die Stromerkennung wird zwischen den Leistungsröhren des oberen und unteren Brückenarms platziert, was als Online-Erkennung bezeichnet wird. 2. Die Stromerkennung wird zwischen dem Unterarm und GND platziert, was als Low-Side-Erkennung bezeichnet wird.
Fügen Sie hier eine Bildbeschreibung ein
aufgrund eines Knotens流出电流 流入电流=0 Daher werden für drei Phasenleitungen nur zwei Stromerfassungseinheiten benötigt. Es ist jedoch am besten, drei Stromerkennungseinheiten für die Low-Side-Erkennung zu verwenden, denn wenn der PWM-Arbeitszyklus eines bestimmten Brückenzweigs 1 oder nahe bei 1 liegt, fließt kein Strom durch den unteren Brückenzweig oder der Strom fließt instabil sein, und die drei Phasenleitungen können nur dann normal Strom sammeln, wenn drei Stromerkennungseinheiten vorhanden sind. Zwei der Stromerkennungseinheiten können entsprechend der Einschaltdauer abgelesen werden Zyklus, und der andere wird unter der Annahme berechnet, dass die Summe der Ströme 0 ist. Bei der Online-Erkennung besteht dieses Problem nicht, da unabhängig davon, ob der untere Brückenarm geschlossen ist oder nicht, immer Strom durch die Phasenleitung fließt. Da die Spannung an der Online-Erkennungsposition relativ groß ist, muss die Stromerkennungseinheit für die Online-Erkennung einer großen Spannung standhalten können und ist relativ teuer.

Nachdem Sie die drei Phasenleitungsströme erhalten haben, müssen Sie als Nächstes eine Möglichkeit finden, diese in dq-Achsen-Ströme umzuwandeln.Der Phasenleitungsstrom kann auf die dq-Achse projiziert werden, so dass der dq-Achsenstrom direkt erhalten werden kann. Die derzeitige gängige Methode besteht jedoch darin, zuerst die dq-Achse darauf zu projizieren α alphaαAchse und β betaβAchse (dieser Schritt wird Clark-Transformation genannt) und dann α alphaαAchse und β betaβDer Achsenstrom wird auf die dq-Achse projiziert (dieser Schritt wird als Parktransformation bezeichnet), da er in fortgeschritteneren sensorlosen FOC-Positionen verwendet wird α alphaαAchse und β betaβAchsstrom.

Clark-Transformation:
Der Drehstrom Ich u, Ich v, Ich w, Ich_u, Ich_v, Ich_wICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHSie,ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHgegen,ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHmProjekt zu I α , I β I_alpha,I_betaICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHα,ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβWie aus der geometrischen Beziehung in der folgenden Abbildung ersichtlich ist, lautet der Projektionsausdruck:
{ I α = I u − I v ∗ cos ⁡ 6 0 ° − I w ∗ cos ⁡ 6 0 ° I β = I v ∗ cos ⁡ 3 0 ° − I w ∗ cos ⁡ 3 0 °{ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHα=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHSieICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHgegencos60GradICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHmcos60GradICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβ=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHgegencos30GradICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHmcos30Grad {ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHα=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHSieICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHgegencos60°ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHmcos60°ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβ=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHgegencos30°ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHmcos30°
Fügen Sie hier eine Bildbeschreibung ein

Parkumgestaltung:
Wille I α , I β I_alpha,I_betaICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHα,ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβDie Achse wird auf die dq-Achse projiziert (tatsächlich multipliziert mit einer Rotationsmatrix). Wie aus der geometrischen Beziehung in der folgenden Abbildung ersichtlich ist, lautet der Projektionsausdruck:
{ I d = I α ∗ cos ⁡ θ I β ∗ sin ⁡ θ I q = − I α ∗ sin ⁡ θ I β ∗ cos ⁡ θ{ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHD=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHαcosθ ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβSündeθICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHQ=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHαSündeθ ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβcosθ {ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHD=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHαcosθ ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβSündeθICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHQ=ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHαSündeθ ICHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHβcosθ
Fügen Sie hier eine Bildbeschreibung ein

Das FOC-Steuerungsdiagramm eines einzelnen Stroms ist wie unten dargestellt. Da die Stromänderung relativ instabil ist, wird hier normalerweise nicht die D-Steuerung in Bezug auf die Änderungsgeschwindigkeit des gesteuerten Parameters verwendet, sondern nur die PI-Steuerung.
Fügen Sie hier eine Bildbeschreibung ein

Positions-Geschwindigkeits-Strom-Kaskadenregelung

Wenn eine solche Anforderung besteht: Geben Sie bei der Steuerung der Position die maximale Geschwindigkeit und den maximalen Strom an, wenn der Motor in die Position zurückkehrt, oder geben Sie bei der Steuerung der Geschwindigkeit den maximalen Strom an, wenn der Motor die Zielgeschwindigkeit erreicht die Position-Geschwindigkeit-Strom-Saitenpegelsteuerung. Die Kaskadenregelung steuert hier nicht den Motor, um einen bestimmten Stromwert oder Geschwindigkeitswert zu erreichen, sondern erfordert, dass der Motor während des Steuervorgangs den maximalen Stromwert oder maximalen Geschwindigkeitswert erreicht, da es unmöglich ist, den Motor in einer Position zu halten. Es gibt Geschwindigkeit oder es gibt Strömung.
Kaskadenregelung bedeutet, dass der Eingang des aktuellen Regelkreises der Ausgang des vorherigen Regelkreises ist. Am Beispiel der Kaskadenpositionsregelung sieht das Regelblockdiagramm wie folgt aus:
Fügen Sie hier eine Bildbeschreibung ein


Der theoretische Teil ist nun abgeschlossen. Wir haben die Berechnungsmethode von SVPWM und den Steuerungsprozess für Position, Geschwindigkeit und Strom abgeschlossen. In der Praxis werden wir jedoch auf verschiedene Probleme stoßen, z. B. auf die Reihenfolge der Phasenlinien Verglichen mit der Implementierung, der aktuellen Abtastzeit, der Peripheriekonfiguration usw. werden im folgenden praktischen Teil die kostengünstigen King-Tools smt32f103c8t6 und stm32cube ohne Verwendung der Motorbibliothek verwendet, um eine vollständige Implementierung zu erreichen FOC-Steuerung von Grund auf.