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
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.
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.
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
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ß
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.