Hallo, ich versuche eine PID Regelung hinzukriegen. Geregelt werden soll später einmal ein Verbrennungsmotor. Der Aktor wäre eine Drehschieber. Mit einer PWM wird ein Segment gegen eine Feder gedreht und gibt so einen Schlitz frei. Die Drehzahl steht mir als 8Bit Wert zur Verfügung. (0..255 -> 0 bis 7.650) Die Regelstrecke dürfte doch recht langsam sein. Heisst das dass der I Anteil relativ klein sein muss, da die Regelstrecke schon integriert ? Stimmt es das ich beim I Anteil zwischen dem Integrationsfaktor und dem TauI unterscheiden muss ? Lässt sich das so wie im angehängten Programm machen ? Das neigt immer noch zum überschwingen, kann man das noch wegbekommen ? Gemessen wird die Umlaufzeit, sollte ich vielleicht eher auf diese Regeln ? Somit wäre die Quantelung auf 30U/min hinfällig. Klar ist mir das sich der Motor nicht zwei punktartig verhält und nicht wirklich simuliert wird...
Die Drehzahl des Verbrennungsmotors soll geregelt werden ? Ja. Ein Verbrennungsmotor ist eine nichtlineare Geschichte. Und zusaetzlich von der Vorgeschichte abhaengig. Ist er auf einen Sockel, statisch, oder wird er in einem Fahrzeug bewegt ? Das waer dann nochmals was. Ein PID ist nur ein Anfang. Man kann ihn ohne viel Vorwissen einstellen, er wird aber seine Limiten zeigen. Wenn man besser sein will, muss man Modelle von zunehmender Wirklichkeitstreue einbringen.
Ahha ! Das Teil bewegt ein Fahrzeug. Also wäre es vielleicht besser über das erzeugte und benötigte Drehmoment zu rechnen ? Empirisch werde ich da aber nicht sehr weit kommen, oder ? ;) Die Einspritzzeit dürfte bei Lambda = 1 ein guter Indikator für das erzeugt Drehmoment sein... Aber die Last lässt sich doch nicht genau bestimmen !? Motor warm/kalt, Zusatzverbraucher, Schleifende Kupplung. Ich denke ich versuche den PID mal zeitbasiert am Objekt.
Thomas schrieb: > Heisst das dass der I Anteil relativ klein sein muss, > da die Regelstrecke schon integriert ? Das tut sie ja nicht, eine Verzögerung ist keine Integration. Hat die Regelstrecke eine Totzeit, passiert in dieser Zeit eben garnichts. Das Problem ist, dass bei einer langsamen Reaktion oder gar Totzeit der I-Anteil den Regler überschwingen lässt - der I-Anteil erhöht ja den Ausgang des Reglers immer weiter, während die Regelstrecke noch garnicht reagiert. Also Verzögerungen und viel I ist praktisch eine Garantie für Regelschwingungen. Wenn man I unbedingt braucht, um die Regelabweichung auf Null zu bringen, muss die Zeitkonstante für die Integration deutlich länger sein als die Reaktionszeit der Regelstrecke. Gruss Reinhard
Hallo Reinhard, wenn ich das jetzt richtig verstehe (was ich nicht tue;) wäre so eine Verzögerung bzw Totzeit weder mit dem Abtastintervall (=100Hz) noch mit dem Ti in den Griff zu bekommen. Würde ich "einfach nur den Output verzögern" komme ich auch nicht weiter, denn wenn der Motor bei 600UPM dreht wäre es vielleicht nicht ganz so schlecht 100% zu geben ? Mein Problem ist, wenn ich mich ernsthaft mit Regelungstechnik befasse, komme ich ganz schnell an Stoff in FH Niveau. Das geht in meine unbefleckte Birne nicht rein. Deshalb werde ich jetzt mehr mach und weniger Labern :)
Eine dumme frage habe ich noch. Der Motor benötige wenn er "eingschwungen" ist doch genau eine bestimmte PWM um die Drehzahl zu halten (Summe der Drehmomente = 0 -> Drehzahl bleibt gleich). Da es jetzt keinen Fehler mehr gibt liefern P und D Regler 0 zurück, jetzt wirkt doch nur noch das I Glied. Oder addiere ich zum Regler Ausgang einfach ein Offset hinzu ?
Die Idee war das es eine PWM gibt bei der der Motor weder beschleunigt noch verzögert. Der Punkt ist bei Betriebswarmen Motor bei ca 40%. Wenn man jetzt genau diesen Punkt als Offset nähme wäre der Einfluss des Integrator nahe null. Ich kenne diesen Punkt zwar nicht, aber dessen Bereich. Der Regler könnte dann doch gar nicht mehr stark überschwingen ?! Ohne Offset muss Ti grösser sein, damit er z.b. die 40% ausregeln kann. Ist das Müll ?
Thomas schrieb: > Der Aktor wäre eine Drehschieber. > Mit einer PWM wird ein Segment gegen eine Feder gedreht und gibt so > einen Schlitz frei. ist das jetzt ein mechanischer Vergaser .... Thomas schrieb: > Die Einspritzzeit dürfte bei Lambda = 1 ein guter Indikator für das > erzeugt Drehmoment sein... ... oder ein Einspritzsystem? Thomas schrieb: > Ist das Müll ? klar. So einfach ist das nicht. Beschäftige dich erst mal mit den Grundlagen eines Verbrenners. Um beim Otto überhaupt ein brennfähiges Gemisch hinzukriegen muß erst mal die Luftmenge zur eingespritzten Kraftstoffmenge innerhalb eines Bereiches passen. Der Motor läuft außerdem nicht "rund" die Drehzahl ändert sich ständig beim Verdichten und Verbrennen. Die Einspritzzeit ist bei kleinen Ansteuerdauern stark nichtlinear und auch noch Batteriespannungsabhängig. Das Drehmoment ist außerdem noch vom Zündzeitpunkt abhängig. In einer realen Motorsteuerung wird alles erst mal über Kennfelder gesteuert betrieben. Bestimmte Streckenteile werden modelliert (Prädiktionsalgorithmen um die Totzeit zu minimieren). Ein (Leerlauf-) Regler der dann noch überlagert wird hat nur noch ganz wenig Arbeit zu leisten. Gruß Anja
>klar. So einfach ist das nicht. Beschäftige dich erst mal mit den >Grundlagen eines Verbrenners. >Um beim Otto [...] Der TO schreibt von einem Drehschieber den er steuern will -> Vergaser. Wir reden also nicht über Blue-Tec o.ä. sondern über nen rustikalen Zweitakter der vermutlich in einem Stromaggregat o.ä. eingebaut war. An den TO: Ich denke mal, ohne Trial&Error wirst du da nicht weit kommen. Andererseits machts ja auch Spaß so nem Biest die entsprechenden drehzahlabhängigen Manieren beizubringen. Was wird'n das am Ende? Nen Go-Cart mit Tempomat? Oder so ne Art Ackerbau- u. Viehzucht-Selbstfahrer?
Zum Verbrenner kann ich nichts sagen. Für Strecken mit signifikanter Totzeit und dennoch guten Regeleigenschaften ist ein "Beobachter" (aka Glaskugel) üblich. Der Beobachter schätzt dann nach den Stellgrößen, Messdaten und bekannten Eigenschaften der Regelstrecke wohin die Reise geht und wird nach Bedarf den realen Messadten zugemischt. Stephan
Nein Anja, das Teil hat eine Multipoint Saugrohreinspritzung. Hauptgrösse für die Einspritzzeit ist der Saugrohrunterdruck. Korrekturfaktoren sind Kühlmitteltemperatur, Drosselklappenwinkel (Beschleunigungsanreicherung, Volllastkurve -> Popometer) und eine Sprungsonde. Umgebungsdruck wird bei Motostillstand gemessen. Früher bei den Jetronics hies der Bypass um die Drosselklappe Zusatzluftschieber und war eigentlich nur für den Kaltstart. Das Teil was bei mir verbaut ist heisst Leerlaufdrehsteller, Entschuldigung. Bei 0% PWM ist das Teil im Notlauf (siehe Anhang). Ab ca 30 - 40 % PWM ist das Teil zu. Danach geht es bis ca 90% PWM komplett auf. Ziemlich linear (mit leichter Temperatur und Dreckabhängigkeit)...
1 | void setIdleValve (int8_t idleValue) |
2 | {
|
3 | if (idleValue >= 0) // Normalbetrieb, normiert auf 0..127 |
4 | {
|
5 | aktor.idlePWM = IDLEVALVE_Close + (((IDLEVALVE_Open - IDLEVALVE_Close) * idleValue) / 127); |
6 | }
|
7 | else aktor.idlePWM = IDLEVALVE_Fail; // Notlaufspalt |
8 | |
9 | return; |
10 | }
|
Die Bedeutung der Laufgrenze kenne ich. Anja schrieb: > In einer realen Motorsteuerung wird alles erst mal über Kennfelder > gesteuert betrieben. Bestimmte Streckenteile werden modelliert > (Prädiktionsalgorithmen um die Totzeit zu minimieren). Ein (Leerlauf-) > Regler der dann noch überlagert wird hat nur noch ganz wenig Arbeit zu > leisten. Hier wird es gerade interessant. Meinst Du wie meine Vorhaltemethode weiter oben ? Nur um mehr Kennfeldabhängige Betriebspunkte ergänzt ? Anfang der Neuziger gab es sowas wie eine momentenbasierte Steuerung noch nicht. Hat man dort auch schon in die Zukunft geschaut ? Hast Du eine Quelle zum lesen für mich ? Joachim ... schrieb: > Ich denke mal, ohne Trial&Error wirst du da nicht weit kommen. > Andererseits machts ja auch Spaß so nem Biest die entsprechenden > drehzahlabhängigen Manieren beizubringen. Was wird'n das am Ende? Nen > Go-Cart mit Tempomat? Oder so ne Art Ackerbau- u. > Viehzucht-Selbstfahrer? Denkst Du mit einem PID ist das in den Griff zu bekommen ? Soweit ich das richtig herausgelesen habe, benutzen die Megasquirt Jungs auch "nur" einen PID Regler. Nee, kein Kartoffelschlepper. Einfach nur ein "Rennauto" mit der Philosophie Selbstgemacht. Da brauchts keinen Tempomat ;)
Die wichtigste Größe bei einem Verbrenner ist immer noch die Drehzahl, danach richtet sich die ganze Regelung, selbst bei den modernsten Motoren. Erst danach kommt die ganze Spielerei mit der Drehmomentmessung bzw. -schätzung. Miss einfach die Drehzahl und steuere deinen Vergaser bzw. die Einspritzung dementsprechend an.
Hallo, hier mal ein kleiner Tip aus der Reglungstechnik Je genauer die Regelstrecke zum Ausgleich kommen soll, umso größer muss den Proportionalfaktor sein. Ein überschwingen wird verhindert, wenn die Zeitkonstante t = ti ;) Alternativ würde ich den I Anteil erhöhen und die nachstellzeit veringern (somit wird das ganze träger und ein ausgleich dauert einen Moment länger Wobei ich aber nicht verstehe wieso das das über einen µC machst. Entweder Direkt einen Regler von der Stange kaufen, der hat alles drin was du brauchst und sollte für den Anfang reichen. anschluss Regler: X = Drezahlsteller (Position) W = Pedalstellung ("Poti am Pedal") Y = Ausgang zum Drehzahlsteller Regler für Ymin auf den Wert oberhalb des Notlaufprogramm stellen...
Hallo Thomas, hatte das auch mal für nen Diesel gemacht. unser Fehler war anfangs, dass wir die Zeit pro Umdrehung gemessen hatten und daraus hatten wir die Drehzahl berechnet. Das war viel zu langsam. Nachdem wir pro Umdrehung ca 100mal einen neuen Drehzahlwert hatten, war die Regelung viel besser. Später hatten wir den Regler sogar noch synchron zum Drehzahlsignal laufen lassen. Man muss dann zwar permanent den Skalierungsfaktor für D und I korrigieren. Aber der Regler lief dann besser bei langsamen Drehzahlen.
Thomas schrieb: > Hier wird es gerade interessant. > Meinst Du wie meine Vorhaltemethode weiter oben ? > Nur um mehr Kennfeldabhängige Betriebspunkte ergänzt ? Im Prinzip ja. > Anfang der Neuziger gab es sowas wie eine momentenbasierte Steuerung > noch nicht. > Hat man dort auch schon in die Zukunft geschaut ? > Hast Du eine Quelle zum lesen für mich ? Zur Historie kann ich wenig sagen. Aber: letztendlich wird der gesamte Momentenpfad wie früher in die beiden Werte Füllung und Kraftstoffmasse umgerechnet und damit die Aktoren des Luftpfades und des Kraftstoffpfades gesteuert. Die Momente braucht man im Prinzip nur für die einheitliche Koordination der externen Eingriffe über CAN von ABS/ESP, Generator ... Auch früher gab es schon relativ dynamische Fahrzeuge. Die Beschleunigungsanreicherung ist so ein Workaround um in die "Zukunft" zu schauen. Wen ein KAT im Spiel ist muß vermutlich genauer dosiert werden um den KAT nicht zu schädigen. Multipoint kenne ich daher mit den Funktionen Übergangskompensation (Modellierung Wandfilm) sowie Prädiktion für die Füllung um ein Paar hundert Grad und Nachspritzer. Das Problem ist daß für die Gemischaufbereitung bei geringen Mengen (Leerlauf) der Anspritzbeginn möglichst früh gelegt wird. Der Luftsteller wirkt sich relativ schnell auf die Füllung aus, so daß eine laufende Einspritzung ggf. noch korrigiert werden muß. http://www.patent-de.com/20080807/DE102007005381A1.html http://www.google.com/patents/EP0820559B1?cl=de Gruß Anja
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.