Unerwartetes Verhalten des Lünberger-Beobachters für Drehstrom-Induktionsmotor

Ich habe Steuersoftware für Dreiphasen-Induktionsmotoren entwickelt. Die Steuersoftware implementiert den feldorientierten Steueralgorithmus. Der betrachtete Algorithmus orientiert sich am Rotorfluss. Um dieses Regelungsverfahren durchführen zu können, ist es notwendig, die Lage des Raumzeigers des Rotorflusses zu kennen. Leider ist es praktisch unmöglich, den Rotorfluss zu messen. Aufgrund dieser Tatsache ist es notwendig, sie zu berechnen. Ich habe mich für den Luenberger-Beobachter zu diesem Zweck entschieden. Der Beobachter berechnet die Schätzung der Komponenten des Raumzeigers des Statorstroms und des Rotorflusses (beide im stationären Bezugssystem) basierend auf der Kenntnis des Systemeingangs, dh der Statorphasenspannungen, und der Systemausgänge, dh der Statorströme, unter Verwendung der zugeführten tatsächlichen mechanischen Drehzahl durch den Geschwindigkeitssensor.

Mein Plan war, vor der Implementierung dieses Algorithmus ein Simulationsmodell im Scilab Xcos zu entwickeln. Zunächst habe ich ein Modell des Drehstrom-Asynchronmotors entwickelt, das die Regelstrecke simuliert. Das Dreiphasen-Induktionsmotormodell basiert auf seiner Zustandsraumbeschreibung bezogen auf das Inverse Γ gleichartiger Schaltkreis. Ich habe den Statorstrom und den Rotorfluss als Zustandsvariablen gewählt, dh das Zustandsraummodell des in der Simulation verwendeten Induktionsmotors hat die folgende Form

X ˙ = A X + B u

[ ich S a ich S β ψ R a ψ R β ] = [ R S + R R L L 0 R R L M L L 1 L L ω M 0 R S + R R L L 1 L L ω M R R L M L L R R 0 R R L M ω M 0 R R ω M R R L M ] [ ich S a ich S β ψ R a ψ R β ] + [ 1 L L 0 0 1 L L 0 0 0 0 ] [ u S a u S β ]

j = C X

[ ich S a ich S β ] = [ 1 0 0 0 0 1 0 0 ] [ ich S a ich S β ψ R a ψ R β ]

Das Motormodell beinhaltet auch die mechanische Gleichung

D ω M D T = 1 J ( T M T l ) = 1 J ( 3 2 P P [ ψ R a ich S a ψ R β ich S a ] T l ) ,
Wo P P ist die Anzahl der Polpaare und T l ist das Lastmoment (in meiner Simulation auf Null gesetzt).

Dann habe ich den Luenberger-Beobachter erstellt (zunächst im kontinuierlichen Zeitbereich)

X ^ ˙ = A X ^ + B u + L ( j j ^ ) j ^ = C X ^

Wo X ^ ist eine Schätzung des Systemzustands und j ^ ist eine Schätzung der Systemausgabe. Basierend auf Symmetrien in der Systemmatrix der L Matrix sollte folgende Form haben

L = [ l 1 l 2 l 2 l 1 l 3 l 4 l 4 l 3 ]

Die Elemente der L Matrix werden basierend auf der Anforderung bestimmt, dass die Beobachterpole sein sollen K mal schneller als die Pole des Systems ( K ist ein veränderbarer Parameter der Simulation). Mein Modell des Induktionsmotors basiert auf Zustandsraumbeschreibung und die Systemmatrix enthält Elemente, die von der mechanischen Geschwindigkeit abhängig sind. Diese Tatsache bedeutet, dass die Pole des Systems auch geschwindigkeitsabhängig sind. Zur Vereinfachung habe ich mich entschieden, Formeln für die Beobachtergewinne zu finden, die von der mechanischen Geschwindigkeit abhängen, K Parameter und Parameter des Ersatzschaltbildes der Maschine.

Die Formeln für die Beobachtergewinne l 1 , l 2 , l 3 , l 4 die ich verwendet habe, haben folgende Form und beziehen sich auf das inverse Gamma-Ersatzschaltbild:

