So stimmen Sie einen PID-Regler auf einen nichtlinearen Prozess ab

Ich habe einen nichtlinearen thermischen Prozess (nichtlineare Strahlung wird mit steigender Temperatur immer präsenter), auf den ich einen PID-Regler abstimmen möchte. Ich möchte die Temperatur so genau wie möglich steuern.

Ich habe geplant, den Temperaturbereich in N pseudolineare Bereiche (zu definieren) zu unterteilen und für jeden dieser Temperaturbereiche: ein Modell erster Ordnung mit einem kleinen Temperaturschritt anzupassen und die PID-Parameter zu berechnen, die diesem Modell entsprechen. Die PID-Parameter würden abhängig von der Temperatur des Prozesses automatisch umgeschaltet*.

Mein Problem ist folgendes: Betrachten Sie zum Beispiel den 70 ° C-Checkpoint. Um diese Temperatur zu erreichen, fließen bereits P Watt. Ich werde dP Watt injizieren, um die Temperatur um 1°C zu erhöhen. Ich notiere mir dann die Zeitkonstante und die Steady-State-Verstärkung beträgt 1/dP °C/W. [Könnten Sie sich bitte einen Moment Zeit nehmen, um darüber nachzudenken, ob das richtig ist?] Schließlich werde ich die PID auf diese Anlage einstellen, um die Parameter für diesen Temperaturbereich zu erhalten, und zu den anderen Bereichen übergehen.

Nehmen wir nun an, dass der Prozess 70 °C erreicht. Die neuen Parameter werden geladen und der Integralzähler zurückgesetzt. Der Fehler kann 1 °C betragen, aber die erforderliche Leistung ist viel höher als die, um 21 °C zu erreichen, es ist sicher, dass der Controller weniger als P Watt benötigt. Dies bedeutet, dass die Temperatur stark sinken wird, bevor der integrale Term P Watt erfordert, und nur dann wird das zusätzliche dP-Watt den Prozess schließlich auf 71 °C bringen (und es wird sicherlich überschießen). Je größer P im Vergleich zu dP ist, desto schlimmer wird es.

Es scheint fast so, als müssten die Heizungen mit der Summe aus Reglerausgang und der zum Halten der aktuellen „Referenztemperatur“ (z. B. 70°C) erforderlichen Leistung angesteuert werden. Aber handelsübliche Controller bieten das nicht, also muss es einen anderen Weg geben.

Was vermisse ich? Was ist der richtige Weg?

*: Es ist effektiv Gain Scheduling .

Der PID-Regler ist im Allgemeinen für lineare Systeme vorgesehen. Es ist robust genug, um auch einige nichtlineare Systeme um einen "fast linearen" Betriebspunkt herum zu steuern. Wenn dies nicht der Fall ist, können verschiedene Techniken verwendet werden, um die geregelte Strecke zu linearisieren (siehe "Feedback-Linearisierung" oder einige innere Schleifen einführen).
Vielen Dank für Ihren Kommentar. Das versuche ich zu erreichen: Verwenden Sie einen PID-Regler in einem "fast linearen" Temperaturbereich. Ich habe mich schon mit diesen Schlüsselwörtern umgesehen, aber ohne viel Glück.
Anstatt mehrere Modelle zu trainieren, können Sie den Eingangswert durch eine "Linearisierungsfunktion" führen, bevor Sie ihn an den PID-Controller weitergeben, und ihn darauf basierend trainieren?
Dein Ansatz klingt für mich OK. Sie werden die Verstärkung und die Zeitkonstante in Abhängigkeit von der Temperatur anpassen. Sie müssen darüber nachdenken, was an den Kreuzungspunkten passiert. Haben Sie etwas gebaut, das nicht so funktioniert, wie Sie es gerne hätten? Ein Regelkreis kann viele Nichtlinearitäten verbergen. Und vielleicht geht es dir gut, ohne schick zu werden.
Warum ist die Strahlung nichtlinear? Wenn der Ofen Temperatur verliert, ist der Leistungsverlust linear Q=mc*delta_T. Wenn Ihr System nur undicht ist, bleiben fast alle Konstanten wie Totzeit, Anstiegszeit, außer dass die Verstärkung verringert wird. Sie könnten einfach die Kp-Variable Kp(T_actual) zu einer linearen Funktion von Kp_initial und Kp_final machen.
George Herold: Das System ist noch nicht gebaut, das beschäftigt mich schon vor den Tests. Ich habe versucht, ein Simulink-Modell zu erstellen, aber einerseits haben Übertragungsfunktionen keinen IC und ich kann angesichts der geringen Verstärkung der Anlage keinen stabilen Zustand mit der maximal zulässigen Leistung erreichen. und ich weiß nicht, was der Zustandsvektor für das Zustandsraummodell ist. @Marko Bursic: Wärme kann entweder durch Konvektion, Leitung oder Strahlung fließen. Mein System hat eine Vakuumlücke, sodass die Strahlung dominant ist und die Strahlung nichtlinear ist (vierte Potenz).

