Hallo Zusammen, es geht mir hier nur um den Algorithmus. Also die Frage, wie man per PID große Verzögerungen mit einberechnen kann. Konkret für einen Reflow Ofen. Der besteht aus einem Ceranfeld und einer 10mm Aluplatte, in der ein Thermosensor eingebaut wurde. Die Konsequenzen sind klar. a) Braucht die Aluplatte lange, bis die Wärme tatsächlich am Thermosensor ankommt (nach dem Einschalten des SSRs z.B.). b) Hat der Thermosensor die Temperatur erreicht, schaltet die PID zwar ab, aber die Temperatur schießt durch die Verzögerung weit über das Ziel hinaus. Die Standard PID-Berechnung scheint das überhaupt nicht zu berücksichtigen. Oder gibt es da eine Möglichkeit? Ich hab mir jetzt folgendes überlegt: Ich habe ein Reflow-Profil, im Prinzip eine Liste von structs, die jeweils eine Soll-Temperatur und einen Zeitraum festlegen. Ungefähr so: struct Zone { temperature_t EndTemperature; seconds_t TimeSpan; }; Die "Zonen" erzeugen dann beim Abfahren lineare Anstiege der Temperatur innerhalb eines bestimmten Zeitraumes. Die Idee ist jetzt, dass die erste Zone eine "Spezialaufgabe" bekommt (TimeSpan==0). Hier wird nämlich in zwei Schritten (mit einer internen Statemaschine) folgendes gemacht. 1.) Schalte das SSR an und warte bis die Soll-Temperatur erreicht wurde. => jetzt habe ich das Delay in ms 2.) Schalte das SSR aus und bestimme solange die Maximaltemperatur, bis wieder der Sollwert erreicht wird. => jetzt habe ich den Overshoot in °C. Dann mache ich mit der PID und den anderen Zonen weiter. Die Frage ist, wie ich die beiden ermittelten Werte in die PID mit einbaue. Ich könnte folgendes machen: Ich schaue in die Zukunft, also nehme nicht den aktuellen Sollwert von t(now), sondern t(now) + t(delay). Und dann nehme ich den Sollwert und ziehe den Overshoot ab, also sp(now) = sp(soll(t(now) + t(delay)) - overshoot Macht das Sinn? Oder kennt jemand die Lösung?
Andreas J. schrieb: > ) Hat der Thermosensor die Temperatur erreicht, schaltet die PID zwar > ab, aber die Temperatur schießt durch die Verzögerung weit über das Ziel > hinaus. > Die Standard PID-Berechnung scheint das überhaupt nicht zu > berücksichtigen PID schon, 2-Punkt-Regelung nicht. Dein PID ist kein PID. Sondern so falsch parametrisiert, dass er wie ein 2-Punkt-Regler arbeitet. Kauf dir halt einen Autotune-Regler.
Du hast die Sprungantwort schon aufgezeichnet. Ein erster Ansatz könnte Ziegler/Nichols sein um die PID Parameter abzuschätzen. Wenn das nicht ausreicht, lies dich ins Thema "Totzeit" (auch wenn deine Strecke mathematisch gesehen keine ist sondern eher PTn), da gibt es einige Ansätze. Alternativ ein Beobachter+Zustandsregler.
Ich wuerde erst mal eine Vorwaertssteuerung bauen. Also welcher Steuerwert ergibt welche Temperatur im Endwert.
Andreas J. schrieb: > Also die Frage, wie man per PID große Verzögerungen mit einberechnen > kann. Muss es den überhaupt ein Regler sein? Sind deine Störgrößen nicht denkbar klein,
S.E. schrieb: > Du hast die Sprungantwort schon aufgezeichnet. Ein erster Ansatz könnte > Ziegler/Nichols sein um die PID Parameter abzuschätzen. Wenn das nicht > ausreicht, lies dich ins Thema "Totzeit" (auch wenn deine Strecke > mathematisch gesehen keine ist sondern eher PTn), da gibt es einige > Ansätze. Alternativ ein Beobachter+Zustandsregler. Ok, Danke Dir! Da werde ich mich erst mal einlesen müssen... Pandur S. schrieb: > Ich wuerde erst mal eine Vorwaertssteuerung bauen. Also welcher > Steuerwert ergibt welche Temperatur im Endwert. Ich hab noch nichts zum Thema Vorwärtssteuerung gefunden, aber Danke für den Hinweis. Das Problem ist eben, dass der Steuerwert (hier ein/aus bei einem Relais) zu einer extremen Verzögerung führt, und diese wiederum zu einer Übersteuerung. Das Problem ist also, dass der Algorithmus frühzeitig "erkennen" muss abzuschalten, obwohl die Solltemperatur noch lange nicht erreicht ist. Also hier gibt es keinen bestimmte Temperatur bei einem Steuerwert. Kolja L. schrieb: > Muss es den überhaupt ein Regler sein? > Sind deine Störgrößen nicht denkbar klein, PID bringt tatsächlich nicht viel (gerade wenn es nur um ein/aus geht), ist aber einfach schon fertig implementiert und funktioniert (ohne Aluplatte) auch gut. Ich habe noch einen zweiten Usecase, bei dem ich den selben Regler verwenden will. Und zwar verwende ich hier einen großen Glasbecher plus Galden, also Dampfphasenlöten. Ohne die Aluplatte dann. Hier gibt es so gut wie keine Verzögerungen, aber ein anderes Problem (Dampfphase führt zu einem sprunghaften Temperaturanstieg). Natürlich könnte ich dann einfach auch zwei Modi vorsehen, aber "noch" suche ich nach einer eleganten Lösung, die das "Antwortverhalten" automatisch erkennt und trotzdem das Reflowprofil gut abfährt. Zumindest ist das jetzt meine sportliche Herausforderung. ;-) Ich guck mal, dass ich Soll/Ist in ein Diagramm bekomme, die Daten bekomme ich per MQTT...
Mit der Aluplatte machst du aber die Regelstrecke kaputt. Du könntest versuchen das P ganz klein und das AbtastIntervall ganz groß zu machen. Musst halt lange warten bis es warm wird...
Der D-Anteil verhindert bei richtiger Auslegung die Überschwinger. Bei starker Änderung der Eingangs wirkt er dagegen, insbesondere wenn man schon in der Nähe des Sollwertes ist, wo der Proportionalanteil nur noch einen kleinen Beitrag liefert. Den I-Anteil würde ich erstmal weglassen, der arbeitet da eher dagegen. Für einen PID brauchts aber einen analogen Ausgang, also zumindest eine PWM. Eine reine 1/0-Vorgabe durch den Regler wird nicht funktionieren.
MaWin hat es schon gesagt: ich habe quasi nur eine Zweipunktregelung und daher kann PID nichts gegen das Überschwingen bewirken. PID berechnet alles vollkommen richtig und gibt mir einen "negativen" Wert aus (der bei mir auf Control-Min=0 (aus) überschrieben wird), sobald der Sollwert überschritten ist. Es gibt bei mir aber eben nichts, was die Regelung schnell genug bremst, wie bei einem Lüfter mit PWM z.B.. Ich müsste quasi ein Kühlaggregat benutzen. Und das schlimmste (bei einer fetten Aluplatte) ist eben, dass die bis zum Abschalten des SSRs gespeicherte Energie noch nicht mal beim Thermosensor angekommen ist. Wie S.E. (Gast) schon gesagt hat: ich brauche eine Art von Heuristik, die hier den Überschwinger (als Fehler) herausrechnet. Also mal angenommen, mein Überschwinger beträgt 30°C nach dem Abschalten. Würde ich Soll(temp) einfach nur um 30°C reduzieren funktioniert das gut bis zum Erreichen der 230°C. Statt 230°C sage ich einfach: regle bis 200°C. Die PID schaltet korrekt ab. Die bis dato gespeicherte Wärmeenergie kommt zeitverzögert an und bringt die Temp auf 230°C. Nur leider kann die PID die 230°C nicht halten. Sie würde das SSR erst bei unter 200°C wieder einschalten, was zu einer langsamen Schwingung führt. Ich brauche neben P-I-D noch einen Faktor X, der am Anfang den Sollwert abbremst auf 200°C, dann aber unter Berücksichtigung meiner Trägheit - rein zeitgesteuert - den Faktor kleiner werden lässt, so dass eben doch wieder nach ein paar Sekunden die vollen 230°C per PID geregelt werden. Ich schreibe mir gerade die Lösung herbei: ;-) Dieser X-Faktor ist also eigentlich nur abhängig vom Control-Wert. Ich brauche das Verhältnis 30°C (Overshoot) zu Delay (Trägheit). Also Overshoot/Delay. Ist Control="an" wird dieser Wert dekrementiert (bis -Overshoot) und bei "aus" inkrementiert (bis 0). Ist das SSR also lange genug "an", regle ich also Soll von 230° auf 200°C runter und schalte rechtzeitig ab. Ist das SSR aus, erhöhe ich den Wert wieder auf die vollen 230°, so dass ich bei 229°C wieder einschalte u.s.w.. Wahrscheinlich brauche ich dann noch einen Faktor kX. Ich probier's aus...
Andreas J. schrieb: > Die Standard PID-Berechnung scheint das überhaupt nicht zu > berücksichtigen. Sicher kann die das berücksichtigen. Die Vorhalt- und Nachhaltzeit müsste dann so gewählt sein, dass man trotz des langsamen Regelkreises (bedingt durch den Feedback) immer noch im aperiodischen Grenzfall bleibt. Die Berechnungsregeln sind immer noch die gleichen. Allerdings wird das System dann eben so langsam, wie man es nicht haben will. Die Berechnungsregeln sind eben auf Stabilität, nicht auf Geschwindigkeit bedacht.
Andreas J. schrieb: > Also die Frage, wie man per PID große Verzögerungen mit einberechnen > kann. Ich hatte diese Aufgabe bei einer ähnlichen Konfiguration: Wasser in einem Behandlungsbecken wird im Kreislauf durch einen Durchlauferhitzer gepumpt, der die Temperatur regeln soll, natürlich dauert es eine Weile bis das erhitzte Wasser wieder im Becken ankommt. Ich habe das mit einer "Zukunftsregelung" gelöst, was gut funktioniert hat: ein Algorithmus extrapoliert den Temperaturverlauf um x Sekunden in die Zukunft, der PID-Algorithmus arbeitet mit Soll- und Istwerten die in x Sekunden erwartet werden. Natürlich muss auch der zukünftige Sollwert vorausberechnet werden, was in dem Fall trivial war, weil der zeitliche Verlauf durch die Behandlungsmethode bzw. den Arzt vorgegeben war. Leider ist das keine Lösung nach akademischen Grundlagen und kann daher nicht als korrekte Regelung anerkannt werden, das war dem Wasser im Becken aber egal. Georg
ich habe so eine Uyue 946C Heizplatte mit PID Regler, die schaltet sehr früh ab und erreicht die Zieltemperatur dann nur sehr langsam, dafür ohne großen Overshoot. Damit hatte ich genauso Dampfphasenlöten getestet. Es ging, hat aber sehr lange gedauert. Schneller ging es mit einer konventionellen Heizplatte mit Zweipunktregler und 1000 Watt. So sprunghaft steigt die Temperatur da aber nicht, ich habe allerdings ein Alu Streckmetall als Träger, da kondensierte erstmal einiges und die Erwärmung geht dadurch langsamer. Alternativ macht man das wohl durch langsames Eintauchen in den Dampf, was aber afaik patentiert ist und nicht alle so machen.
Ich gebes ja zu, meine Regelungstechnikvorlesung ist auch schon was zurueck, aber war es nicht so das PID ausschliesslich fuer LTI-Systeme ohne Delay sinnvoll waren? Nach meinen Erfahrungen ist es sogar so das man in der Praxis selbst dann wenn man sich bemueht ein System gut auszulegen immer noch irgendwo eine kleine Nichtlinearitaet drin hat die einem das leben schwer machen kann. Und bei Heizungsregelung sogar ganz besonders gerne, so das man da gelegentlich zu interessanten tricks greifen muss. Du scheinst dich aber zu bemuehen dein System maximal schlecht und unregelbar zu bauen um es dann mit einem PID zu regeln. Viel Glueck. .-) Olaf
Andreas J. schrieb: > PID berechnet alles vollkommen richtig und gibt mir einen "negativen" > Wert aus (der bei mir auf Control-Min=0 (aus) überschrieben wird), > sobald der Sollwert überschritten ist Niemand zwingt dich, es so falsch zu machen. Du kannst den PID Output wie Andere es tun verwenden um im üblichen (Flickergrenze) 4-Sekunden Intervall festzulegen wie lange prozentual die Heizung an sein soll, also PWM bzw. Impulspaketsteuerung. Da klappert das Relais vielleicht, aber thermisch träge genug wird die Aluplatte sein um daraus einen mittleren Warmeeintrag zu machen.
Walter T. schrieb: > Die Berechnungsregeln sind eben auf Stabilität, nicht auf > Geschwindigkeit bedacht. Das ist der eine entscheidende Punkt! Der zweite, dass PID ein Overshoot nur "nachträglich" behandelt. Wenn es schon zu spät ist. Und eben nicht vorausschauend behandeln kann. Und das versuche ich zu ändern. Und wie es Georg in seinem Versuchsaufbau schon gezeigt hat: das Ergebnis zählt. ;-) Olaf schrieb: > Ich gebes ja zu, meine Regelungstechnikvorlesung ist auch schon was > zurueck, > aber war es nicht so das PID ausschliesslich fuer LTI-Systeme ohne Delay > sinnvoll waren? Ja, das macht Sinn! Olaf schrieb: > Du scheinst dich aber > zu bemuehen dein System maximal schlecht und unregelbar zu bauen um es > dann mit einem PID zu regeln. Da ist leider auch was dran. Die Idee mit der dicken Aluplatte kam durch die Pfannen/-Lötvariante (irgendwo im Netz) auf. Da wurde eben eine dicke Aluplatte empfohlen, weil man dort leicht einen Temperatursensor in der Seite befestigen kann, in dem man einfach ein Loch reinbohrt. Ist aber leider eben kontraproduktiv für eine PID. Wie gesagt, ist jetzt meine Herausforderung, dass trotzdem zu lösen. Wenn ich scheitere, kann ich mir ja immer noch eine dünnere Aluplatte kaufen und mir dann überlegen, wie ich den Sensor da befestige...
MaWin schrieb: > Du kannst den PID Output wie Andere es tun verwenden um im üblichen > (Flickergrenze) 4-Sekunden Intervall festzulegen wie lange prozentual > die Heizung an sein soll, also PWM bzw. Impulspaketsteuerung. Da > klappert das Relais vielleicht, aber thermisch träge genug wird die > Aluplatte sein um daraus einen mittleren Warmeeintrag zu machen. Ok, das wäre natürlich auch eine Lösung! Aber wie gesagt, das soll für ein Reflow Ofen verwendet werden und die einzelnen Zonen sind da 90s, 120s und 60s lang. Meine Befürchtung ist ein bisschen, dass das mit der viel zu fetten Alu-Platte trotzdem zu träge wird. Aber das wird definitiv Plan b)...
> Meine Befürchtung ist ein bisschen, dass das mit der viel zu fetten > Alu-Platte trotzdem zu träge wird. Ich stimme dieser Befuerchtung zu. :-) Zumal du ja vermutlich Anforderungen an deine Heizgeschwindigkeit hast und wenn du die mit einem dicken Heizelement loest wird dein System noch schwerer zu regeln. Olaf
Auch für Abkühlphase hat eine dicke Platte Nachteile, die Platinen im heißen Zustand zu bewegen ist auch nicht gut. Die Sensormontage kann da kein Argument sein. Die Sensoren bekommt man in sehr klein, siehe Temperaturmessung beim 3D-Drucker am Hotend oder Heizbett.
Andreas J. schrieb: > Und wie es Georg in seinem Versuchsaufbau schon gezeigt hat Ein Versuch war das nicht, die Geräte waren an verschiedenen Uni-Kliniken im Einsatz, und die waren auch zufrieden damit. Georg
Johannes S. schrieb: > Auch für Abkühlphase hat eine dicke Platte Nachteile Definitiv. Da habe ich in meinem Dampfphasen-Glas die Platine angehoben (Rastpunkt oberhalb der Dampfphase und dort abkühlen lassen) und beim "Pfannenlöten" liegt die Platine auf einer Glasfasermatte. Da soll man dann langsam die Platine anheben und woanders abkühlen lassen (potentiell etwas zu schnell). Hier ist mein Plan (später) tatsächlich, einen PWM-Lüfter einzusetzen. Der über die Aluplatte (bzw. das Becherglas) pustet. Nur den kann ich vorher nicht benutzen, da dieser zu viel Material-Stress erzeugen würde. Mal abgesehen von potentiell wegfliegenden SMD-Bauteilen ;-). Zur Info noch: das Dampfphasenlöten nehme ich weiterhin zu wahrscheinlich 90%. Ohne Aluplatte direkt auf dem Ceranfeld (mit 2KW). Die Aluplatten-Variante will ich nur für das ESP32-Modul nehmen, da dieser ein Metallgehäuse mit einem Loch oben hat. Meine Sorge ist, dass dort im Gehäuse Galden kondensieren könnte.
bei der Auye Platte kann ich eine Aluplatte auf gleicher Höhe danebenstellen, und die Platine auf eine Alufolie legen und rüberziehen. Ich möchte aber auch lieber mit dem Galden löten und noch einen Lift mit Schrittmotor bauen der dann die Platine rauf/runterfahren kann. Zum Heizen wollte ich noch eine Induktionsplatte testen mit Eisenplatte im Glas mit dem Galden, sollte auch gehen. Die einfache Platte die ich habe hat aber eine schlechte Regelung, das ist auch Aufwand die zu verbessern.
Johannes S. schrieb: > Ich möchte aber auch lieber mit dem Galden löten und noch einen Lift mit > Schrittmotor bauen der dann die Platine rauf/runterfahren kann. Hier mal ein Bild von meiner "Anlage" ;-). Ach die Aluplatte da nehme ich bei Galden natürlich nicht. Ich hab zwei Temperatursensoren im Gestell festgemacht. Der eine hängt im Galden, der andere ist auf Platinenhöhe. Das mit dem Schrittmotor war exakt auch mein erster Plan ;-), hab ich irgendwo gelesen, dass das jemand genauso umgesetzt hat. Nur mit meinem Klappergestell da ist das nicht ganz so einfach. Für was besseres bräuchte ich eine CNC oder so, die ich nicht habe. Muss ja irgendwie stabil hochzuziehen sein. Andere haben ein Kupferrohr um das Glas gewickelt und fluten dass dann zum Abkühlen mit Wasser. Nimmt einem aber die Sicht. Ich hab aber selbst die Erfahrung gemacht, dass ein Lüfter vollkommen ausreicht. Dauert länger, klar, aber es geht - hoffe ich - ausreichend schnell genug. Also sobald Zieltemperatur (am oberen Sensor) erreicht ist, Kochfeld aus und Lüfter an - volle Pulle. Wie schnell das geht habe ich aber noch nicht nachgemessen. Werde ich dann sehen. Wenn zu schnell => PID, bei zu langsam bleibe ich (nach Alarm) wohl doch bei meinem zweiten Einrastpunkt (der Knick da in der Mitte bleibt am oberen Glasrand hängen).
Ach, und die Platte hat 8mm nicht 10mm. Der Sensor 4mm. 6mm müsste ich mit meinem Bohrständer auch hinbekommen.
hier sind meine Platinenhalter. Links die erste Version mit dem Streckmetall, das ist aber sehr dicht und es dauert bis der Dampf da durch kommt. Das könnte man höher als Dampfsperre einsetzen. Rechts habe ich einen Ring aus einer Ronde neu gemacht, da möchte ich nur einen Rahmen aus Alu Winkelprofil drauflegen. Aufgehängt an dünnem Stahlseil (Angelschnur), die ist sehr flexibel und das lässt sich gut damit hochziehen. Schön das hier auch mal jemand in diese Richtung weiterforscht :)
Das mit der Angelschnur behagt mir nicht so ganz. Man könnte natürlich wie bei einem SLA-Drucker eine Plattform hochfahren. Das wäre dann die Luxusvariante ;-) Einen 3D-Drucker zum Ausschlachten hätte ich sogar da. Aber Schritt für Schritt, erst mal teste ich die Lüfter-Variante... :-)
War da nicht was mit Galden was kein Alu mag. Und ein teurer Klimakiller war er auch bei der Konstruktion hat man ja jedesmal die Hälfte verloren. Eine sehr hohe Wanne, ben gekühlt, Galden heizen, der Dampf bleibt unten, und dann die Platine je nach Wärmeprofil über einen Schrittmotor einfahren und rausheben, bei geschlossenem Kochtopfdeckel.
MaWin schrieb: > War da nicht was mit Galden was kein Alu mag. Quelle? Hab ich noch nichts von gehört. MaWin schrieb: > Und ein teurer Klimakiller war er auch bei der Konstruktion hat man ja > jedesmal die Hälfte verloren. Also oben habe ich einen "Aluhut" (nach innen gewölbt) und mein Verlust beträgt nach ca. 30 Platinen ca. 30%. Und das meiste - vermute ich - geht eher durch Rückstände auf der Platine selbst verloren. Man müsste sie eigentlich schräg stellen in der Kondensationsphase. Kann sein, dass ich da auch etwas nach oben verliere, aber gering, hoffe ich. Ein richtiger (ggf. sogar gekühlter) Deckel wäre definitiv eine Verbesserung, keine Frage.
Zur Klimafrage habe ich bei Solvay immer nur gefunden das Galden kein FCKW ist. In den 80er Jahren wurde auf die Dampfphase ein FCKW Deckel gesetzt um die Galdenverluste zu minimieren. Diese Anlage gibt es aber seit dem FCKW Verbot nicht mehr. Im Medium dürfen keine Brom- und Chlorverbindungen sein, das ist bei Galden auch nicht drin. Bei Überhitzung >100°K über Siedpunkt entstehen Crackprodukte, die sind giftig. Deshalb müssen Heizelemente immer mit Galden überdeckt sein damit die nicht zu heiß werden können. Für Großserien ist das einfach zu teuer, und für kleine Sachen ist die IR Konvekttion auch nicht einfach. Bei meinen ersten Versuchen sind 1,2 g verloren gegangen, auch noch ohne Kühler. Für eine Kühlung habe ich schon biegsames Kupferrohr besorgt, eine Kühlschlange im Glas wäre da sicher sehr effizient, dann passen aber auch nur noch kleine Platinen da rein.
Reflow-Profil: "Ramp-up", 150°C, 90s| "Preheating", 200°C, 120s| "Reflow", 240°C, 60s| "Cooling", 0°C, 60s Test: Alu8mm, PID (Kp = 0.3, Ki = 0.2, Kd = 0.1), ohne Lüfter Die Ausreißer bei der Temperatur sind noch Fehler im Programm. Ich muss noch die Interrupts sperren, da mir MQTT (höhere Prio) die SPI-Abfragen des Temperatursensors unterbricht und dann Müll rauskommt. Vielleicht kann ich auch direkt die SPI-Methoden vom ESP32 nehmen, probiere ich aus. Problem 1) Overshoot(max): ca. 10°C (konnte ich noch etwas drücken) Problem 2) Extreme Verzögerung (besonders am Anfang) Problem 3) Abkühlungsrate extrem niedrig Die Abkühlungsrate ignoriere ich erst mal. Erst mal kommen Optimierungen per Software...
Johannes S. schrieb: > Deshalb müssen Heizelemente immer mit Galden überdeckt sein > damit die nicht zu heiß werden können. Die Heizspiralen direkt in das Galden einzubauen würde ich auch nicht machen. So ein Cerankochfeld kostet 20€ oder so und ist sicher. Ich hab im Kochfeld ein SSR und ein Mininetzteil 3,3V eingebaut. Das Silikonkabel da rechts hat 3 Leitungen (Gnd, +3.3V und SSR- für mein Mosfet, SSR+ ist intern mit 3.3V verbunden). Mein Temperaturregler im Galden regelt rechtzeitig ab. Die kritische Temperatur von 290°C erreiche ich also nie.
Andreas J. schrieb: > Der zweite, dass PID ein Overshoot > nur "nachträglich" behandelt. Wenn es schon zu spät ist. > Und eben nicht vorausschauend behandeln kann. Unsinn. Genau dafür gibt es die differentielle Komponente. Deine Probleme ist sind nur: 1) du hast keinen Aktor mit proportionalem Verhalten 2) du hast eigentlich sogar zwei völlig verschiedene Aktoren (nämlich: eine Heizung mit hohem Energieeintrag und eine "Kühlung", die pro Zeiteinheit wesentlich weniger Energie aus dem System ablassen kann, als die Heizung in derselben Zeit zuführen kann. Das sind die tatsächlichen Probleme. Die sich aber mit einer modifizierten PID-Regelung durchaus lösen lassen. Im Wesentlichen muss sie nur insofern modifiziert werden, als dass es zwei Sätze von Komponenten-Faktoren gibt. Der eine gilt, wenn SOLL>IST, der andere, wenn SOLL<IST. Und natürlich müssen die Faktoren mit Rücksicht auf die Zweipunkt-Eigenschaften der Aktoren gewählt werden. Die entsprechen einfach mal nur einer extremen Verstärkung im Regelkreis (eigentlich natürlich zweier, verschiedener). Damit liegt die Lösung natürlich so klar auf der Hand, wie ein Furz in der Sonne: die Faktoren müssen sehr klein gewählt werden, besonders für den Fall SOLL>IST. Die Faktoren müssen so klein sein, dass die numerisches Auflösung zum Problem wird. Lösbar, wenn man weiß, was man tut.
Aha, sind wir schon beim Fluessigkeit Heizen. Dann braucht man sowieso keinen Temperaturfuehler zu Regeln. Die Temperatur geht bis zum Siedepunkt, dort will man die Fluessigkeit haben. Heisser geht eh nicht. Ich wuerd einfach die Heizleistug vorgeben. Mit zunehmender Heisleistung steigt der Pegel an Dampf im Topf. Den Poster sollte man verprugeln, 30% Verlust nach 30 Platinen ist ein ganz, ganz uebles Ozonschwein. Man wuerde maximale Anstrengungen zum Vermeiden von Verlust erwarten. Kommerzielle Anlagen haben einen Kuehlkragen oben an der Anlage, und allenfalls sogar eine Gasabsaugung, welche auch durch einen Kuehler geht. Wir haben in einer kommerziellen Anlage wirklich nur minimalste Verluste. Wegen solchen ueblen Ozonschweinen wie dem Poster hier werden diese Stoffe verboten... Meine Selbstbauanlage verwendet ein Array 5W Keramikwiderstaende, welche ich mit bis zu 30W belaste. Insgesammt stelle ich meine Anlage auf 600W zum Aufheizen ein. Ich habe auch einen wassergekuehltern Kragen oben am Topf. Der Deckel ist eigentlich immer geschlossen.
c-hater schrieb: > Unsinn. Genau dafür gibt es die differentielle Komponente. Du hast Recht. Gerade nachgelesen und versucht, im Code nachzuvollziehen. Und ja, der D-Anteil wird bei konstantem SOLL negativ. Dummerweise steigt bei mir der SOLL-Wert kontinuierlich, daher ist es mir nicht aufgefallen. Könnte trotzdem funktionieren, wenn man die Konstanten besser wählt vielleicht, keine Ahnung. Kp, Ki und Kd habe ich aus irgendeinem Beispiel genommen. Tatsächlich muss man die Werte aber an seine Bedingungen anpassen. Und das ist irgendwie schwer ohne Simulation, zumindest bräuchte man sowas für die Ziegler/Nichols Faustformel, wenn ich das richtig verstanden habe. Machen das 3D-Drucker beim PID-Tuning irgendwie automatisch? Weiß da jemand was drüber? Vielleicht gucke ich mir mal die Marlin-Sourcen an bei Gelegenheit... Ich gehe jedenfalls gerade weg von der PID und verfolge einen simpleren Ansatz (KISS wie man so schön sagt). So wie auf dem Bild. Rot=Heizung an, sonst aus, Blau=Lüfter an. Also im Prinzip so, wie ich es vorher schon beschrieben habe. Ich nutze bei einem Reflowprofil die Tatsache aus, dass ich sowieso mehrere Zonen habe, die die Temperatur in unterschiedlichen Schritten aber immer ansteigen lassen. Ich brauche also an keiner Stelle eine "Gegenregelung" (erst am Ende mit dem Lüfter). In der "Ramp up"-Phase schalte ich das SSR an, bis ich die SOLL-Temp erreicht habe. Danach bestimme ich den Overshoot. Und sobald (nach einer Mittelwertsbestimmung) die Temp wieder fällt, schalte ich das SSR für eine bestimmte Zeit lang t(x) ein. Die Zeit berechne ich aus der Steigung der ersten Linie. So halte ich die Temp in der "Preheating"-Zone. In der "Reflow"-Zone gehe ich auf SOLL-Overshoot. Und halte hier ebenfalls die Temp mit t(x). In der "Cooling"-Phase schalte ich SSR aus und den Lüfter ein. Den Lüfter dann vielleicht über PID, mal sehen. t(x) zu bestimmen ist das einzige, was ein bisschen tricky ist. Für die Alu 8mm-Variante ist der Wert eh 0...
Nun ist es doch ein obersimpler Zwei-Punkt-Regler geworden. Bei dem Stellglied gehts ja fast nicht anders.
das wird zum Löten dicke reichen. Der PID braucht natürlich passende Werte für die jeweiligen Anteile, auch das Autotuning im Marlin braucht halbwegs passende Startwerte, eventuell macht man das 2 oder 3 mal wenn die Startwerte zu schlecht waren. Über den GCode gibt man eine max Temperatur vor und eine Anzahl Zyklen zum Lernen, man müsste sogar direkt Marlin verwenden können um das zu Testen.
In der Repetier-Firmware[1] gibt es einen Regler der sehr gut mit Totzeit umgehen kann. Super simpel und einfach einzustellen über die Sprungantwort und ablesen. [1] https://www.repetier.com/dead-time-control/
Nico T. schrieb: > In der Repetier-Firmware[1] gibt es einen Regler der sehr gut mit > Totzeit umgehen kann... Danke Dir! Die Totzeit zu berechnen versuche ich gerade per Software zu lösen. Wenn ich mir in der RampUp-Zone (s.o.) bis zum Erreichen der Zieltemperatur R = max(temp((IST(aktuell)-IST(davor))/T) speichere, müsste ich doch die maximale Steigung bekommen (sorry, wenn ich hier nicht die korrekten Fachausdrücke verwende, bin nur Informatiker, kein Mathematiker ;-)). Also quasi die Steigerung der Linie im Totzeitdiagram von Nico's Link [1]. Dann müsste ich mit R/2 doch ziemlich gut (nur näherungsweise natürlich) den Totzeitpunkt treffen, oder? Die horizontale Linie ist ja 0.
Andreas J. schrieb: > Dann müsste ich mit R/2 doch ziemlich gut (nur näherungsweise natürlich) > den Totzeitpunkt treffen, oder? Es gibt keinen "Totzeitpunkt". Die Totzeit ist eine Verzögerung. Die Verzögerung, die es benötigt wenn das Stellglied verändert wird (Heizleistung), bis der Prozesswert (Temperatur) anfängt sich zu verändern. Dieser "Anfang" der Veränderung ist manchmal nicht so gut zu sehen, da behilft man sich eben mit einer Schätzung anhand einer Aufzeichnung des Stelllwerts und Prozesswert gegen die Zeit. Bei dem Beispiel im Link wird die Totzeit mit der Tangente in der Regel zu groß geschätzt. Macht aber in diesem Zusammenhang nichts, da man besser die Totzeit überschätzen sollte als unterschätzen. Mit der Totzeit und der Steigung der Temperatur (überwiegend integrierende Strecke), kann man ein PID-Regler wunderbar einstellen. Um ihn schneller zu bekommen, muss man aber verstehen, dass Sollwert anfahren und Sollwert halten zwei Paar Stiefel sind. Wenn man Zeit hat, kann man einen PID-Regler auch zur Sollwertanfahrt benutzten. Aber bei viele Temperaturregelungsaufgaben ist die Totzeit klein im Vergleich zur benötigten Aufheizzeit. Da kann man dann intelligenter Einschalten: In der ersten Phase wird die Heizung zu 100% eingeschaltet. Mit Hilfe der Totzeit wird der Prozesswert in die Zukunft extrapoliert. Also das Prozess-Delta einer vergangen Totzeit auf den aktuellen Prozesswert addiert. So schätzt man den Prozesswert in der Zukunft in einer Totzeit-Einheit. Sobald man (mit etwas Sicherheitsabstand) den Sollwert in der Zukunft erreichen würde, wechselt man in Phase 2. In Phase 2 legt man für die Dauer einer Totzeit einen festen Stellwert an den Prozess an, und zwar den wo man für den gewünschten Prozesswert erwartet. Den hat man vorher einfach ausprobiert, oder lernt ihn von der jeweils letzten, stabilen Regelphase oder rechnet ihn mit einem Modell aus. Nach Ablauf einer Totzeit kommt Phase 3. In Phase 3 schaltet man endlich den PID-Regler auf, der den Prozesswert konstant hält. Dieser PID-Regler ist auf das zeitliche Verhalten der Strecke inkl. Totzeit und dominierender Zeitkonstante optimiert. Wenn man bekannte Störer hat, z.B. einen Lüfter den man einschaltet, lässt man den natürlich per Feedforward auch in den Stellwert einfließen, gerade wenn man merklich Totzeiten hat die man gerne ausregeln möchte.
Montier den Temperaturfühler möglichst dicht an der Heizung. Die Totzeit wird dadurch nahezu eliminiert. Eine reine PT2-Strecke läßt sich dann leicht regeln mit minimalem Überschwingen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.