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 .
quelle
Antworten:
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.
quelle
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).
quelle
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.
quelle