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 .
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.
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.
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.
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.
Eugen Sch.
Benutzer42875
Nick Johnson
Georg Herold
Marko Buršič
Benutzer42875