digitaler PID-Regler

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Hi Leute,
ich muss für meine Diplomarbeit per PC-Software einen PID-Regler
realisieren.
Programmiersprache ist C.

Dazu habe ich mir erst mal ein "Schieberegister" programmiert, das in
meinem Fall 10 Messwerte aufnehmen kann.

Jetzt benötige ich die Übertragungsunktion eines PID-Reglers in der
k-Ebene mit den Parametern Vorhaltezeit, Nachstellzeit,
Proportionalitätsfaktor.
Meine Vorlesungsmitschriften sind dummerweise gerade nicht greifbar.

Es gibt doch bestimmt so Standardformen für PID-Regler.
Ich brauche ne Formel für den Stellwert in Abhängigkeit der letzten
Messwerte und der letzten Stellwerte.
Parameter sind dann Vorhaltezeit, Nachstellzeit, Proportionalitätsfaktor.

Kann mir von Euch jemand einen Tip geben?

Michael


Re: digitaler PID-Regler

Michael Rübig schrieb:

Quoted text here. Click to load it

Hallo,

gehe in eure Bibliothek, suche geeignete Bücher und schlage darin nach.
Etwas Literatur solltest Du bei der Diplomarbeit sowieso gelesen haben
und auch angeben.

Bye


Re: digitaler PID-Regler

Quoted text here. Click to load it

Genau! In "Regelungstechnik für Ingenieure" steht sogar der komplette
Algorithmus für einen PID Regler...


Gruß,
   Artur

Re: digitaler PID-Regler
Uwe Hercksen schrieb:
Quoted text here. Click to load it

Ich sitze aber grad in der Firma, in der ich mein Dipl.Arbeit mache und
die Bibliothek ist weit. Den Algorithmus brauche aber am besten heute noch.
Ich habe unter
http://www.technik-elite.de/klausuren/rt_02-03_14.pdf
was gefunden.
Ich glaube, der Geschwindigkeitsalgorithmus ziemlich unten ist das
richtige für mich.
Über das Delta Uk bin ich noch ein wenig am grübeln.

Was muss ich dafür einsetzen?

Momentan hab ich mir selbst einen Algorithmus ausgedacht, der auch
funktioniert.
Aber ich denke, dass ein Standardalgorithmus da deutlich besser ist,
zumal, das Projekt nach meiner Arbeit jemand anderes weiterführen muss.

Michael


Re: digitaler PID-Regler
http://www.embeddedFORTH.de Heft 2
mit Blick auch parallele Anordnung und simpele Varianten für
I und D. Das Programm ist weniger gut.

Quoted text here. Click to load it
Ich hatte nie den Eindruck, daß deren Definition so völlig
einheitlich ist. Theoretische DIN-Normen mal abgesehen.

Wenn man Einstellregeln orginal Ziegler & Nichols will: die der
Analogschaltung entsprechende Form ist seriell und der Diffenerenzierer
DT1. Muß man also Schaltung biegen.
Bezüglich der "digitalen" Einstellregeln a la Takahashi: ich kann den
Orginal-Artikel scannen wie er mal in der akademiologischen
Zeitschrift rt erschienen ist. Ich wäre damit vorsichtig: wird gern
in Lehrbüchern zitiert, in der Praxis glaube ich nicht so oft verwendet.

Quoted text here. Click to load it
Hat bezüglich Glättung mit FIR was für sich, wenn man später
tatsächlich D-Anteil verwendet. Aber eigentlich nicht für PID nötig.
Es sei denn, man will den PID als FIR-Filter implementieren und hat
integrierende Strecke dafür. Oder klebt den I-Anteil ans FIR ran.

MfG  JRD

Re: digitaler PID-Regler
Rafael Deliano schrieb:

Quoted text here. Click to load it

Ich hab das jetzt mal so implementiert (0 ist jeweils der neueste Wert):

    D       =((MeasBuf[0]-MeasBuf[1])+
          (MeasBuf[1]-MeasBuf[2])+
              (MeasBuf[2]-MeasBuf[3]))    /3;

    I       = (Sollwert-MeasBuf[0]+
               Sollwert-MeasBuf[1]+
           Sollwert-MeasBuf[2]+
           Sollwert-MeasBuf[3]+
                    Sollwert-MeasBuf[4]+
           Sollwert-MeasBuf[5])        /6;

    if (I >  1) I =  1;
    if (I < -1) I = -1;
    
    P       =  Sollwert-MeasBuf[0];


    Y       =  kd * D + ki * I + kp *P;

Den D-Anteil filtere ich deshalb, um das Rauschen ein wenig wegzukriegen.

Den I-Anteil hab ich jetzt mal als Mittelwertfilter gelöst.
Bin mir nicht sicher, ob das das richtige Vorgehen ist.
Ich könnte ihn auch als IIR mit 2 Koeffizienten lösen, was der analpgen
Lösung deutlich näher kommt. Was ist besser.

Im Prinzip hat der Regler jetzt 5 Parameter:
kd, ki, kp, Anzahl Messwerte für d-Anteil (3), und Anzahl Messwerte
i-Anteil(6).

Damit werde ich es jetzt mal probieren.

Ich hatte zwar schon vorher was leidlich funktionierendes
zusammengebastelt. Das war aber saumäßig unübersichtlich.

