Hallo Ich muss einen Regler entwickeln, welcher den Motor einer Luftpumpe steuert. Das Ziel ist einen Unterdruck in einem kleinem Behälter zu erzeugen, und dass der Druckverlauf eine definierte Kurve verläuft. Das heisst den Solldruck vom Regelsystem ändert sich mit der Zeit. Kann ich für eine solche Anwendung einen PID Regler einsetzen? Nach meiner Meinung, nein, da PID Regler nur für konstante Sollgrösse gedacht sind. Das Problem ist das ich sonst nicht genau weiss, was ich anwenden soll. Kann mir jemand helfen, den Weg zu finden? Danke! Gjom
Prinzipiell kannst du (fast) immer nen PID Regler anwenden. Wie das Regelverhalten an deiner Strecke ist, das stellst du dann über die Regelparameter ein. Wenn du ne entsprechende Dynamik brauchst, dann musst eben an den entsprechenden "Schrauben" drehen. Der Regler sollte dann eben so schnell sein, dass deine dynamische Druckänderung entsprechend noch aufgelöst werden kann.
Hallo Gjom, ein PID Regler ist wahrscheinlich sogar die beste Wahl, da die Ausregelzeiten über die drei Verhaltensweisen P-I-D optimiert werden können. Den Druckverlauf musst Du eben als Sollwert vorgeben, das geht von 0...100%. Genauere Infos, wie so ein Regler einzustellen ist, findest Du reichlich im Web. Pi mal Daumen ereichst Du eine gute Regelzeit, wenn die Sprungantwort 4% Überschwingen zeigt. Grüße Lothar
Klar kannst du das auch mit einem PID-Regler realisieren, du brauchst dort ja nur den Sollwert ändern. Ich würde den PID-Regler für einen ersten Test auf einen Sollwert von ca. 2/3 des Endwertes einstellen und dann mal beobachten, wie das System auf verschiedenste Sollwertänderungen reagiert. Abhängig davon welche Toleranzen du hast und wie schnell dein System reagiert, musst du den Sollwert entsprechend früh genug ändern. Vielleicht hat ja noch jemand anders weitere Ideen. Grüße Hans
Danke für die Antworte (es ging schnell!!!). Also, den PID Regler habe ich programmiert und ein Paar Tests gemacht. Die PID Parameter habe ich mit der Ziegler-Nichols Methode optimiert. Es sieht so aus, dass es funktioniert (als Benchmark habe ich als Solldruckverlauf eine Sinuskurve genommen). Aber ich habe irgendwie das Gefühl, dass es nicht die optimalste Lösung. Ich meine, man kennt den gewünschten Druckverlauf, und intuitiv würde ich dann sagen, dass man die "Geschichte" des Fehlers (Fehler=Solldruck - Istdruck) nicht betrachten braucht. Und dieser Fehler wird doch im I-Teil vom Regler integriert. Und ich muss sagen, dass für den Sprungantwort, ergibt den PD Regler die besseren Resultate (also einen PID ohne Integralteil). Irgendwie würde ich anstatt nach hinten (auf der Zeitachse) schauen nach vorne schauen und den Regler schon bei der Zeit t den Solldruck von der Zeit i+1 (anstatt den Solldruck der Zeit i-1) mitteilen. Ist das irgendwie möglich? Gruss Gjom.
Wenn der PD-Regler die Anforderungen bezüglich statischem Endwert erfüllt, spricht nichts dagegen, den I-Anteil wegzulassen. Der macht sonst nur Probleme. Auch die Dynamik wird ohne im Allgemeinen höher.
Hallo, hast du den Regler durch erhöhen der Verstärkung bis zum Eintritt der Instabilität eingestellt oder nach der Tabelle von Ziegler-Nichols? Wenn die Schwierigkeit der Strecke unter 0,3 ist und du eine Sprungantwort der Strecke aufnehmen kannst machst empfehle ich dir die Tabelle von Chien, Hrones und Reswick (ist bestimmt min. ein Name falsch geschrieben) oder noch besser das Summenzeitverfahren nach Kuhn (das beste experimentelle Verfahren das es gibt) ist nämlich alles besser als Ziegler-Nichols. Dem Regler ist es übrigens egal ob er eine Führungsgröße (dynamischer Sollwert) oder eben einen statischen Sollwert bekommt.
Hi Frank, der integrale Anteil sogt für die Minimierung der Regelabweichung. Weglassen würde ich ihn nicht, höchsten schwächer einstellen. Hängt aber von der Zeitkonstante/Totzeit des Regelkreises ab. Da Druck nicht ganz ohne ist, Thermodynamik, ich denke da nur an einen Adiabatenexponenten, ist probieren wahrscheinlich die beste Lösung. Ansonsten kann es ausarten... einen Dirac-Stoß auf das System und danach eine intelligente Regelung adaptiv entwerfen?? Das wärs, die Idee hätte ich dann gern in der Codesammlung. @Gjom: wenn es nicht grade Dein (c) verletzt, stell Deinen Code mal rein, interessiert sicher nicht nur mich und Profis sind hier genug vertreten, die immer was (zu meckern) dazu beitragen können ;o)) Grüßle Lothar
Ich verstehe was du meinst: man kennt ja die Dynamik der Strecke (mit einer gewissen unsicherheit). Was du versuchen kannst: eine Vorsteuerung der Stellgrösse. Man stellt die Stellgrösse so gut es geht mit Berechnungen (die man aus dem mathematischen Modell kennt) ein. Dies geht sehr schnell da, da nicht erst ein Fehler (Soll- Ist-Wertabweichung) entstehen muss bis der Regler was macht. Den Fehler der dann noch existiert wird mit dem PID (oder PD, weas dann auch immer besser zu deinem Problem passt) ausgebügelt. Das macht der Mensch ja auch so: wenn man eine Kiste vor sich hat, dann schätzen wir zuerst das Gewicht und steuern so die auf zu wendende Kraft beim anheben vor. Man geht nicht an die Kiste und beginnt mit einer kleinen Kraft und erhöht sie bis sich die Kiste anhebt... schon einmal einen Bierkasten mit vermeintlich vollen Flaschen angehobe, der nur leere Flaschen enthält? Das gibt dann ein schönes "Überschwingen".
@Lothar Der I-Anteil ist bei manchen Systemen das notwendige Übel um statische Abweichungen zu beseitigen. Wie ich schon geschreiben habe: >Wenn der PD-Regler die Anforderungen bezüglich statischem Endwert >erfüllt [...] Schwächer einstellen kann das auch noch schlimmer (= unsäglich langsam) machen. Wenn, dann schon richtig einstellen, so dass es zum System passt. In diesem Fall könnte es sein, dass kein I-Anteil nötig ist, weil der Druck gegenüber dem Volumenstrom schon I-Verhalten zeigt. Abgesehen davon hat man mit ziemlicher Sicherheit ein krass stellgrößenbegrenztes System. Da können die üblichen Einstellregeln auch mal nach hinten losgehen.
..... und die Enttäuschung über die leeren Flaschen, was nix mit Regelungstechnik zu tun hat, so ist Man(n) eben. Trotzdem, wenn jemand genügend IQ hat, so einen Regler intelligent zu gestalten, sprich echte adaptive Anpassung an den Regelkreis, das wäre super.
@Frank Den schnellen Teil soll ja auch der P-Anteil übernehmen und nicht der I-Anteil, auf den ich übrigens auch nicht verzichten würde. Es kommt immer darauf an wie schnell die Strecke ist, ich denke mal diese ist recht träge. Wenn der I-Anteil dann zu schnell ist ein Wind-Up nicht zu vernachlässigen. MfG Christian
Ach ja wenn die Strecke natürlich ein I-Verhalten aufweist sollte der Regler natürlich keinen I-Anteil besitzen.
Sorry, meine Semester in Regelungstechnik sind schon Geschichte, aber was wie wirkt, das ändert sich auch in 50 Jahren nicht. Für schnelle Änderungen ist der D-Anteil zuständig, unterstüzt von P. Für die absolute Ausregelung dann der I-Anteil. Für exakte Betrachtungen sollte mal ein echter Regelungstechniker einsteigen. Fakt ist, die Strecke ist entscheidend. Druck ist mit Sicherheit eine Kategogie 1.-2. Grades, Temperatur 3.-4 Grades oder höher.
Hallo Also zuerst, den Code. Kurze Erklärung wie es läuft: ich habe einen AVR mikro-Kontroller (einen ATMega64 von Atmel) auf einer Platine. Die Platine hat einen Ausgang für den PWM Signal für den Motor von der Pumpe, einen Eingang für den Analog Signal vom Drucksensor und noch einen RS232 Port für die Kommunication mit LabView. Das Experiment läuft so ab: in LabView, definiere ich einen Druckverlauf, und speichere den als Spaltenvektoren (ein Vektor für die Zeit, ein für den Druck, und dürfen maximal 100 Elemente haben, wegen Speicherplatz im mikro-Kontroller). Dann werden die verschiedene Parameter (PID, Anzahl Zyklen, usw.) in der Graphische Oberfläche eingegeben. Dann schickt LabView alle benötigten Parameter via den RS232 Port zu dem ATMega64. Wenn alle Daten übertragen wurden, startet de mikro-Kontroller den Regelkreis und er ist unabhängig von LabView. LabView arbeitet aber noch im Hintergrung, er liest den Druck vom Drucksensor aus einem zweiten Kontroller (einen ATMega32), der nur für diesen Zweick gebraucht wird (also Analog->Digital Umwandler). [Edit] Ach ja, für das Programmieren habe ich Bascom 1.11.8.3 benützt. Den code wurde also im Bascom BASIC geschrieben. [/EDIT] Christian :> für Ziegler-Nichols bin ich genau wie du es beschrieben hast vorgegangen (also kritische Kp finden, Schwingfrequenz usw. ) Die anderen Methoden kannte ich nicht, ich werde sie heute noch ausprobieren! Danke!
@Lothar Scheinbar ist dein Wissen nicht mehr ganz taufrisch oder wenig mit der Praxis in Berührung gekommen. In realen Systemen mit Begrenzungen dient der D-Anteil vornehmlich der Bekämpfung von Überschwingen. Der eine kurze peak bei sprunghafter Sollwertänderung ist in der hässlichen, da nichtlinearen Realität kaum relevant, ein DT1 Glied würde zwar die eingeleitete Energie auf einen längeren Zeitraum verteilen, hat aber eine zusätzliche Phasenverschiebung zur Folge, was das System insgesamt wieder weniger stabil werden lässt. Der I-Anteil ist auf Begrenzungen ohne Gegenmaßnahmen auch nicht gut zu sprechen und ABHÄNGIG VON DEN ANFORDERUNGEN GAR NICHT NÖTIG. Der Threadstarter sagte ja schon, dass der PD die besseren Resultate liefert. Falls der statische Endwert doch noch genauer werden soll, gibt es einige Möglichkeiten, das auch noch ohne Integrierer zu erreichen. Eine an den Abfluss (falls es einen gibt) angepasste Sollwertverstärkung oder auch ein zusätzlicher Sollwertsprung leisten manchmal gute Dienste. Letzteres vor allem, wenn zwar verschiedene Sollwerte möglich sind, diese aber immer über einen längeren Zeitraum gehalten werden müssen. Da der Regler digital implementiert ist, sollte das kaum Probleme machen. Je nach System und vorhandenen Sensoren kann auch eine Zustandsregelung, evtl. mit einem internal model interessant sein.
@ Guillaume Ich habe mal eine PDF angehangen die eine Übersicht und die Vorgehensweise sowie die Tabellen für experimentelle Reglerentwurfsverfahren bietet. Viel Erfolg
@Frank Mein Wissen ist mit Sicherheit nicht taufrisch. Ich habe mal Motorregelungen mit analogen PID Reglern eingestellt. Leistungsklasse 150kW - 1,5MW. Also mit einem Schraubendreher, einem Sollwertgenerator und einem Oszi am Tacho die drei Parameter verändert. Der D-Faktor, die differentielle Änderung hat immer am stärksten zugeschlagen. Meine Vorgabe war halt schnellste Sprungantwort bei max. 4% Überschwingen. Wie gesagt, es gibt mit Sicherheit einige Regelungsspezialisten die das im Deail auseinandernehmen können. Mich würde trotzdem interessieren, wie man einen Regler adatptiv an ein System anpassen kann. Ein Dirac-Stoß ist Theorie, aber wenn, in Berücksichtigung der Strecke, für eine begrenzte Zeit volle Leistung aufs System gegeben wird, ist die Totzeit und die Reaktionszeit des Systems (Anstieg der Istgröße) ermittelbar. Daraus die erforderlichen Parameter ermitteln und beim laufenden Prozess immer wieder anzupassen, das ist das, was ich unter einem intelligenten Regler verstehe. Die Siemens S7 kann das, glaube ich. Für meinen Lötkolben ist das vielleicht nicht nötig, die Herausforderung ist aber da. So sehe ich mein Bastlerleben. Das mathematische Modell ist sicher recht kompliziert, Power an, an der Lötspitze tut sich 2-3s nix. Tiefpasswirkung bestimmt 3. Grades. Wenns dann warm wird, wie verhält sich Strahlung zu Konvektion. Die Realität ist immer nur mit Einschränkungen abbildbar. Wenn man sich dessen bewust ist, kommen auch so recht respektabele Ergebnisse zu Stande. Ich denke da nur an die Chaostheorie mit dem Schmetterligsschlag. FG Lothar Grüß Lothar
@Christian Ich habe probiert die Kuhn und die Chien/Hrones/Reswick Methode anzuwenden, aber ich bin nicht sicher, sie sind für mein System geeignet. Den Sprungantwort von der Pumpe/Behälrter/Sensor System (also ohne Regler, oder besser gesagt nur den P Anteil ist gleich 1, alle andere gleich 0 gesetzt) ist keine S-Kurve (siehe PDF). Wenn ich es richtig verstanden habe, diese Methoden können nur für Antwort mit einer S-Kurven Form angewendet werden, oder?
Was du gemessen hast ist nicht die Sprungantwort der Strecke, sondern die eines P-Reglers mit Verstärkung 1. Du musst die Rückführung auftrennen.
Hi, ich gehe mal davon aus das du die Sprungantwort richtig aufgenommen hast und sehe da sehr wohl einen Wendepunkt an dem man die Tangente anlegen kann. Ich hab das mal kurz für Kuhn und Chien, Hrones & Co. gemacht. Am besten du schaust mittels eines Lineals über den Ausdruck der Sprungantwort aber so ungefähr sollten die Werte stimmen. Experimentell ist halt nicht der Hit aber wenn man keine mathematische Beschreibung der Regelstrecke hat...
Achja habe ich vergessen zu erwähnen der rote Kreis soll den WP darstellen (im 2. Bild). Die Totzeit ist sehr klein deswegen denke ich kann man auch Kuhn versuchen, nennen sich ja auch experimentelle Reglereinstellverfahren. Also ruhig noch ein bissl um den ermittelten Wert herumexperimentieren denn die ermittelten Werte sind nicht zwangsläufig die bestmöglichen. MfG Christian
@Christian Danke für die Hilfe. Ich habe Matlab Programme geschrieben um Tsum, Tu und Tg automatisch berechnen zu können, und noch eine System Identifikation für die 1. Methode von Ziegler-Nichols. Falls es jemand braucht. Ich habe entlich ein gutes Buch für Ingenieur über Regelungstechnik (von Reuter und Zacher) und kann jetzt die Theorie auch noch besser verstehen!
Hast du die Messdaten in MATLAB importiert und dann ausgewertet? Hab kein MATLAB auf diesen Rechner und kann mir deine Files nicht anschauen! Welches Verfahren hat dir die besten Einstellwerte geliefert? Wenn du dich weiter einarbeiten willst kann ich dir auch dieses Buch empfehlen: Grundkurs der Regelungstechnik. Mit Anwendung der Student Edition of MATLAB und SIMULINK (Taschenbuch) MfG Christian
Ja genau, ich habe M-files geschrieben, um die Experimenten Daten zu lesen, und dann die verschiedene Werte zu berechnen. Im Moment, die Ziegler-Nichols Methode (die 1. Methode, die die statische Verstärkung, Zeitkonstante und Totzeit einer Streke 1. Ordnung mit Totzeit benützt). Aber ich muss sagen, ich bin noch gar nicht sicher mein PID Algorithmus ist richtig. Den I-Teil funktioniert nicht richtig wenn ich es mathematisch richtig diskretisiere und gibt vernünftige Resultate wenn die Integration "falsch" implementiert ist. Ich muss da noch ein bisschen weiter suchen. Ist das Buch, das du empfehlst von Merz? [EDIT] Falls du kein Matlab hast, probier mal das: http://www.scilab.org/ Ist ein Open-Source Matlab like Program und liest m-files [\EDIT]
Danke für den Link aber ich besitze MATLAB nur ist es nicht auf den Rechner installiert vor dem ich gerade sitze. Das Buch ist von Manfred Berger, hier mal der Link zu Amazon: http://www.amazon.de/Grundkurs-Regelungstechnik-Anwendung-Student-SIMULINK/dp/3831108471/ref=pd_bbs_sr_5/028-0079725-2638904?ie=UTF8&s=books&qid=1188381668&sr=8-5 Was mir aber jetzt noch so einfällt es sit ja kein stetiger Regler den du letztendlich hast und die genannten experimentellen Einstellverfahren gelten meines Wissens nur für stetige Regler. Habe damals aber noch was von Takahashi Einstellregeln für diskrete Regler gehört aber nie angewandt. Hier mal ein Link dazu und noch viel mehr: http://www.hetzner.com/beer/pdf/regtech.pdf MfG Christian
Diese Takahashi Tabelle habe ich auch im oben erwähnten Buch gefunden mit den entsprechenden Kriterien für die Abtastfrequenz.
Würde mich dann mal interresieren wie die Ergebnisse sind nachdem du das Takahashi Einstellverfahren angewandt hast...
Frank wrote: > Was du gemessen hast ist nicht die Sprungantwort der Strecke, sondern > die eines P-Reglers mit Verstärkung 1. Du musst die Rückführung > auftrennen. Hallo Frank Sorry, ich habe deinen Antwort nicht gesehen... Ich verstehe nicht, was du meinst. Wenn ich die Rückführung trenne, wird meine Pump einfach mit maximaler Geschwindigkeit luft im Behälter pumpen. Ich meine, wenn der Eingangssignal vom Motor plötzlich von 0 auf irgendeinem Wert springt, dann entspricht es die Drehgeschwindigkeit meines Motors. Und ich verstehe dann den Sinn nicht von dem...
@Christian Hier die erste Resultate mit einem richtigen PID Algorithmus (hatte die Begrenzung des Integrator Teils vergessen...). Es hat wenig Unterschied zwischen die erste Methode von Ziegler-Nichols (mit dem PT1 Glied) und Takahashi. Kuhn liefert schlechte Resultate wegen den sehr tiefen Kp Wert (siehe Excel Spreadsheet). Die zweit Methode von Ziegler-Nichols (Kp erhöhen bis es instabil wird) liefert fast bessere Resultate (Kp und Ki sind viel grösser). Ich habe einen kurzen Test gemacht mit einem kleineren Volumen (5 Mal kleiner) und neue PID Parameter und diese Methode ist dann ziemlich schlecht, weil der Regler zu schnell reagiert und der Volumen dann zu wenig dämpft. Gruss
Wenn du die Rückführung nicht auftrennst, hast du ja immer noch einen Regelkreis. Für diese Einstellmethoden (ohne Ziegler-Nichols) wird aber die Sprungantwort der Strecke benötigt. Und zwar die Sprungantwort der Strecke ganz alleine. Der Regler verändert auch mit Verstärkung 1 diese Sprungantwort. Du solltest also z.B. 5 V auf den Motor geben und messen, was der Ausgang (=Druck) antwortet. Daraus kann man dann die Parameter herschätzen. Es ist dir übrigens auch niemand böse, wenn du etwas mehr zum Aufbau rausrückst. Z.B. könnte ich mir vorstellen, dass der Motor nur pumpen und nicht saugen kann. Das wäre dann schon wieder eine krasse Nichtlinearität. Hat der Druckbehälter einen Abfluss? Oder ist das relativ statisch? All diese Dinge wären interessant. Im übrigen würde ich (andere mögen das anders sehen) eine vernünftige physikalische Modellbildung machen und dann einen geeigneten Regler auswählen. Der muss ja nicht zwangsweise linear sein...
Die Resultate, die oben erwähnt wurden, sind in diesem File enthalten. @Frank Du hast recht, eine bessere Erklärung vom System wäre nicht schlecht. Die Pump ist eine peristaltische Pumpe von Watson-Marlow (http://www.watson-marlow.com/watson-marlow/p-oem300.htm) mit einem 3-Roller Kopf. Die Pumpe kann Luft in beiden Richtungen Pumpen (Druck und Vakuum). Der Motor der Pumpe ist ein DC Motor, und als Eingang gebe ich einen PWM Signal (zwischen 0 und 255). Der Druckbehälter ist geschlossen. Es fliesst keine Luft nach aussen oder nach Innen während der Messung (ausser durch die Pumpe). Dieses System wird während Operationen im Spital benützt, um menschlichen Gewebe (Leber, Galenblase, ...) zu belasten. Die erzeugte Deformation wird dann mit einer Kamera aufgenommen. Diese Deformation und den gemessenem Druckverlauf werden dann mittels einer Rückwerts-FEM-Methode benützt um die mechanischen Parametern von einem konstitutiven Gesetz (für die Gewebe) zu finden (durch Parameteroptimisation). Ich wollte auch das System physikalisch zuerst modellieren. Aber ich bin auf ein Paar Problem gestossen: der Schlauch, der zwischen die Pumpe und das Messgerät ist, ist 3m lang. Durch die innere Reibung gibt es einen Druckabfall, der nicht vernachlässigbar ist. Der zweite Punkt, ist dass ich Probleme habe die Übertragungsfunktion der Pumpe zu bekommen. Dazu ist der Ausgangsflussrate der Pumpe abhängig von der aktuellen Druck im Druckbehälter. Ich werde wieder mal versuchen alles mathematisch zu beschreiben, aber ich denke meine Kenntnisse in Fluiddynamik werden leider nicht reichen... Vermute ich.
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.