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
Das Motormodell beinhaltet auch die mechanische Gleichung
Dann habe ich den Luenberger-Beobachter erstellt (zunächst im kontinuierlichen Zeitbereich)
Wo ist eine Schätzung des Systemzustands und ist eine Schätzung der Systemausgabe. Basierend auf Symmetrien in der Systemmatrix der Matrix sollte folgende Form haben
Die Elemente der Matrix werden basierend auf der Anforderung bestimmt, dass die Beobachterpole sein sollen mal schneller als die Pole des Systems ( 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, Parameter und Parameter des Ersatzschaltbildes der Maschine.
Die Formeln für die Beobachtergewinne die ich verwendet habe, haben folgende Form und beziehen sich auf das inverse Gamma-Ersatzschaltbild:
Wo ist der Statorwiderstand, ist der Rotorwiderstand, ist die gesamte Streuinduktivität und ist die Magnetisierungsinduktivität der inversen Gamma-Ersatzschaltung des Induktionsmotors und 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 (auf allen Bildern unten gilt: schwarze Kurve entspricht dem tatsächlichen Wert und grüne Kurve entspricht dem Schätzwert)
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 ) Und
Simulationsergebnisse, wenn die Anfangsgeschwindigkeit auf die Nenngeschwindigkeit eingestellt ist (in meinem Fall 377 ) Und
Simulationsergebnisse, wenn die Anfangsgeschwindigkeit auf die Nenngeschwindigkeit eingestellt ist (in meinem Fall 377 ) Und
Simulationsergebnisse, falls der Fehler bei der Polpaarzahl behoben wurde (Anfangsdrehzahl auf 0 gesetzt Und )
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)';
Hängen Sie die Beobachtergewinne wie folgt an das Beobachtersystem an:
Sie werden sehen, dass bei einem Null-Anfangszustand und ohne Störungen der Schätzfehler immer Null ist:
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.
Das Problem wurde dadurch verursacht, dass ich vergessen habe, die vom Induktionsmotormodell kommende mechanische Geschwindigkeit mit der Anzahl der Polpaare im Beobachter zu multiplizieren.
versuchen
Steve
versuchen
Steve
versuchen
Steve
versuchen
Tony Stewart EE75
Steve
Tony Stewart EE75
Steve
Vicente Cunha
Steve
Vicente Cunha
Vicente Cunha
Steve
Vicente Cunha
Steve
Vicente Cunha
Steve