l 1 = ( K 1 ) ( R S + R R L L + R R L M )
l 2 = ( K 1 ) ω M
l 3 = ( K 2 1 ) R S ( K 1 ) ( R S + R R + R R L L L M )
l 4 = ( K 1 ) L L ω M

Wo R S ist der Statorwiderstand, R R ist der Rotorwiderstand, L L ist die gesamte Streuinduktivität und L M ist die Magnetisierungsinduktivität der inversen Gamma-Ersatzschaltung des Induktionsmotors und ω M ist die mechanische Drehzahl des Rotors. Die Simulation selbst simuliert den direkten Anschluss des Drehstrom-Induktionsmotors an das Drehstromnetz.

Was die Simulationsergebnisse anbelangt, war meine Erwartung, dass der Beobachter die Schätzungen der Zustandsvariablen produzieren wird, die exakt mit den tatsächlichen Werten übereinstimmen. Leider ist dies nicht die Wahrheit. Die Simulation liefert folgende Ergebnisse mit K = 5 (auf allen Bildern unten gilt: schwarze Kurve entspricht dem tatsächlichen Wert und grüne Kurve entspricht dem Schätzwert)

  1. Alpha-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  2. Beta-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  3. Alpha-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
  4. Beta-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein

Aus meiner Sicht ein seltsames Verhalten, da zu Beginn der Simulation (während des Motoranlaufs) eine gute Übereinstimmung zwischen den geschätzten Werten und den tatsächlichen Werten der Zustandsgrößen besteht. Sobald die mit dem Motoranlauf verbundene Transiente verschwindet, tritt der Fehler zwischen den geschätzten und tatsächlichen Werten auf, der für die Komponenten der Statorströme ausgeprägter ist. Hat jemand eine Idee, wo man anfangen kann, nach der Ursache für die beobachteten Fehler zwischen geschätzten und tatsächlichen Werten im stationären Zustand zu suchen? Vielen Dank im Voraus für Ideen.

BEARBEITEN:

Simulationsergebnisse, wenn die Anfangsgeschwindigkeit auf die Nenngeschwindigkeit eingestellt ist (in meinem Fall 377 R A D S 1 ) Und K = 5

  1. Alpha-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  2. Beta-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  3. Alpha-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
  4. Beta-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein

Simulationsergebnisse, wenn die Anfangsgeschwindigkeit auf die Nenngeschwindigkeit eingestellt ist (in meinem Fall 377 R A D S 1 ) Und K = 2

  1. Alpha-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  2. Beta-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  3. Alpha-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
  4. Beta-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein

Simulationsergebnisse, wenn die Anfangsgeschwindigkeit auf die Nenngeschwindigkeit eingestellt ist (in meinem Fall 377 R A D S 1 ) Und K = 5.5

  1. Alpha-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  2. Beta-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  3. Alpha-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
  4. Beta-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein

Simulationsergebnisse, falls der Fehler bei der Polpaarzahl behoben wurde (Anfangsdrehzahl auf 0 gesetzt R A D S 1 Und K = 2 )

  1. Alpha-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  2. Beta-Komponente des Raumzeigers des Statorstroms Geben Sie hier die Bildbeschreibung ein
  3. Alpha-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
  4. Beta-Komponente des Raumzeigers des Rotorflusses Geben Sie hier die Bildbeschreibung ein