Antworten (3)

Wie stimmt man einen PID-Regler auf einen nichtlinearen Prozess ab?

Du nicht. Sie linearisieren den Prozess und lassen dann den PID-Regler mit den linearen Werten arbeiten.

Mit "den Prozess linearisieren" meine ich nicht, den Prozess selbst tatsächlich linear zu machen. Das geht normalerweise aus physikalischen Gründen nicht. Sie können jedoch etwas Nichtlineares zwischen den Ausgang des PID-Reglers und den Prozesseingang legen, sodass der PID-Ausgang den Prozess aus Sicht des PID-Reglers linear regelt.

Ein solcher Linearisierer muss nicht sehr genau sein, da er sich innerhalb der Rückkopplungsschleife befindet. Sein Zweck ist es, den Anschein einer ungefähr konstanten Verstärkung über den gesamten Dynamikbereich der Steuerung zu erwecken. Ein einfacher und allgemeiner Weg ist eine stückweise lineare tabellenbasierte Funktion. 16 oder 32 Segmente reichen normalerweise für alles andere als sehr stark nichtlineare Prozesse.

Das Worst-Case-Beispiel, auf das ich gestoßen bin, war die Steuerung des Stroms durch eine Elektronenröhre, indem geändert wurde, wie stark der Kathodenfaden angesteuert wurde. Die Funktion der Kathodentemperatur zum Elektronenstrahlstrom ist stark nichtlinear, und das System, das den Kathodenfadenstrom steuert, war ebenfalls etwas nichtlinear. In diesem Fall war es zu schwierig, dieses ganze Durcheinander vorherzusagen, also habe ich während der Produktion ein Kalibrierungsverfahren verwendet, das die Steuerwerte des Filamentantriebs durchlaufen, den Strahlstrom für jeden gemessen und dann daraus eine 32-Segment-Nachschlagetabelle berechnet hat. Es funktionierte sehr gut, und wir konnten den Strahlstrom-PID-Regler für eine gute Reaktion über den gesamten Bereich abstimmen.

Ohne eine Linearisierungsfunktion vor dem Prozess müssen Sie den PID-Regler auf Stabilität am höchsten inkrementellen Verstärkungspunkt des Prozesses abstimmen. Dies führt dann an anderen Stellen zu einem sehr gedämpften Verhalten.

Hinzugefügt

Nichts in Ihrer aktualisierten Frage sagt etwas darüber aus, warum die obige Methode immer noch keine gute Idee und anwendbar ist. Sie sagen, Sie verwenden einen analogen Controller. Meine erste Reaktion ist : „Die 1980er sind lange vorbei, mach das nicht.“ Der PID-Regler und der Anlagenlinearisierer können jedoch unabhängig sein.

Anscheinend ist der Anlageneingang Strom und der Ausgang Temperatur. Messen Sie die typische Dauertemperatur bei verschiedenen Leistungsstufen. Daraus können Sie die Funktion berechnen, die die linearisierte "Leistung" in die tatsächliche Leistungsaufnahme der Anlage umwandelt. Der analoge PID-Regler gibt vermutlich eine leistungsproportionale Spannung aus. Alles, was Sie tun müssen, ist, eine Blackbox in Übereinstimmung mit dieser Spannung einzufügen, die das lineare Maß für die Übersetzung des tatsächlichen Leistungspegels ausführt.

Normalerweise würden Sie dies mit einem Mikrocontroller tun, der über einen eingebauten A/D verfügt. Diese Tabellensuche und lineare Interpolation zwischen Punkten ist trivial. Das Ergebnis wird dann so ausgegeben, dass es schließlich in eine Spannung umgewandelt wird. Da die Anlage im Vergleich zu einem Mikrocontroller langsam ist, könnte dies so einfach sein wie das Filtern und Puffern eines PWM-Ausgangs. Oder Sie könnten einen D/A direkt ansteuern, obwohl das in diesem Fall nicht so klingt, als wäre es notwendig.

In Anlehnung an das 1980er-Thema Ihres Controllers könnten Sie dies mit einem A/D, Speicher und D/A für das Retro-Feeling tun.

In jedem Fall regelt der PID-Regler nun effektiv eine lineare Anlage, soweit ihm bekannt ist, und es sollte möglich sein, sie auf eine gute Leistung abzustimmen.

