Forum: Mikrocontroller und Digitale Elektronik PID Regler Parameter rechnerisch bestimmen?


von M. S. (perilun)


Lesenswert?

Hallo,

kann mir bitte sagen, ob es möglich ist bei der PID Regelung die 
Parameter P, I und D rechnerisch zu bestimmen? Das Ziel ist es, dass in 
einem Programmcode die Bestimmung dieser Parameter automatisch erfolgen 
soll.

Danke!

von Jan H. (j_hansen)


Lesenswert?

Klar.

(Wenn du die Strecke kennst und weißt, wie du regeln möchtest).

von Dussel (Gast)


Lesenswert?

Das geht, aber selbst wenn ich noch wüsste wie, wäre das für einen 
Beitrag zu lang. Da braucht man schon ein paar Vorlesungen, bis man da 
ist.
Zuerst braucht man mal die Übertragungsfunktion der Strecke. Daran 
scheitert es oft schon, denn die kann man oft nicht so einfach 
aufstellen.

von Chris K. (Gast)


Lesenswert?

Danach Pole und Nullstellen ausrechnen, Bode Diagramm Zeichen, alles auf 
Stabilität prüfen. Ja, definitiv Stoff für ein Semester

von M. S. (perilun)


Lesenswert?

Chris K. schrieb:
> Danach Pole und Nullstellen ausrechnen, Bode Diagramm Zeichen,
> alles auf
> Stabilität prüfen. Ja, definitiv Stoff für ein Semester

Diesen Vorgang kenne ich.

Ich kann aber nicht z.B. einen C++ Code Programmieren, welcher einen 
Bode Diagramm zeichnet oder mit Hilfe eines Nyquist Diagramm die Pole 
und Nst. bestimmt.

Aus diesem grund die Frage, ob es eine rechnerische Methode gibt?

: Bearbeitet durch User
von Dussel (Gast)


Lesenswert?

M. S. schrieb:
> Aus diesem grund die Frage, ob es eine rechnerische Methode gibt?
Wenn der Nenner 0 ist, ist es ein Pol, wenn der Zähler 0 ist, eine 
Polstelle. Oder liege ich gerade total falsch?
(Mit dem Sonderfall, dass beide 0 sind.)

von M. S. (perilun)


Lesenswert?

Dussel schrieb:
> M. S. schrieb:
>> Aus diesem grund die Frage, ob es eine rechnerische Methode gibt?
> Wenn der Nenner 0 ist, ist es ein Pol, wenn der Zähler 0 ist, eine
> Polstelle. Oder liege ich gerade total falsch?
> (Mit dem Sonderfall, dass beide 0 sind.)

Die Frage ist wie kann man einen PID Regler z.B. in C++ Programmieren?

Ich meine jetzt nicht den Code, sondern die Formeln!

: Bearbeitet durch User
von Narf (Gast)


Lesenswert?

Hier findest du diesbezüglich einen einfach nachzuvollziehenden 
Einstieg:

http://rn-wissen.de/wiki/index.php?title=Regelungstechnik

von Michael M. (michael89)


Angehängte Dateien:

Lesenswert?

Hi,
Hab mir mal die Formeln aus Wikipedia gesucht und den selber 
nachprogrammiert. Funktioniert super.

Würde die Begriffe Tv,Tn,Kp nach googln um dein Regler richtig 
einstellen zu können. Diese ergeben sich aus der Übertragungsfunktion.

Hab die Werte für P,I,D einzelt im Code berechnen lassen. Musst nur die 
Funktion erweitern das nicht die Stellgröße sondern P,I,D ausgegeben 
wird.

Bei delta_t stellst du die Zeit ein in der die Funktion Regelmäßig 
aufgerufen wird.

Bei mir lass ich die zyklisch alle 0,1 Sekunden aufrufen darum --> 
delta_t=0.1;

Mfg
M.V

: Bearbeitet durch User
von M. S. (perilun)


Lesenswert?

Danke! Werde ich mal ausprobieren!

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
Noch kein Account? Hier anmelden.