Versuchen Sie, eine Simulation der Verbindung zum Hauptnetz mit einer Anfangsgeschwindigkeit gleich der Nenngeschwindigkeit anstelle von Null durchzuführen, und teilen Sie uns dies mit.
@trying Danke für deine Reaktion. Könnten Sie mir bitte die Idee hinter Ihrem Test mit unterschiedlicher Anfangsgeschwindigkeit erklären?
Es kann sein, dass der Schätzfehler nicht mit dem Erlöschen des Startvorgangs zusammenhängt. Da der Beobachter von der mechanischen Drehzahl abhängig ist, kann der Schätzfehler auf ein schlechtes (oder falsches) Design des Beobachters bei Nenndrehzahl zurückzuführen sein. Die Simulation, die ich gefragt habe, scheint zu bestätigen, was ich sage.
@trying danke für die Klarstellung. Bedeutet es, dass das Problem wahrscheinlich in den Formeln für die Beobachtergewinne liegt, die ich oben erwähnt habe, oder die Formeln stimmen, aber der Wert des K Parameter falsch gewählt?
Es kann beides sein, aber ich werde es zuerst mit einer Anpassung von K versuchen.
Ich habe gerade zwei Versuche gemacht. Der erste mit niedrigerem Wert der K Parameter und der zweite mit höherem Wert der K Parameter. Es scheint mir, dass die Zunahme der K führt zu einem geringeren Fehler in der Schätzung. Leider denke ich, dass dieses Verhalten nichts über die Richtigkeit meiner Formeln für den Beobachtergewinn aussagt.
Können Sie den Rotorfluss nicht mit Hall-Strommessung messen?
@TonyStewartSunnyskyguyEE75 danke für deine Reaktion. Zur Zeit arbeite ich an einer Simulation des Regelalgorithmus. Dann werde ich den dreiphasigen Induktionsmotor im Regal verwenden. Eine Nutzung der Hallsensoren zur Rotorflussmessung ist somit nicht möglich.
Erfassen Sie dann den Statorflussstrom, der mit dem Drehmoment und der Position des Rotors gekoppelt ist
Genau das habe ich getan. Ich habe es oben versucht zu erklären.
@Steve Ein Schätzfehler ist zu erwarten. Sie kann durch Erhöhen der Verstärkung reduziert werden, auf die Gefahr hin, dass die Stabilität des geschlossenen Regelkreises verringert (oder verloren) wird, wenn sie für Steuerrückkopplung verwendet wird. Sie könnten auch ein Konstruktionsziel erstellen, bei dem K erhalten wird, um eine gegebene Nenngeschwindigkeit am besten abzuschätzen.
@VicenteCunha danke für deine Reaktion. Können Sie mir bitte erklären, warum der Schätzfehler zu erwarten ist? Meine Simulation modelliert ein Idealszenario, bei dem die elektrischen Parameter des Motors so festgelegt sind, dass das Systemmodell, das Teil des Beobachters ist, exakt mit der Realität übereinstimmt.
@Steve Sie erhalten nur dann keine Beobachtungsfehler für sinusförmige Signale, wenn die im Beobachter verwendeten Zustandsraummatrizen (A, B, C, D) das beobachtete System perfekt beschreiben. Ein Schätzer mit hoher Verstärkung wird sehr häufig bei nichtlinearen Systemen angewendet, um linearisierte Modellungenauigkeiten zu kompensieren. Wenn das beobachtete System perfekt linear ist und durch (A, B, C, D) beschrieben wird und Sie den Anfangszustand x(0) kennen, dann wäre überhaupt kein Luenberger-Gewinn erforderlich, um das System (L = 0) zu beobachten.
@Steve Als Ergänzung zu meinem vorherigen Kommentar zu keinem Luenberger-Gewinn gilt dies nur für Systeme ohne Störungen. Das Googeln nach "High-Gain Estimator" liefert einige Papiere, die allein auf der Zusammenfassung erklären, warum ein hoher Gewinn an Beobachtern / Schätzern wünschenswert wäre.
@VicenteCunha Ich habe in meiner Simulation genau dieselbe Zustandsraumbeschreibung des Induktionsmotors im Motormodell wie im Beobachter verwendet. Denken Sie, dass auch in diesem Fall ein Schätzfehler auftreten sollte?
@Steve Wenn das Beobachtermodell eine exakte Kopie des beobachteten Systems ist und beide von denselben Eingaben und Störungen beeinflusst werden und beide denselben Anfangszustand haben, sollte seitdem unabhängig von der Verstärkung kein Schätzfehler auftreten j ^ j wäre immer null. Vielleicht enthält ein Aspekt Ihrer Simulation unmodellierte Aspekte, die Sie nicht erkennen?
@VicenteCunha Ich habe den Verdacht, dass das Problem in den oben genannten Formeln für die von mir hergeleiteten Elemente der Rückkopplungsgewinne des Lünberger-Beobachters liegt. Sehen Sie auf den ersten Blick einen Fehler darin?
@Steve Keine Ahnung, da ich nicht weiß, was l1, l2, l3 und l4 in Ihrem System sind. Sie müssten die Zustandsraumgleichungen sowohl für das beobachtete System als auch für den Beobachter angeben.
@ VicenteCunha, es tut mir leid. Ich habe diese Informationen soeben angehängt.

