www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Problem bei der Simulation einer diskretisierten Strecke


Autor: Eric B. (eric84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe folgendes Problem.

Ich habe ein kontinuierliche Strecke und einen P-Regler. Dies möchte ich 
nun diskretisieren. Ich habe das mit dem c2d Befehl gemacht. Jedoch ist 
hier das Problem, denn ich habe als Erstes nur die Strecke 
diskretisiert. Wenn ich mir in Matlab mit dem Befehl step(...) die 
Sprungantwort anschaue, kommt etwas ganz anderes heraus, als wenn ich in 
Simulink den "discrete transfer fcn"-Block nehme, einen Sprung drauf 
gebe und es mir im Scope anschau.
Habe auch die verschiedenen Diskretisierungsmethoden ausprobiert, jedoch 
entsprach in Simulink keine Sprungantwort, der Sprungantwort aus Matlab. 
Die Sprungantwort mit dem step-Befehl müsste jedoch richtig sein, denn 
dies entspricht dem kontinuierlichen Fall.

Was mache ich hier bei der Simulation falsch?
Habe übrigens eine Abtastzeit von 0.01 beim c2d-Befehl und im "discrete 
transfer fcn"-Block eingegeben.

Wäre super, wenn Ihr mir weiterhelfen könntet :-)

Gruß
Eric

Autor: shu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was schreibst den in den "discrete transfer fcn"-Block rein? Wenn du 
deine Übertragungsfunktion deiner Strecke anständig diskretisierst kommt 
da schon das Gleiche raus.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe von matlab leider zu wenig Ahnung, aber von der Signaltheorie 
:)

Du hast uns etwas zu wenig Input gegeben, um Dir sofort helfen zu 
können.
Sofern ich richtig verstanden habe geht es dir um eine zeitliche 
Diskretisierung der Regelstreck, nicht um eine Wertdiskretisierung.
Ich nehme mal an 0.01 ist die Abtastzeit deiner Regelstrecke in Sekunden 
(also 10ms). Wenn deine Regelstrecke aber deutlich schneller reagiert, 
ist die Antwort schon vorbei wenn die zeitliche Diskretisierung das 
zweite mal abtastet.

Welche Zeitkonstante hat deine Regelstrecke (sonst bestimm die ca. Dauer 
bis die Antwort vorbei ist)? Eine gute Faustformel für einen einfachen 
PI-Regler ist dass Du mindestens 10 mal schneller abtasten solltest, als 
die schnellste Änderung deiner Regelstrecke erfolgt. Bei Verletzung 
dieses Kriteriums wird Dein Regler schlecht bis instabil. Man kann auch 
mit niedrigerer Verhältnis Abtastrate zu Systemgeschwindigkeit arbeiten, 
dann wird der Regler aber deutlich komplizierter.

Autor: Eric B. (eric84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wenn ich meine Regelstrecke mit einem P-Regler stabilisiere braucht 
meine Sprungantwort ca. 1,5 Sekunden bis zum stationären Endwert. Da das 
Problem dort aber auch auftritt, schätze ich mal, dass die Abtastrate 
groß genug gewählt ist, oder?
Meine Regelstrecke hat folgende Pole:
0
-1,7736+31,14i
-1,7736-31,14i
-2,48

Wegen dem Pol hat sie damit hauptsächlich integrierenden Charakter und 
ist instabil. Normalerweise hat die Sprungantwort bei 10 sekunden einen 
Wert von ca. 300.
Bei der Simulation mit Simulink ist dieser Wert um viele Zehnerpotenzen 
größer.
Welche Methode der Diskretisierung ist denn in meinem Fall die Richtige?
Denn in Matlab gibt es:
'zoh'       Zero-order hold on the inputs
'foh'       Linear interpolation of inputs (triangle appx.)
'imp'       Impulse-invariant discretization
'tustin'    Bilinear (Tustin) approximation
'prewarp'   Tustin approximation with frequency prewarping.
                   The critical frequency Wc (in rad/sec) is specified
                   as fourth input by
                      SYSD = C2D(SYSC,Ts,'prewarp',Wc)
'matched'   Matched pole-zero method (for SISO systems only).

Habe zoh, imp und tustin probiert. Bei zoh und tustin entsprach die 
Sprungantwort mit Matlab (step-Befehl) dem kontinuierlichen Fall. Nur 
bei imp nicht.
Wenn ich dann die Simulation in Simulink mit dem Block "Discrete 
TRansfer Function" mache entspricht jedoch keine mehr dem 
kontinuierlichen Fall. Bei einer Methode war die Regelstrecke nun sogar 
stabil ;-)

Also muss das Problem an Simulink liegen, oder? Denn nach der 
Diskretisierung zeigt mir Matlab mit dem step-Befehl noch die richtige 
Sprungantwort.
Ich vermute mal, dass es wichtig wäre zu wissen, was der step-Befehl im 
diskreten Fall genau macht und wie der Block "Discrete Transfer 
Function" arbeitet.
Denn der hat doch bestimmt ein Abtast-Halteglied integriert, so dass mir 
die zoh-Methode Ärger machen müsste, da ich doch dann 2 Halteglieder 
hätte, oder?
Nur wundert es mich warum die anderen Methoden nicht funktionieren.

Ich danke Dir bzw. Euch schonmal für eure Mühe! :-)

Gruß
Eric

Autor: shu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Diskretisiersungsmethode kannst zoh wählen dann wird deine Funktion 
mit einer Treppenfunktion approximiert.
Ich denk das Problem liegt eher an Dir als an Simulink;-) Wenn du mal 
verraten würdest was du in den discret fcn block reinschreibst könnte 
man dir eher helfen. Wenn du da einfach deine Übertragungsfunktion aus 
dem Laplacebereich einfügst geht es sicher nicht. Da muss die passende 
Z-Übertragungsfunktion rein. Der Befehl c2d bildet dir diese.

Die Abtastfrequenz musst so wählen das sie größer als die doppelte 
Bandbreite deiner Strecke ist.

Gruß

Autor: Eric B. (eric84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Neenee hab da schon meine z-Übertragungsfunktion vom c2d-Befehl 
reingeschrieben ;-)

Habe auch eben mal höhere Abtastraten probiert, aber auch das hatte kein 
Erfolg und eigentlich müssten die 100 Hz in meinem Fall, bei obiger 
Strecke, ja ausreichen.

Hab jetzt einfach mal das m-file zugefügt, welches die 
z-Übertragungsfunktion erzeugt und die Sprungantwort berechnet, sowie 
das Simulink-Modell.

Wäre super, wenn da mal jemand drauf schauen könnte :-)

Oh ich seh grad , dass man jeweils nur eine Datei anhängen kann.
Das Simulink-Modell folgt dann hier drunter.

Gruß
Eric

Autor: Eric B. (eric84)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier ist das simulink-modell

Autor: Eric B. (eric84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mein Problem nun gelöst. Es lag an den Nachkommastellen der 
Parameter. Erst bei ca. 10 Nachkommastellen bekam ich die richtige 
Sprungantwort.

Trotzdem vielen Dank für eure Mühe! :-)

viele Grüße
Eric

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.