Forum: Digitale Signalverarbeitung / DSP / Machine Learning PID-Regler & Z-Transformation


von Alexander Ernst (Gast)


Lesenswert?

Hi Folks,

bevor ich den totalen Hirnkollaps bekomme, frage ich das Fachpublikum
unter euch.
Es geht um einen diskreten PID-Regelalgorithmus für einen DSP. Den
rekursiven Rechenalgorithmus habe ich durch Anwendung der
Z-Transformation aus der additiven Darstellung ausgerechnet. Ist ja
soweit auch kein Problem:
Additive Form im Zeitbereich:

PID = KR * (1 + 1/TN*s + TV*s)

Soweit klar - einfache Addition der drei Regelfaktoren!

Jetzt ersetzte ich die Laplacevariable "s" mit "z" für das Integral
und Differential (Rückwärtsdifferenz und Billineare Transformation)
rechene alles aus.
Habe dann 3 konstante Koeffizienten mit den Zeitkonstanten TN, TV und
KR.
b0=KR*[T/2*TN+TV/T+1]
b1=KR*[T/2*TN-2*TV/T-1]
b2=KR*TV/T

Phänomen:
Schalte ich Integral und Differential (TN -> inf. & TV ->0) aus, kann
ich am Proportionalteil einstellen was ich will, die Sollwertabweichung
wird nicht P-verstärkt. Ist auch klar, wenn ich mir die Koeffizienten
anschaue. Ausgangspunkt war aber die additive Form des PID und da wird
P durchgeschleift und nach der Transformation ist sie weg!

Warum:
Wo zum Kuckuk ist meine einfache Proportionalverstärkung geblieben?
Warum ist die nicht mehr als separater Teil drin?

Danke euch
Alex

P.S. Zweeehundert Puls hab ich, bald ;-)

von olaf (Gast)


Lesenswert?

Gegen zu hohen Blutdruck sollen angeblich lange Meditationen auf
einesammen Berggipfeln helfen. :-)

Ich hab zwar auch irgendwann mal Z-Transformiert, aber das ist schon
aeh...watt laenger her. Mir stellen sich da mal ein paar Fragen.

1. Wieso glaubst du einfach Integral oder Differentialteil weglassen zu
koennen? Das wuerde vorraussetzen das die Koeffizienten wirklich
komplett je nach Anteil getrennt sind. Ich glaub das ist bei dir nicht
der Fall.

2. Warum ueberhaubt der komplizierte Weg mit der Z-Transformation? Du
kennst doch schon das Ergebniss naemlich den einfachen PID-Regler.
Wobei bei letzerem aber etwas noch nicht in deiner Gleichung steht.
Naemlich die Zeitkonstante deines Reglers. Es ist ja nicht egal und
beeinflusst deine Koeffizienten stark, wie oft du wirklich diese
Regelschleife durchlaeufst. Wenn du das so allgemein herleitest dann
muesstest du irgendwie auch diese Zeitkonstante beruecksichtigen.

3. In der Praxis wird dein Problem sowieso darin bestehen die
Koeffizienten des Reglers zu bestimmten. Das geht mit eine bisschen
Rechnung, viel Erfahrung und etwas try&error. Ich glaub mit hoeherer
Mathematik kommst man da normalweise nicht weiter weil du deine
Regelstrecke nicht gut genug beschreiben kannst.

Olaf

von Philipp Sªsse (Gast)


Lesenswert?

Lieber Himmel, ist das alles lange her ... (-:

Aber Du hast doch noch b0 = KR und b1 = -KR. Wenn ich das richtig in
Erinnerung habe, setzt Dir bei einem eingehenden Impuls von 1 das b0
einen Sprung auf KR und damit der beim nächsten Abtastpunkt wieder auf
null geht, kommt nach einem Takt eben der -KR-Sprung, der den ersten
wieder aufhebt.

Also entweder das hat sich im Laufe der Jahrtausende in meiner
Erinnerung vernebelt, oder Du hast vor lauter schwieriger Mathematik
vergessen, was Du da eigentlich rechnest ... (-;

von Alexander Ernst (Gast)


Lesenswert?

@Olaf

zu 1.
Ist klar, in den Koeffizienten sind die PID Anteile vermischt. Sie
gewichten die Regeldifferenz zu den Abtastzeitpunkten
Regelgröße=[b0*aktueller Wert(ek)] + [b1*letzter Wert(ek_1)] +
[b2*vorletzter Wert(ek_2)].
Da meine Ausgangsform zur Berechnung aber die additive Form des
PID-Reglers ist, dürfte nach der Transformation auch nichts anderes
rauskommen als die PID Anteile, nur eben nun nach den Abtastzeitpunkten
(ek,ek_1,ek_2) sortiert.

zu 2.
Zeitkonstante ist T
Hab jetzt kurzerhand einen 0815-PID geschrieben, der alle Anteile
separat berechnet und anschließend addiert. Nur sieht der halt für ne
Diplomarbeit nicht gerade schick aus. Ist halt wirklich niedrigstes
Numeriklevel. Er hat aber einen Vorteil: ***ER FUNKTIONIERT***

zu 3.
ja try&error. Mein Mathebuch hole ich erst wieder zur Dokumentation
raus. Mit Rechnung wird es hier sowieso etwas schwierig, da es ein
zweistufiger PID-Kaskadenregler ist.


@Philipp

OK wo du recht hast, hast du recht. Habe meinen Fehler erkannt.

Danke
Alex

von Oliver (Gast)


Lesenswert?

Kp(z) = kp
Ki(z) = T/(2*Ti)* (z+1)/(z-1)
Kd(z) = kd/T * (z-1)/z

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.