Ich habe eine Simulation der feldorientierten Regelung des Drehstrom-Induktionsmotors entwickelt. Die Simulation wird in Scilab/Xcos (v5.5.2) entwickelt, einer kostenlosen Matlab/Simulink-ähnlichen Software. Das Diagramm meiner Simulation in der Xcos-Toolbox sieht so aus
Wie Sie sehen können, besteht die Simulation im Wesentlichen aus den unten genannten Hauptblöcken:
IM-Modell
Dynamisches Modell des Drehstrom-Induktionsmotors
Steueralgorithmus
Erzeugt Komponenten der Referenzstatorspannung im stationären Referenzrahmen basierend auf dem gewählten Regelalgorithmus (Skalarregelung mit offener Schleife x feldorientierte Regelung)
Beobachter
Berechnet Schätzung der Komponenten des nicht messbaren Rotorflusses und berechnet darauf basierend die Orientierung des Raumzeigers des Rotorflusses für den feldorientierten Regelalgorithmus
Der Block a) ist ein kontinuierliches Zeitbereichssystem und die Blöcke b) und c) sind diskrete Zeitbereichssysteme (sie modellieren Software). Aufgrund dieser Anordnung sind die Blöcke b) und c) von der kontinuierlichen Welt (Anlagenbereich) über den ADC-Wandler (modelliert über Sample-and-Hold-Blöcke) an ihren Eingängen und über den DAC-Wandler (Haltealgorithmus erster Ordnung) an ihren Ausgängen getrennt .
Die Simulation wurde in zwei Schritten entwickelt:
Induktionsmotor, der über einen skalaren Steueralgorithmus mit offener Schleife gesteuert wird
Die Simulation funktioniert korrekt, da kein Feedback vorhanden ist
Induktionsmotor gesteuert über feldorientierten Regelalgorithmus
Zuerst bin ich auf ein Problem mit dem Fehler der algebraischen Schleife gestoßen
Basierend auf meiner Erfahrung mit Matlab/Simulink habe ich eine Zeitverzögerung in den Regelkreis eingefügt (siehe die Blöcke "Verzögerung" im ADCs-Teil)
Ich habe die Verzögerung dieser Blöcke auf einen kleinen Bruchteil der Abtastperiode eingestellt ( und die Verzögerung eingestellt wurde ). Das Einfügen dieser Verzögerung hat das Problem mit der algebraischen Schleife gelöst, aber es hat auch zwei unerwünschte Tatsachen verursacht. Erstens ist der Zustandsschätzungsfehler im Beobachter trotz des "kleinen" Werts der Verzögerung hoch. Zweitens führte die Einfügung der Verzögerung zu einer enormen Erhöhung der Simulationszeit.
Ich habe auch über eine Neuanordnung des Simulationsdiagramms nachgedacht, um die algebraische Schleife von Natur aus zu vermeiden, aber ich sehe keine Möglichkeit, wie das geht - letztendlich simuliere ich die Rückkopplungsschleife.
Hat jemand eine Idee, wie man die algebraische Schleife so aufteilen kann, dass der Zustandsschätzungsprozess im Beobachter nicht beschädigt wird und auch die Simulationszeit nicht zu sehr verlängert wird?
Algebraische Schleifen treten auf, wenn die Berechnungen des Ist-Zustands von der Ausgabe des Ist-Zustands abhängen – wie kann es eine Berechnung liefern, wenn es keine Anfangsbedingung gibt?
Das Aufbrechen solcher Schleifen kann so einfach sein wie das Platzieren eines Blocks, der eine anfängliche Ausgabe liefert.
Beide liefern eine anfängliche Ausgabe von 0 und ermöglichen somit, dass die nachgelagerten Berechnungen initialisiert werden, um dann in sich selbst zurückzukoppeln.
Wenn Ihr Solver ein Festschritt ist, ist ein Speicherblock (Verzögerungsblock) die beste Lösung, da er das Signal um 1 Schritt verzögert. Wenn der Solver jedoch variabel ist, dann ist eine Übertragungsfunktion mit geeignet hoher Zeitkonstante die bessere Lösung.
Wo soll man einen solchen Block platzieren? auf alle Rückmeldungen, die vom Regelkreis verwendet werden
AJN
u
als Eingabe sowie eine Kopie der Anlagenausgabey
als weitere Eingabe. Wenn alle diese (usalpha
,isalpha
,wm
usw.) gleich verzögert und einem Beobachter zugeführt werden, warum sollte dies einen Einfluss auf den Schätzfehler haben ? Wird der Schätzfehler durch Vergleich mit dem wahren Wert berechnet, der fairerweise auch verzögert werden sollte, wenn er für den Vergleich mit einem verzögert laufenden Beobachter verwendet wird?