Wie kann man äquivalente PID-Regler-Koeffizienten von einem vorhandenen Black-Box-Regler ableiten?

Ich habe ein System mit 2 Eingängen und 2 Ausgängen, das ich als Reaktion auf 1. Schritte (eigentlich Quasi-Schritte, mit 50 ms Anstiegszeit + etwas Überschwingen) und 2. Sinuswellen von 0,5 bis 50 Hz, sowohl offen als auch aufgezeichnet habe geschlossener Kreislauf. In der Open-Loop-Konfiguration kann ich die internen Parameter basierend auf der Kenntnis der Systemstruktur ableiten. In der Closed-Loop-Konfiguration, ein Controller mit einer Verzögerung von ~ 60 ms bringt den Ausgang nahe an ein bestimmtes Ziel (das vom Eingangssignal getrennt ist), aber ich kann nicht herausfinden, was die Controller-Parameter sind. Ich habe versucht, es mit numerischen (Euler-)Simulationen als PID-Regler zu modellieren, aber es scheint schnell instabil zu werden, wenn entweder die I- oder D-Komponenten erhöht werden. Im Gegensatz dazu kann ich das Modell in Form einer Übertragungsfunktion erstellen und den Frequenzgang vorhersagen, aber ich weiß nicht, wie ich dann die Reaktion auf beliebige Eingaben vorhersagen kann (z. B. die Quasi-Schritte oder Sinuswellen, von denen sich das Steuersignal unterscheiden könnte die Eingabe).

Das System (u2 ist das "Ziel/Sollwert", F ist die Controller-Rückmeldung mit 60 ms Verzögerung, y2 ist nur ein zweiter Ausgang, den ich zum Vergleichen mit Daten verwende, um auf H zu schließen):

Blockdiagramm

Hier ist zum Beispiel die Ausgabe der Übertragungsfunktion (durchgezogen) gegenüber der numerischen Simulation (gestrichelt) des gesamten Modells im geschlossenen Regelkreis für eine 0,5-Hz-Eingabe:Ausgang

Meine Frage ist: 1. Gibt es eine bessere Möglichkeit, die PID-Parameter von F abzuleiten, als eine numerische Simulation + einen fminsearch (Matlab) -Ansatz zu verwenden?

  1. (Vielleicht ist dies eine separate Frage, sorry). Wenn nicht, wie kann man sich die Diskrepanz zwischen der implizit stabilen TF-Antwort und der oszillierenden numerischen Antwort vorstellen? Wie kann ich die Oszillationen in der numerischen Antwort vermeiden?

Antworten (2)

Wenn die Antwort eines linearen zeitinvarianten Systems auf eine Eingabe ist, ist die Faltung der Eingabe mit der Impulsantwort des Systems.

Wenn Sie also die Impulsantwort gemessen haben, können Sie die Ausgabe mithilfe von Faltung finden.

Wenn Sie die Bedingungen zum genauen Messen einer Impulsantwort nicht schaffen können, können Sie die Sprungantwort messen. Die Impulsantwort ist dann die Ableitung der Sprungantwort.

http://lpsa.swarthmore.edu/Transient/TransInputs/TransImpulseTime.html

Offensichtlich erfordert eine Brute-Force-Faltung mit fortschreitender Zeit zu viel Berechnung, da Sie über immer längere Zeiten numerisch integrieren würden.

Die Lösung besteht typischerweise darin, entweder den Umfang der Faltung zeitlich zu begrenzen, indem das System als Finite-Impulse-Response-System (FIR) modelliert wird.

Die andere Möglichkeit besteht darin, eine Art mathematische Abkürzung (z. B. Rekursion) zu verwenden, um die nächste Ausgabe basierend auf dem Eingangssignal und der vorherigen Ausgabe zu bestimmen. Dies ist die unendliche Impulsantwort (IIR).

Ja, es gibt eine Möglichkeit, herauszufinden, was die Parameter sind:

1) Sie müssen alle Ein- und Ausgänge aufzeichnen

2) Verwenden Sie die Systemidentifikation , um herauszufinden, was Ihre Anlagenparameter sind. Hier ist ein weiterer Link mit einer besseren Beschreibung

Wenn Sie keinen Kontrollhintergrund haben, werden die Konzepte schwer zu verstehen sein. Hier ist eine weitere gute Quelle, um den Hintergrund zu verstehen

Die Grundidee ist, dass Sie ein System haben j ( T ) = H ( T ) X ( T ) Wenn Sie die Laplace-Transformation nehmen, erhalten Sie j ( S ) = H ( S ) X ( S ) oder was du wirklich suchst j ( S ) / X ( S ) = H ( S ) .

Dies wird viel komplizierter, wenn Sie abtasten, Rauschen hinzufügen oder ein MIMO-System wie Ihres haben. Außerdem ist es wirklich nützlich, Daten zu haben, die die gesamte Systemdynamik erfassen. Wenn Sie die gesamte Bandbreite des Systems modellieren möchten, ist eine Rechteckwelle, eine Stufenfunktion oder ein Dirac-Delta (mit einem Hammer schlagen) besser. Diese haben einen Frequenzinhalt über alle Frequenzen hinweg, während eine Sinuswelle nur einen Frequenzinhalt in einigen wenigen Frequenzen hat.