So stellen Sie einen PID-Regler auf einen nichtlinearen Prozess ein

9

Ich habe einen nichtlinearen thermischen Prozess (nichtlineare Strahlung wird mit steigender Temperatur immer präsenter), auf den ich einen PID-Regler einstellen 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 für dieses Modell zu berechnen. Die PID-Parameter werden abhängig von der Temperatur des Prozesses * automatisch umgeschaltet.

Mein Problem ist folgendes: Betrachten Sie zum Beispiel den 70 ° C-Kontrollpunkt. P Watt fließen bereits, um diese Temperatur zu erreichen. Ich werde dP Watt injizieren, um die Temperatur um 1 ° C zu erhöhen. Ich werde dann die Zeitkonstante notieren und die stationäre Verstärkung beträgt 1 / dP ° C / W. [Bitte nehmen Sie sich einen Moment Zeit, um darüber nachzudenken, ob dies richtig ist.] Schließlich stelle ich die PID auf diese Anlage ein, um die Parameter für diesen Temperaturbereich zu erhalten, und gehe zu den anderen Bereichen über.

Angenommen, der Prozess erreicht 70 ° C. 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 die Steuerung weniger als P Watt benötigt. Dies bedeutet, dass die Temperatur stark sinken wird, bevor der Integralterm P Watt erfordert, und erst 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 schlechter wird es.

Es scheint fast so, als ob die Heizungen mit der Summe der Reglerleistung und der Leistung betrieben werden sollten, die erforderlich ist, um auf der aktuellen "Referenztemperatur" (z. B. 70 ° C) zu bleiben. Aber Standard-Controller bieten das nicht an, also muss es einen anderen Weg geben.

Was vermisse ich? Was ist der richtige Weg?

*: Es ist effektiv Gain Scheduling .

user42875
quelle
1
Der PID-Regler ist im Allgemeinen für lineare Systeme vorgesehen. Es ist robust genug, um einige nichtlineare Systeme auch um einen "fast linearen" Betriebspunkt herum zu steuern. Ist dies nicht der Fall, können verschiedene Techniken verwendet werden, um die gesteuerte Anlage zu linearisieren (Suche nach "Rückkopplungslinearisierung" oder Einführung einiger innerer Schleifen)
Eugene Sh.
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.
user42875
1
Können Sie, anstatt mehrere Modelle zu trainieren, den Eingabewert über eine Linearisierungsfunktion eingeben, bevor Sie ihn an den PID-Regler übergeben, und ihn darauf basierend trainieren?
Nick Johnson
1
Ihr Ansatz klingt für mich in Ordnung. Sie werden die Verstärkung und die Zeitkonstante abhängig von der Temperatur anpassen. Sie müssen darüber nachdenken, was an den Kreuzungspunkten passiert. Haben Sie etwas gebaut, das nicht so gut funktioniert, wie Sie es möchten? Ein Regelkreis kann viel Nichtlinearität verbergen. Und vielleicht geht es dir gut, ohne Lust zu bekommen.
George Herold
Warum ist die Strahlung nichtlinear? Wenn der Ofen eine Temperaturleckage aufweist, ist der Leistungsverlust linear Q = mc * delta_T. Wenn Ihr System nur undicht ist, bleiben fast alle Konstanten wie Totzeit und Anstiegszeit erhalten, außer dass die Verstärkung verringert wird. Sie können die Kp-Variable Kp (T_actual) einfach zu einer linearen Funktion von Kp_initial und Kp_final machen.
Marko Buršič

Antworten:

11

Wie stelle ich einen PID-Regler auf einen nichtlinearen Prozess ein?

Das tust du nicht. Sie linearisieren den Prozess und lassen dann den PID-Regler an den linearen Werten arbeiten.

Mit "Prozess linearisieren" meine ich nicht, den Prozess selbst linear zu machen. Das ist aus physikalischen Gründen normalerweise nicht möglich. Sie können jedoch etwas Nichtlineares zwischen den Ausgang des PID-Reglers und den Prozesseingang stellen, sodass der PID-Ausgang den Prozess aus Sicht des PID-Reglers linear steuert.

Ein solcher Linearisierer muss nicht sehr genau sein, da er sich innerhalb der Rückkopplungsschleife befindet. Ziel ist es, über den Dynamikbereich der Steuerung eine annähernd konstante Verstärkung zu erzielen. Ein einfacher und allgemeiner Weg ist eine stückweise lineare tabellenbasierte Funktion. 16 oder 32 Segmente reichen normalerweise für alles andere als sehr hochgradig nichtlineare Prozesse aus.

Das schlimmste Beispiel, auf das ich gestoßen bin, war die Steuerung des Stroms durch eine Elektronenröhre durch Ändern der Stärke des Kathodenfadens. Die Funktion der Kathodentemperatur zum Elektronenstrahlstrom ist stark nichtlinear, und das System, das den Kathodenfilamentstrom steuert, war auch etwas nichtlinear. In diesem Fall war es zu schwierig, dieses ganze Durcheinander vorherzusagen, daher verwendete ich während der Produktion ein Kalibrierungsverfahren, das die Steuerwerte des Filamentantriebs durchlief, den Strahlstrom für jeden gemessen und dann eine 32-Segment-Nachschlagetabelle daraus berechnete. Es hat sehr gut funktioniert und wir konnten den Strahlstrom-PID-Regler so einstellen, dass er über den gesamten Bereich gut anspricht.