Danke für den Link

       Michael


Re: digitaler PID-Regler
Rafael Deliano schrieb:

 > http://www.embeddedFORTH.de Heft 2
 > mit Blick auch parallele Anordnung und simpele Varianten für
 > I und D. Das Programm ist weniger gut.


Ich hab das jetzt mal so implementiert (0 ist jeweils der neueste Wert):

     D       =((MeasBuf[0]-MeasBuf[1])+
               (MeasBuf[1]-MeasBuf[2])+
               (MeasBuf[2]-MeasBuf[3])) /3;

     I       = (Sollwert-MeasBuf[0]+
                Sollwert-MeasBuf[1]+
                Sollwert-MeasBuf[2]+
                Sollwert-MeasBuf[3]+
                Sollwert-MeasBuf[4]+
                Sollwert-MeasBuf[5])    /6;

     if (I >  1) I =  1;
     if (I < -1) I = -1;

     P       =  Sollwert-MeasBuf[0];


     Y       =  -kd * D  +  ki * I  +  kp *P;

Den D-Anteil filtere ich, um das Rauschen ein wenig wegzukriegen.

Den I-Anteil hab ich jetzt mal als Mittelwertfilter gelöst.
Bin mir nicht sicher, ob das das richtige Vorgehen ist.
Ich könnte ihn auch als IIR mit 2 Koeffizienten lösen, was der analpgen
Lösung deutlich näher kommt. Was ist besser.

Im Prinzip hat der Regler jetzt 5 Parameter:
kd, ki, kp, Anzahl Messwerte für d-Anteil (3), und Anzahl Messwerte
i-Anteil(6).

Damit werde ich es jetzt mal probieren.

Später wird das Integrieren dann natürlich über Schleifen laufen.

Ich hatte zwar schon vorher was leidlich funktionierendes
zusammengebastelt. Das war aber saumäßig unübersichtlich.

Danke für den Link

       Michael


Re: digitaler PID-Regler
Quoted text here. Click to load it

Übliches, glättendes FIR eher wie im PID-Artikel:
D = 1,5 * MeasBuf[0] + -2 * MeasBuf[1] +  -0,5 * MeasBuf[2]

Weitere Differenzierer in Heft 6  Seite 18 Tabelle 2.
Obige Formel ist der 3 Taps in ersten Zeile, Schätzung an y0.
( Im Text ist Fehler es ist Schätzung an y0 nicht y2 ).

Quoted text here. Click to load it
Wohl nicht. Integrator ist eben Integrator.
Einfache Formel ca.:

I = I + MeasBuf[0]

Trapez:

I = I + ( MeasBuf[0] + MeasBuf[1] ) / 2

Man beachte die in der Praxis nötige Abschaltung bei Sättigung:
wenn Y auf Anschlag sollte Integrator gestoppt bleiben.
Also mit if ... überspringen.
 
MfG  JRD

Re: digitaler PID-Regler
Hi,
Quoted text here. Click to load it

Das war auch mehr als dämlich (umständlich), weil
=(MeasBuf[0]-MeasBuf[3]) /3

Quoted text here. Click to load it

Da ist was faul.

Sind alle drei Werte identisch (z.B. 5), dann ist die Ableitung=0 und es
müsste folglich 0 rauskommen, tut es aber nicht, sondern -5.
Wenn man den 3. Koefizient = +0,5 macht, wirds schon besser, aber
irgendwie stimmts immer noch nicht.
Bei
MeasBuf[0]=5
MeasBuf[1]=3
MeasBuf[2]=1
müsste 2 rauskommen, es kommt aber 1 raus.

Denkfehler bei mir?

Quoted text here. Click to load it

Seltsames Satzkonstrukt, verstehe ich nicht ganz.

Quoted text here. Click to load it

Klar, manchmal bin ich selten dämlich.

Quoted text here. Click to load it

Was mir aber an meiner Variante doch besser gefällt:
Ein echter Integrierer führt zwandgsweise zum Überschwingen, damit das
Integral irgendwann 0 wird. In meinem Fall ist Überschwingen extrem
unerwünscht, da der Steller nur in eine Richtung ziehen kann.
Überschwingt das ganze, kommt das System nur sehr langsam auf den
Sollwert zurück.

Anwendung:
In Wasser wird eine flüchtige Flüssigkeit (Alkohol) zudosiert. Diese
verschwindet langsam und muss nachdosiert werden. Alkohol entnehmen geht
nicht und Wasser zudosieren geht auch nicht.

In meinem falschen Integrator werden die ganz alten Fehler einfach nicht
mehr berücksichtigt und wenn der D-Anteil groß genug ist, nähert sich
die Konzentration dem Sollwert ausschließlich von unten an.

Der bleibende Regelfehler, der dabei entsteht, ist nicht so tragisch. 1%
Genauigkeit reichen aus. Oder gibts ne andere Lösung führ das Problem?

Ich beschäftige mich hier das erste mal mit digitalen Reglern und
Filtern in der Praxis, man verzeihe mir meine Fehler und falschen
Denkansätze.

Quoted text here. Click to load it
Ich lade den Integrator jetzt nur, wenn ich schon relativ nahe am
Sollwert dran bin.

Danke für die Hilfe, bin schonmal ein großes Stück weiter.

Michael


Site Timeline