Antworten (2)

Beispiel Beobachtersimulation Ihres Motorsystems + Beobachter, mit Scilab XCos:

// Numeric values of model
Rs=1; Rr=1; Ll=1; Lm=1; Wm=1;

// Matrices for states space model
a11 = -(Rs+Rr)/Ll; A11 = [a11 0; 0 a11];
a121 = Rr/(Lm*Ll); a122 = Wm/Ll; A12 = [a121 a122; -a122 a121];
a21 = Rr; A21 = [a21 0; 0 a21];
a221 = -Rr/Lm; a222 = -Wm; A22 = [a221 a222; -a222 a221];
b1 = 1/Ll; B1 = [b1 0; 0 b1]; B2 = [0 0; 0 0];
c1 = 1; C1 = [c1 0; 0 c1]; C2 = [0 0; 0 0];

A=[A11 A12; A21 A22]; B=[B1; B2]; C=[C1 C2];

// Plot transfer poles of the system
poles = spec(A);
plzr(motor_sys)
// 4 poles plotted, therefore motor_sys is fully observable.
// All poles have negative real parts, therefore motor_sys is stable.

// Observer gains using pole placement at 10 times the sys poles real parts.
obs_pp = 10*real(poles);
L = ppol(A', C', obs_pp)';

XCos-Schnipsel

Hängen Sie die Beobachtergewinne wie folgt an das Beobachtersystem an:Observer-System einrichten

Sie werden sehen, dass bei einem Null-Anfangszustand und ohne Störungen der Schätzfehler immer Null ist:

Kein Beobachterfehler

Wenn Sie den Anfangszustand ändern, sollten Sie einen anfänglichen Schätzfehler sehen, der schnell abklingen sollte. Wenn Sie dem Motorsystem zufällige Störungen hinzufügen oder absichtlich Modellierungsfehler/Nichtlinearitäten hinzufügen, werden Sie feststellen, dass der Beobachter anfängt, einige stationäre Schätzfehler zu präsentieren, die durch Erhöhen der Beobachterverstärkung reduziert werden können, mit vorübergehenden Fehlern (Peaking) als Handel -aus.

Ich weiß nicht, was in Ihrer Simulation schief gelaufen ist, ich hoffe, dieses Beispiel dient als guter Ausgangspunkt.

vielen Dank für Ihr Simulationsbeispiel. Soweit ich deine Simulation richtig verstehe, vermutest du, dass die ω M ist ein konstanter Parameter der Simulation. Diese Annahme entspricht leider nicht der Realität, da die ω M eine mechanische Drehzahl des Motors ist, die variiert. Ich habe versucht, diese Tatsache in meine Simulation einzubeziehen, indem ich die obige mechanische Gleichung, die Teil des Motormodells ist, integriert.
@Steve Bitte poste einen Screenshot deines Scilab XCos, damit ich dein Problem reproduzieren kann.
Endlich habe ich herausgefunden wo das Problem lag. Das Problem wurde dadurch verursacht, dass ich vergessen habe, die vom Induktionsmotormodell kommende mechanische Geschwindigkeit mit der Anzahl der Polpaare im Beobachter zu multiplizieren. Sobald ich das getan habe, habe ich das erwartete Verhalten erhalten (siehe Diagramme oben, wo die geschätzten Werte übereinander liegen).
@Steve Nett, Glückwunsch. Dieser Fehler war gleichbedeutend mit der Einführung eines Modellfehlers / unsicheren Parameters in Ihr System, sodass Sie unfreiwillig einen möglichen Anwendungsfall für High-Gain-Beobachter erleben mussten. Sie können Ihre eigene Frage beantworten, damit diese Frage einen offiziellen Abschluss hat.
Ich danke Ihnen für Ihre Hilfe.

Das Problem wurde dadurch verursacht, dass ich vergessen habe, die vom Induktionsmotormodell kommende mechanische Geschwindigkeit mit der Anzahl der Polpaare im Beobachter zu multiplizieren.