Hallo erstmal,
vorneweg, ich bin neu hier im Forum. Daher hoffe ich dass ihr darüber
hinweg schauen könnt, falls ich übliche Gegebenheiten verletze.
Nun aber genug zu mir und kommen wir zu meinem Problem:
Ich versuche eine Temperatur Regelung mithilfe eines Peltierelementes zu
entwickeln. Das ganze läuft mithilfe eines ATSAM4SA. Der
Regelalgorithmus wird durch eine ISR mit der Frequenz (100Hz)
aufgerufen. Das PWM Signal wird an eine H-Brücke gesendet, welche daraus
eine konstante Spannung formt und an das Peltierelement übergibt.
mit TEC_Ta = 0.01 und TEC_Ist=Aktuelle Temperatur
Zu Beginn wollte ich die erstmal die Strecke identifizieren. Da das
Mathematisch nur sehr schwer realisierbar ist, habe ich die
Sprungantwort der Strecke aufgenommen. D. h. ich habe die Stellgröße auf
ein konstantes Signal gesetzt und die Simulation gestartet. (Anhang1)
Es handelt sich um eine PT1 strecke.
Mithilfe der 63% Methode habe die Zeitkonstante bestimmt. Die Stationäre
Verstärkung indem ich Temperaturunterschied/Am TEC anliegende Spannung
gerecht habe.
Hierzu meine erste Frage, ist dieses Vorgehen korrekt? Mithilfe der
Polkompensation kam ich leider auf ein Instabiles Verhalten. Entweder
lag es an der Berechnung oder daran die Strecke falsch bestimmt zu
haben...
Da ich aber nicht direkt den Kopf in den Sand stecken wollte, habe ich
die Methode des Stabilitätsrandes nach ZieglerNichols verwendet.
(Anhang2)
Mit KKrit=10 und Tkrit=1 kam ich auf die Werte: Kp=4,5 und Ki=5.29 bei
einem PI Regler. Die Regelung war "Bilderbuchmäßig". Nun wollte ich aber
einen PID Regler nach der Tabelle entwerfen. Mit den Werten Kp=6, Ki=12,
KD=0.72 bekomme ich aber ein instabiles Verhalten. Kann mir jemand
erklären was falsch gelaufen ist? Meine Annahme war das beide Regler für
die Regelstrecke geeignet sein sollten.
Viele Grüße und Gute Zeit
DomTom
Dominik E. schrieb:> Annahme war das beide Regler für die Regelstrecke geeignet sein sollten.
Was hast du denn da für eine Regelstrecke? Welche Zeitkonstante hat die
denn? Ich lese da irgendwas um 100 Sekunden ab. Passt das?
Und weil man den Sprung nicht sieht, sondern nur die Antwort: hat die
Strecke evtl. sogar eine Totzeit?
Hallo Lothar, den Plot mit der Strecke muss ich leider noch ein wenig
überarbeiten, tut mir Leid. Nach der 63% Methode komme ich auf eine
Zeitkonstante von 53 Sekunden. Das ganze System ist leider sehr Träge.
Allerdings liegt das am Aufbau, an dem ich nichts ändern kann.
Die Simulation startet mit Beginn des Sprunges. Eine Totzeit ist wenn im
Millisekunden-Bereich vorhanden, bzw ist kaum erkennbar.
@Lollopop
Das ganze System reagiert sehr träge, was aber leider des Aufbaus
geschuldet ist, an dem es nichts zu rütteln gibt. Es ist nicht direkt
ausschlaggebend wie "schnell" es einregelt sondern vielmehr wie "genau".
Jeder PID Regler wird zum PI Regler, wenn man D auf 0 dreht. Ein so
träges System kann übrigens auch langsam abgetastet werden.
Es reicht dicke, wenn du 10 Messungen hast pro 1 mal regeln.
Wozu willst du überhaupt den D-Anteil, was versprichst du dir für einen
Mehrwert? D-Anteile können schnell zu Instabilitäten führen und sind
deutlich komplexer einzustellen.
> Das PWM Signal wird an eine H-Brücke gesendet, welche daraus> eine konstante Spannung formt und an das Peltierelement übergibt.
Du weisst doch das Peltierelemente nicht mit einem PWM Signal klarkommen
oder?
Das verschlechtert ihren eh schon beschissenen Wirkungsgrad nochmal
erheblich. Und ausserdem noch nichtlinear. Es ist ein grosser
Unterschied ob du gerade bei 90% oder bei 10% regelst.
Du koenntest natuerlich die Spannung linearisieren. Aber du willst doch
eigentlich die Leistung deines Peltiers einstellen oder nicht? Klingt
dann eine lineare Spannungsaenderung sehr klug?
Ich glaube so ziemlich der erste Satz in der Regelungstechnikvorlesung
ist das alles folgende nur fuer LTI Systeme gilt. .-)
Im Extremfalle kann man davon abweichen und sein System um mehrere
Arbeitspunkte linearisieren, also die Regelparameter umschalten. Fuer
den Anfang wuerde ich dir aber empfehlen das du dein System
linearisierst. Zum beispiel ueber eine Ausgangskennlinie.
Olaf
Wenn du dir eine serielle Konsole gönnst und damit 5 Befehle
implementierst, hat die Rumstocherei ein Ende.
1. Print P,I und D
2.-4. Setze P, I oder D
5. Schreibe PID in EEPROM
> Es bringt aber eben nichts, wenn du da mit 100 Hz also 5000 mal> schneller als deine Strecke dran herumregelst...
Da hat Lothar recht. Stellt euch das so vor, um ein 1Mhz Signal auf dem
Oszi brauchbar zu sehen braucht man ein 10Mhz Oszi. Es schadet aber
nichts trotzdem ein 100Mhz zu verwenden. Es kostet nur mehr und man
muesste mit mehr Daten rumhampeln.
> Wenn du auf 1000,000 den Wert 0,005 draufaddierst, dann kann es> gut sein, dass hinterher wieder 1000,000 herauskommt.
Das ist dann der Moment wo etwas Basiswissen von Assembler sicher nett
ist weil man da Datentypen automatisch gelernt hat .-)
> Wenn du dir eine serielle Konsole gönnst und damit 5 Befehle> implementierst, hat die Rumstocherei ein Ende.
Sowas kann ich auch nur empfehlen. Immer im Hintergrund einen String
ausgeben der alle relevanten Parameter ausgibt. Rumspielen mit Reglern
ist leider einer der wenigen Dinge wo man mit einem Debugger nicht recht
weiter kommt. Ausser man macht sich die Muehe und liesst ueber den
Debugger die jeweiligen Variablen direkt aus ohne den Controller
anzuhalten. Aber da ist eine serielle Ausgabe wohl einfacher.
Olaf
Olaf schrieb:> Da hat Lothar recht. Stellt euch das so vor, um ein 1Mhz Signal auf dem> Oszi brauchbar zu sehen braucht man ein 10Mhz Oszi. Es schadet aber> nichts trotzdem ein 100Mhz zu verwenden. Es kostet nur mehr und man> muesste mit mehr Daten rumhampeln.
Das habe ich mir auch gedacht. Eine höhere bzw geringere Abtastfrequenz
sollte ja nichts am eigentlichem Regelverhalten verändern.
Ich könnte Sie herunter setzen, aber da ich für mehrere Systeme die
Regelung entwerfe, denke ich dass ich so auf der sicheren Seite bin.
Das mit dem PWM Signal habe ich wohl ein wenig falsch erklärt. :S
Also... Mit dem TEC Out, verändere ich letztlich den Duty Cycle des PWM
Signals, welches an einen IC übergeben wird. Dieser IC wandelt das PWM
Signal in eine konstante Spannung zwischen 0 und VMax des
Peltierelementes um. :)
Mit einer seriellen Konsole kann ich nicht direkt dienen. Allerdings
lasse ich mir die Daten Plotten. Ich hoffe das hilft ein wenig weiter.
Mir persönlich fehlt da schlicht weg noch ein wenig Erfahrung anhand der
Regler Daten den Fehler heraus zu lesen. :)
Aber bestimme ich den letztlich die Regelstrecke richtig? Letztlich habe
ich für verschiedene Stellgrößen die Sprungantwort aufgenommen, die
Zeitkonstante und Streckenverstärkung wie oben bestimmt. Da sich alle
Zeitkonstanten/Streckenverstärkungen im ca. gleichen Bereich befinden,
gehe ich von einem LTI System aus.
Edit: In dem Plots steht eine sehr hohe "Ziel Temperatur", das stimmt
allerdings nicht. Aus vorheriger Analyse habe ich mir da die Anzahl der
Datenpunkte anzeigen lassen. Ich Regel zwar mit 100 Hz, lasse mir aber
nur 3 mal in der Sekunde den Wert ausgeben. Da das alles so programmiert
ist, das es mir Live die Datenausgibt, ist letztlich der letzte
Datenpunkt ersichtlich
Dominik E. schrieb:> Das habe ich mir auch gedacht. Eine höhere bzw geringere Abtastfrequenz> sollte ja nichts am eigentlichem Regelverhalten verändern.
Das prinzipiell nicht, aber du brauchst andere Skalierungen und
Zahlenwerte.
BTW: der P-Anteil des P-Reglers ist ziemlich hoch, der klingelt
ordentlich.
Und der P-Anteil des PI-Reglers ist viel zu hoch. Der knallt ja bei der
kleinsten Abweichung immer gleich an den Anschlag. Das ist eher ein
Zweipunktregler mit winziger Hysterese.
Lothar M. schrieb:> Das prinzipiell nicht, aber du brauchst andere Skalierungen und> Zahlenwerte.
Wie meinst du das genau? Ich stehe da leider gerade etwas auf dem
Schlauch.
Ich verstehe deine Bemerkung das sich eine Änderung von 0,005 bei einem
wert von 500 nichts verändert. Allerdings sind die Messwerte der
Stellgröße mit jedem Rechentick unterschiedlich. Oder wie würdest du das
angehen?
> BTW: der P-Anteil des P-Reglers ist ziemlich hoch, der klingelt> ordentlich.
Einen P-Regler habe ich nirgends verwendet. Anhang 3 ist die Regelung
mittels PI und Anhang 4 ist der PID Regler.
Lothar meint deinen PID Regler. Der P Anteil ist zu hoch, denn der
Regler hockt die ganze Zeit in der Stellgrößenbeschränkung. Du hast
jetzt eher einen Zweipunktregler als linearen Regler.
Dominik E. schrieb:> Einen P-Regler habe ich nirgends verwendet.
Du hast einen PI dessen P-Anteil zu hoch ist.
Dominik E. schrieb:> Anhang 4 ist der PID Regler
An deiner Stelle würde ich von dem PID abkommen, der bringt dir hier
keinen wirklichen Mehrwert. Außerdem sind ungefilterte D-Anteile selten
eine gute Idee.
Dominik E. schrieb:> Zu Beginn wollte ich die erstmal die Strecke identifizieren.
Das ist schon mal der richtige Start. Ich wundere mich allerdings über
die gemessene Zeitkonstante von wenigen Sekunden. Wo wird die
Ist-Temperatur gemessen? Es sieht so aus, als wird direkt das
Petierelement gemessen. Ich habe einen Temperaturschrank (Inkubator)
geregelt (IstTemp=InnenTemp) und komme auf eine Zeitkonstante von
T1=2500sec. Im Anhang ist die gemessene Sprungantwort mit der Annäherung
über ein PT2-Glied (T2=1 vernachlässigbar) gezeigt. Die Zeitkonstante
ist abhängig von Lage und Größe des Sollwertsprungs.
Wenn ich mir Anhang 3 ansehe, ist sofort ein falsch eingestellter Regler
zu erkennen. Wenn man die Reglereinstellung nach der Regelungstechnik
macht und nicht nach Faustformeln, dann wird der I-Anteil Ti eines
PI-Reglers auf den Wert der Streckenzeitkonstante T1 gesetzt. Dann
kompensiert der Regler die Streckenzeitkonstante. Bei dir ist der Ti des
Reglers viel zu klein und kommt sofort in die Begrenzung. In die
Begrenzung darf kein Regelanteil kommen, sonst funktioniert der Regler
nicht mehr. Wenn du Ti richtig dimensioniert hast, läßt sich bei einem
PI-Regler über den P-Anteil die Dämpfung beliebig einstellen, dh. das
Optimum zwischen schnell und wenig Überschwingen.
Hermann W. schrieb:> Das ist schon mal der richtige Start. Ich wundere mich allerdings über> die gemessene Zeitkonstante von wenigen Sekunden. Wo wird die> Ist-Temperatur gemessen? Es sieht so aus, als wird direkt das> Petierelement gemessen.
Das Peltierelement sitzt bei mir zwischen 2 Metallplatten. Die
Metallplatten haben ungefähr die Außmaße 1,5cm x 1,5cm, das
Peltierelement 1cm x 1cm. Die Dicke der Metallplatten beträgt 5mm. Das
ganze System ist also sehr klein. Die Temperatur wird über einen NTC
gemessen welcher auf der einen Seite der Metallplatte verbaut ist. Die
andere Metallplatte dient der Abwärme.
Bei der Stellwertbegrenzung sehe ich den Fehler nicht direkt. Der Regler
nutzt die ihm zur Verfügung gestellte Maximale Leistung, solange er noch
nicht bei seinem Ziel angelangt ist. Das der I-Anteil in seine
Begrenzung läuft, ist sicherlich nicht Optimal.
Herrmann, das Verfahren wie du es beschrieben hast, habe ich zu Anfangs
auch versucht. Allerdings kam ich da auf ein Instabiles verhalten aber
vielleicht hatte ich einen Fehler.
Das Vorgehen ist doch:
Tn habe ich mit Ts gleich gesetzt also 53 Sekunden.
Daraus folgt ein Ki=Kp/Tn => Ki=Kp/53
mit
Kp=53/(Trk*31) mit Trk frei wählbar oder wo steckt mein fehler?
//31 ist meine Sreckenverstärkung
Niveau? schrieb:> Lothar meint deinen PID Regler. Der P Anteil ist zu hoch, denn der> Regler hockt die ganze Zeit in der Stellgrößenbeschränkung. Du hast> jetzt eher einen Zweipunktregler als linearen Regler.
Richtig, und das ist ein Riesenmurks!
Man kann mit einem 500 PS Auto auch eine durchschnittliche
Geschwindigkeit von 20 km/h fahren und trotzdem mit voller Pulle das
Gaspedal durchtreten und dann eine Pause machen um mit voller PACE
weiter fahren. Sinnvoll? Nein! Aber das machst du mit deiner Regelung.
DDay schrieb:> Peltierelement 1cm x 1cm
Das ist wirklich sehr klein. Das Peltier hat aber keinen Selbstzweck. Du
hast ja einen Prüfling, den du temperierst. Die Strecke geht bis zur
Temp des Prüflings und dort musst du die Ist-Temp messen.
DDay schrieb:> Stellwertbegrenzung sehe ich den Fehler nicht direkt
Weil du keinen PI-Regler hast. Der I-Anteil springt genau so schnell auf
die Begrenzung wie der Sollwert. Er ist also nirgends im analogen
Regelbereich. Damit wirkt nur der P-Anteil und der wird massiv vom
I-Anschlag gestört.
DDay schrieb:> vielleicht hatte ich einen Fehler.
Es gibt viele Fehlermöglichkeiten. Du musst alle Faktoren
berücksichtigen:
Skalierung des Ist- und Sollwerts, Faktor Petier-Spg/Regler-Ausgang,
Istwert/Messwert, Abtastzeit/Zeitkonstante und was real noch dazwischen
hängt, z.B. dein PWM-Umsetzer. Im Anhang ist mit K1 und K2 nur
Ustell/Uregler und die Skalierung des Messwerts auf den Sollwert
gezeigt.
DDay schrieb:> Das Vorgehen ist doch ...
Von diesen Schätzungen halte ich gar nichts. Ein PI-Regler läßt sich
exakt mathematisch berechnen und das stimmt dann, solange man die
Strecke richtig moduliert hat. Beim PI ist das besonders einfach:
Tregler=Tstrecke und die Verstärkung kann man rechnen oder einfach so
anpassen bis das Einschwingverhalten gefällt.
DDay schrieb:> Nun wollte ich aber> einen PID Regler
Zur Eingangsfrage: einen PID-Regler nimmt man eigentlich nur, wenn die
Strecke mehr als 2 Zeitkonstanten hat. Die 2. und 3. Zeitkonstante ist
messtechnisch schwer zu erfassen. Mit einem PI-Regler hat man 2
Zeitkonstanten voll mathematisch im Griff. Mit dem D-Anteil kann man
dynamisch vielleicht etwas verbessern, handelt sich aber
Stabilitätsprobleme ein. Z.B. schlägt ein gestörter Istwert voll durch.
Da reicht auch schon das Quantisierungsrauschen.
Ich empfehle den PI in die Tonne zu kloppen, resp als Anfang zu sehen.
Eine Peltier Regelung ist erst mal nicht linear. In wie fern nicht,
haengt vom Kontext ab. Waehrend die Effizienz heisst die Waermeleistung
von der Temperaturdifferenz abhaengt, ist das bei der Kuehlleistung noch
viel mehr der Fall.
Zur Ansteuerung bietet sich ein Hybrid aus Forwaertssteuerung und PI
Regelung an.
Erst mal sind auch die Spezifikationen zu beachten. Die angegebene
Kuehlleistung bezieht sich auf die Temperaturdifferenz von Null. Und die
kaelteste Temperatur bezieht sich auf eine Waermeleistung von Null.
Dabei ist auch zu beachten, dass die passive Seite, dh die konstante
Seite sehr gut thermisch angebunden sein muss. Einfach mal auf einen
Kuehlkoerper zu schrauben reicht nicht. Diese Temperatur wird weglaufen.
Ferner ist zu beachten, dass Peltiers nicht gepresst werden duerfen.
Bedeutet nur schon die Montage ist eine Herausforderung.
Kevin M. schrieb:> Wozu willst du überhaupt den D-Anteil, was versprichst du dir für einen> Mehrwert? D-Anteile können schnell zu Instabilitäten führen und sind> deutlich komplexer einzustellen.
Nur wenn du bei D die falsche polarität erwischst, was häufiger vorkommt
weil die leute die wirkungsweise nicht verstehen. Je nach D=Palt-Pneu
oder D=Pneu-Palt muss das - oder + sein.
Der D anteil muss der korrekturbewegung entgegenwirken, nicht diese
verstärken. Ein PD ist stabiler als ein PI oder P.
Der problematisch anteil beim PID ist eindeutig der I !
> Ich empfehle den PI in die Tonne zu kloppen, resp als Anfang zu sehen.> Eine Peltier Regelung ist erst mal nicht linear.
Ich hab das schon erfolgreich gemacht indem ich den Ausgang linearisiert
habe.
> Seite sehr gut thermisch angebunden sein muss. Einfach mal auf einen> Kuehlkoerper zu schrauben reicht nicht. Diese Temperatur wird weglaufen.
Ja, da braucht man wahrscheinlich noch einen Luefter auf dem
Kuehlkoerper.
> Ferner ist zu beachten, dass Peltiers nicht gepresst werden duerfen.> Bedeutet nur schon die Montage ist eine Herausforderung.
Drehmomentschluessel regelt. Aber wenn man nicht ganz gefuehllos ist
bekommt man es eigentlich auch mit der Hand hin. Ausserdem sollte man
bedenken das eventuelle Schrauben oder was man da hat nicht als
Waermebruecke dienen sollten.
Olaf
Hermann W. schrieb:> Mit dem D-Anteil kann man> Z.B. schlägt ein gestörter Istwert voll durch.> Da reicht auch schon das Quantisierungsrauschen.
Das stimmt wenn zur bildung von D ein viel zu kurzes intervall genommen
wird, z.b. nur die letzten 2 elemente.
Wenn D über einen genügend langen zeitraum gefiltert wird kann man
rauschen eliminieren und trotzdem noch inertialmomenten entgegenwirken.
Ein PD system erlaubt viel höheres P als ein reines P system. Nur das
übliche 2-sample D=Palt-Pneu geht bei rauschen gründlich schief.
Ein
D = (mittelwert der letzten 20 P) - (mittelwert der letzten 10 P)
ist nicht rauschanfällig.