Eine stückweise lineare Transformation des Anlageneingangs an einer Stelle durchzuführen ist einfacher, als 3 Werte innerhalb des PID-Reglers über den Ausgangsbereich zu optimieren. Letzteres ist ein Kludge, während ersteres das Problem direkt anspricht. Es ist auch viel einfacher, die Daten für die Linearisierungsfunktion zu messen, als die P-, I- und D-Verstärkungen an verschiedenen Punkten zu bestimmen. Selbst wenn Sie das getan haben, haben Sie immer noch vorübergehende Probleme, da die richtigen Gewinne nicht sofort auf die Situation angewendet werden. Wieder ist "Gewinnplanung" ein Kludge.

Sehr interessant, danke für die Vorstellung des Linearisator-Ansatzes. Ich verwende jedoch Hardware-Controller, die direkt mit Relais verdrahtet sind, daher muss ich leider Gain-Scheduling durchführen. Ist mein Identifikationsansatz richtig? Es fühlt sich an, als wäre es das nicht.
Ich habe meine Frage bearbeitet, um mein Problem zu klären - insbesondere die beiden letzten Absätze. (immer noch +1)
Ich habe den Hersteller der Controller gefragt, ob ich vor der Ausgabe eine Nachschlagetabelle mit linearer Interpolation einfügen kann - wenn das möglich ist, werde ich mich definitiv für diese Option entscheiden, auch wenn das bedeutet, dass ich die vergessen muss Übliche Tuning-Tools basierend auf Transferfunktion und so. Es ist elegant. Wenn nicht, muss ich die sehr mühsame Gain-Planung durchführen, aber anscheinend ist an meinem Ansatz nichts falsch, was ich überprüfen wollte.

Denken Sie daran, dass Sie beim Linearisieren eines Modells effektiv davon ausgehen, dass das nichtlineare Modell y = f(x) durch y = A*(x-x0) + B ersetzt wird. Beachten Sie, dass x0 der Linearisierungspunkt ist. Wenn Sie Bereiche für x einführen, erhalten Sie am Ende mehrere A's, B's und x0's. In jedem Fall wird der Eingang zu Ihrem Controller der Fehler in Bezug auf den aktuellen Linearisierungspunkt sein. Sie kompensieren jedoch immer noch das Eingangssignal (mit B), sodass Sie selbst dann, wenn der Fehler in Bezug auf den aktuellen Linearisierungspunkt 0 ist, immer noch ein Signal weiterführen.

Selbst wenn der Fehler in Ihrem Beispiel 0 Grad beträgt (am 70-Grad-Sollwert), gibt der Controller immer noch eine Leistung größer als 0 aus.

Vielen Dank. Ich glaube, du bist auf etwas gestoßen, aber ich verstehe es nicht wirklich. Grob gesagt verwende ich einfache PID-Regler (analog-ähnlich), deren P-, I-, D-Terme in Abhängigkeit von der Temperatur geändert werden können. Ich weiß, dass die Leistung sofort bei 70 ° C nicht Null ist, selbst wenn der Fehler Null ist. Es ist das Einschwingen, das mich beunruhigt: Ich lasse den Regler im Grunde bei 70 °C fallen, und da es t = 0s dafür ist, wird der integrale Term einige Zeit brauchen, um zu wirken, so dass ich einen schrecklichen Abfall habe. Es klingt fast so, als wäre meine Methode falsch.
(Der Controller benötigt zu Beginn sehr wenig Strom, weniger als der Strom, der erforderlich ist, um bei 70 °C zu bleiben.)
Ich habe meine Frage zur Verdeutlichung bearbeitet - insbesondere die beiden letzten Absätze.
Es ist schwierig, ohne weitere Details zu Ihrem Prozess Ratschläge zu geben, aber es hört sich so an, als hätten Sie ein ziemlich instabiles System um 70 Grad und dass um diese Temperatur herum der größte Teil der Steuerung aufgrund der intrakralen Kompensation erfolgt (das I in der PID)?
70°C ist nur ein Beispiel, ich werde wahrscheinlich 6 verschiedene Temperaturbereiche zum Einstellen haben. Ganz grob gesagt kontrolliere ich die Temperatur im Inneren einer Thermoskanne, indem ich die Außenfläche erhitze.

Ein Ansatz zur nichtlinearen Steuerung mit PID-Reglern, ein Ansatz, der in der Industrie weit verbreitet ist, wird "Verstärkungsplanung" genannt.

Das nichtlineare Steuerungsproblem wird in eine Reihe von Bereichen aufgeteilt, die ausreichend linear sind, und die geeigneten Parameter werden für jeden Bereich verwendet.

Das versuche ich zu erreichen, wie in meiner Frage zu lesen ist ("Die PID-Parameter würden abhängig von der Temperatur des Prozesses automatisch umgeschaltet *" "*: Es ist effektiv Gain Scheduling.")