Wie kann eine algebraische Schleife in der Regelkreissimulation verhindert werden?

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

Geben Sie hier die Bildbeschreibung ein

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)

    Geben Sie hier die Bildbeschreibung ein

  • 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

    Geben Sie hier die Bildbeschreibung ein

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

    Geben Sie hier die Bildbeschreibung ein

    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)

    Geben Sie hier die Bildbeschreibung ein

    Ich habe die Verzögerung dieser Blöcke auf einen kleinen Bruchteil der Abtastperiode eingestellt ( T S = 0,0001 S und die Verzögerung eingestellt wurde 0,1 T S ). 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?

Erstens ist der Zustandsschätzungsfehler im Beobachter trotz des „kleinen“ Werts der Verzögerung hoch. “ Können Sie dieser Aussage weitere Einzelheiten hinzufügen? Observer nimmt eine Kopie der Anlageneingabe uals Eingabe sowie eine Kopie der Anlagenausgabe yals weitere Eingabe. Wenn alle diese ( usalpha, isalpha, wmusw.) 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?

Antworten (1)

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.

  1. Speicherblock (Verzögerungsblock in XCos)
  2. Übertragungsfunktion 1 1 μ S + 1

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

danke für deine reaktion. Soweit ich deine Antwort richtig verstanden habe, suggerierst du im ersten Punkt direkt, was ich schon gemacht habe. Was Ihren zweiten Punkt betrifft, schlagen Sie vor, alle Verzögerungsblöcke in meinem Diagramm zu entfernen und stattdessen den Tiefpassfilter erster Ordnung mit kleiner Zeitkonstante (in Bezug auf die Zeitkonstanten der Anlage) vor den S & H-Blöcken zu verwenden. Ist das korrekt?
Ich habe das getan, was ich oben als im zweiten Punkt beschrieben habe, und es hat meine Probleme gelöst. Vielen Dank für Ihre Hilfe JonRB.