mikrocontroller.net

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


Autor: Alexander Ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philipp Sªsse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ... (-;

Autor: Alexander Ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.