PID-Implementierung für einen Feuchtigkeitsregler

Ich arbeite an einem Feuchtigkeitsregler, der einen PID-Algorithmus verwendet, um die Prozesswerte zu steuern. Ich muss 2 PID-Routinen implementieren, da 2 Prozesswerte (Feuchtigkeit und Temperatur) gesteuert werden müssen. Ich habe viele Artikel über PID-Regler gelesen und glaube, die Bedeutung jedes Begriffs verstanden zu haben.

Das Problem ist jedoch, dass ich nicht herausfinden kann, wie die einzelnen Terme in die tatsächliche Leistung umgewandelt werden (unterschiedliche Ein- / Aus-Zyklen von Lufterhitzern und einem Boiler). Was ich bisher gemacht habe sind

Im Hauptprogramm

  1. Lesen von 2 ADC-Kanälen pro Sekunde

  2. Berechnung des PID-Ausgangs (Wert von 0-100) jede Sekunde

    Integral- und Differentialterme werden der Leistung hinzugefügt, die alle Ti- und Td-Zyklen berechnet wird (programmierbar in 0-240 Sekunden). Da meine PID-Ausgangsberechnung jede Sekunde ausgeführt wird, führt die nächste Ausführung nach dem Hinzufügen eines Integralterms (oder einer Ableitung) zu einer geringeren Leistung als der vorherige Wert (dh wenn eine integrale oder abgeleitete Leistung hinzugefügt wird).

In ISR (@ Periode 2ms) verwende ich 2 Werte (Einschaltzeit und Ausschaltzeit, die anhand des PID-Ausgangs und der für den Ausgang gewünschten Zykluszeit (auch in Sekunden programmierbar) berechnet werden), um den Ausgang zu ändern.

Wie Sie sehen können, wird die integrale Leistung und die abgeleitete Leistung bei diesen Timings keine Auswirkungen auf das Ausgangs-Tastverhältnis haben, und meine Fragen sind

  1. Soll ich den Zeitraum der PID-Ausführungszeit erhöhen bzw
  2. Soll ich den Wert des zuletzt berechneten Integralterms (oder der Ableitung) mit dem proportionalen Term bis zur nächsten Addition des Integrals (oder der Ableitung) beibehalten?

Ich weiß, dass ich eine Vorstellung davon bekomme, wie ich jeden Begriff umgehen kann, wenn er auf dem System getestet wird und nachdem ich die Reaktion des Systems analysiert habe. Aber ich möchte nur meine Zweifel ausräumen und den größtmöglichen Teil des Codes fertigstellen, bevor ich eine Maschine zum Testen bekomme.

Dieser Link könnte Ihnen helfen shawnlankton.com/2005/03/pic-pid-controller

Antworten (1)

  1. Soll ich den Zeitraum der PID-Ausführungszeit erhöhen bzw

Zwischen jeder Probe sollte etwas Sinnvolles passieren können. Eine Sekunde finde ich viel zu knapp. Ich würde vorschlagen, mit 10 Sekunden oder mehr zwischen den Proben zu beginnen.

2.0 Soll ich den Wert des zuletzt berechneten Integralterms (oder der Ableitung) mit dem proportionalen Term bis zur nächsten Addition des Integrals (oder der Ableitung) beibehalten?

P, I und D sollten nach meinem Verständnis zusammen berechnet werden. Die Verwendung früherer Werte wird den Prozess verzerren, scheint mir. Vorherige Werte werden bereits in I und D behandelt.

Aber das Problem ist, dass ich nicht herausfinden kann, wie die einzelnen Terme in die tatsächliche Ausgabe umgewandelt werden

Das ist kein Hexenwerk. Es hängt wirklich von Ihrem System ab und wie Sie sich entscheiden, Zahlen für PI & D einzufügen. Wenn Sie beispielsweise entscheiden, dass ein Ausgangswert von > = 100 ausgeschaltet und < 100 eingeschaltet ist, wird P angepasst, bis es im Stadion ist, und I und D, um es zu beenden.

Finden Sie eine Kopie von PID ohne Doktortitel und studieren Sie es gut, wenn Sie es nicht getan haben.