Ohne eine Linearisierungsfunktion vor dem Prozess müssen Sie den PID-Regler auf Stabilität am höchsten inkrementellen Verstärkungspunkt des Prozesses einstellen. 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 oben beschriebene Methode immer noch keine gute Idee und anwendbar ist. Sie sagen, Sie verwenden einen analogen Controller. Meine erste Reaktion lautet: "Die 1980er Jahre sind lange vorbei, tu das nicht." Der PID-Regler und der Anlagenlinearisierer können jedoch unabhängig voneinander sein.

Anscheinend ist der Anlageneingang Leistung und der Ausgang Temperatur. Messen Sie die typische stationäre Temperatur in verschiedenen Leistungsstufen. Daraus können Sie die Funktion berechnen, die linearisierte "Leistung" in tatsächliche Anlagenleistung umwandelt. Der analoge PID-Regler gibt vermutlich eine Spannung proportional zur Leistung aus. Alles, was Sie tun müssen, ist, eine Blackbox in Übereinstimmung mit der Spannung einzufügen, die die lineare Messung zur tatsächlichen Leistungspegelumsetzung durchführt.

Normalerweise tun Sie dies mit einem Mikrocontroller mit integriertem A / D. 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, kann dies so einfach sein wie das Filtern und Puffern eines PWM-Ausgangs. Oder Sie können einen D / A direkt fahren, obwohl dies in diesem Fall nicht unbedingt erforderlich ist.

In Übereinstimmung mit dem Thema Ihres Controllers aus den 1980er Jahren können Sie dies mit A / D, Speicher und D / A für dieses Retro-Gefühl tun.

In jedem Fall regelt der PID-Regler jetzt, soweit bekannt, eine lineare Anlage effektiv, 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 dies getan haben, haben Sie immer noch vorübergehende Probleme, da die richtigen Gewinne nicht sofort auf die Situation angewendet werden. Wieder ist "Gain Scheduling" ein Kludge.

Olin Lathrop
quelle
Sehr interessant, danke für die Präsentation des Linearisator-Ansatzes. Ich verwende Hardware-Controller, die direkt mit Relais verbunden sind, daher muss ich leider eine Gain-Planung durchführen. Ist mein Identifikationsansatz korrekt? Es fühlt sich so an, als wäre es nicht so.
user42875
Ich habe meine Frage bearbeitet, um mein Problem zu klären - insbesondere die beiden letzten Absätze. (noch +1)
user42875
Ich habe den Hersteller der Steuerungen gefragt, ob ich vor der Ausgabe eine Nachschlagetabelle mit linearer Interpolation einfügen kann. Wenn dies möglich ist, werde ich diese Option auf jeden Fall wählen, auch wenn dies bedeutet, dass ich die vergessen muss übliche Abstimmwerkzeuge basierend auf Übertragungsfunktion und dergleichen. Es ist elegant. Wenn nicht, muss ich die sehr mühsame Gewinnplanung durchführen, aber anscheinend ist an meinem Ansatz nichts auszusetzen, was ich überprüfen wollte.
user42875
2

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 mehrere A, B und x0. In jedem Fall ist die Eingabe in Ihren Controller der Fehler in Bezug auf den aktuellen Linearisierungspunkt. Sie versetzen das Eingangssignal jedoch immer noch (mit B). Selbst wenn der Fehler in Bezug auf den aktuellen Linearisierungspunkt 0 ist, führen Sie dennoch ein Signal weiter.

In Ihrem Beispiel gibt der Controller dann auch dann eine Leistung aus, die größer als 0 ist, wenn der Fehler 0 Grad beträgt (beim Sollwert von 70 Grad).

Pål-Kristian Engstad
quelle
Vielen Dank. Ich denke du bist auf etwas, aber ich verstehe nicht wirklich. Grob gesagt verwende ich grundlegende PID-Regler (analog), von denen ich die P-, I-, D-Terme in Abhängigkeit von der Temperatur ändern kann. Ich weiß, dass die Leistung sofort bei 70 ° C liegt und nicht Null ist, selbst wenn der Fehler Null ist. Es ist das Absetzen, das mich beunruhigt: Ich lasse den Regler im Grunde genommen bei 70 ° C fallen, und da es t = 0s ist, wird es einige Zeit dauern, bis der integrale Term einsetzt, damit ich einen schrecklichen Abfall bekomme. Es klingt fast so, als ob meine Methode falsch ist.
user42875
(Der Controller benötigt zu Beginn nur sehr wenig Strom, unterhalb der Leistung, die erforderlich ist, um bei 70 ° C zu bleiben.)
user42875
Ich habe meine Frage zur Klarstellung bearbeitet - insbesondere die beiden letzten Absätze.
user42875
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 bei etwa 70 Grad und bei dieser Temperatur geschieht der größte Teil der Kontrolle aufgrund einer intragralen Kompensation (das I in der PID)?
Pål-Kristian Engstad
70 ° C ist nur ein Beispiel, ich werde wahrscheinlich 6 verschiedene Temperaturbereiche einstellen müssen. Sehr grob gesagt, ich kontrolliere die Temperatur innerhalb einer Thermoskanne durch Erhitzen der Außenfläche.
user42875
2

Ein Ansatz zur nichtlinearen Regelung mit PID-Reglern, der in der Industrie weit verbreitet ist, wird als "Gain Scheduling" bezeichnet.

Das nichtlineare Steuerungsproblem wird in eine Reihe von ausreichend linearen Regionen unterteilt, und die entsprechenden Parameter werden für jede Region verwendet.

Spehro Pefhany
quelle
Das ist es, was ich versuche 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.")
user42875