|
|
DT1 Filter in Simulink nachbilden |
|
martinzf |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 05.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2006b
|
|
|
|
|
|
Verfasst am: 06.07.2009, 10:31
Titel: DT1 Filter in Simulink nachbilden
|
|
Hallo Leute,
leider ist das Studium zu lange her und ich bekomms nicht mehr her wie ich mir einen DT1 Filter in Simulink zusammenbasteln kann.
Die Literatur sagt die Übertragungsfunktion wäre Kd*s/Ts+1.
Hintergrund ist ich hab eine Drehzahl und will ihren Gradienten beim Motorhochlauf bekommen,das ganze soll noch zeitlich gefiltert werden.
Wie erstelle ich jetzt die Übertragungsfunktoin in Simulink mit der Möglichkeit die Zeitkonstante anzugeben. Prinzipiell wäre es ja auch möglich die Ableitung du/dt zeitlich zu filtern? Mit einem Totzeitglied oder einem PT1 Glied, bei der die Verstärkung == 1 ist oder?
Antworten wären super,danke
|
|
|
|
|
Tusor |
Forum-Fortgeschrittener
|
|
Beiträge: 71
|
|
|
|
Anmeldedatum: 02.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.07.2009, 16:38
Titel:
|
|
Es gibt doch dafür extra den Block "Transfer Function". Bei dem kannst du dann einfach deine Parameter angeben. Dafür gibst du die Koeffizienten als Vektor eines Zähler- und Nennerpolynoms an. Aber das sollte dann in der Hilfe von Simulink zu dem Block erklärt sein.
Viele Grüße
Tusor
|
|
|
martinzf |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 05.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2006b
|
|
|
|
|
|
Verfasst am: 07.07.2009, 13:14
Titel:
|
|
|
|
|
Ja danke für die Antwort, wie gesgat das Studium ist einfach zu lange her.
Aber nun stellt sich gleich noch eine andere Frage(siehe Bilder mit Regelstrecke und Sprungantworten)
Kanal 1 : Rechtecksignal
Kanal 2 : PT1 Filter - klar
Kanal 1 : DT1 Filter mit Ü-Funktion Kd*s/Ts+1, dabei Kd = 1, T = 0.1
Kanal 1 : DT1 Filter Nachbildung : PT1 Filter(P = 1, T=0.1) anschließend du/dt
2 Fragen:
1.Wie bekomm ich es hin dass ich im DT1 (Kanalausgang 3) nicht von 10 anfange herunterzufiltern? Sondern halt erstmal konstant laufe wie das Rechtecksignal
2. Wieso ist die Nachbildung(Kanal4) nicht das identische Signal wie der DT1 Filter der als Übertragungsfkt(Kanal 3) dargestellt ist?
Versteh ich einfach nicht.
Für Hilfe wäre ich sehr dankbar.
Mein Problem ist nämlich nun dass ich eine Messung einlese die mit Leerlaufdrehzahl beginnt, dann macht das Modell zum Start einen Sprung und filtert von dort erstmal runter obwohl bereits der Hochlauf des Motors beginnt. Ich bräuchte also so etwas wie einen Initialwert für den DT1
Beschreibung: |
|
Download |
Dateiname: |
Zwischenablage01.jpg |
Dateigröße: |
11.25 KB |
Heruntergeladen: |
2521 mal |
Beschreibung: |
|
Download |
Dateiname: |
Zwischenablage02.jpg |
Dateigröße: |
113.15 KB |
Heruntergeladen: |
2091 mal |
|
|
|
Tusor |
Forum-Fortgeschrittener
|
|
Beiträge: 71
|
|
|
|
Anmeldedatum: 02.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2009, 16:58
Titel:
|
|
|
|
|
Hallo,
ich fange mal mit 2. an: Du hast mir endlich ein Beispiel geliefert, wieso mein Betreuer sich immer über die Differentiationsblöcke aufregt. Probiere mal andere Solver aus. Zum Beispiel ein ganz normaler ode1 mit 1e-3 als Schrittweite bringt das gleiche Ergebnis für beide Varianten. Für reproduzierbare Ergebnisse sollte man die du/dt-Blöcke lieber nur mit einem FixedStep-Solver verwenden (hängt halt daran, wie numerisch die Ableitung gebildet wird).
Zu 1. Das er bei 10 anfängt ist eigentlich vollkommen logisch, da du ja ein DT1 gebaut hast. Das heißt, der leitet dein Eingangssignal ab. Was ist die Ableitung eines Sprunges? Richtig, der Dirac-Impuls. Also eigentlich ein unendlich hoher Peak. Auf Grund des T1-Verhaltens ist der nicht unendlich hoch, sondern nur noch 10. Genauer gesagt ist er immer Kd/T hoch (kann man irgendwie herleiten, aber interessiert hier nicht).
In dem angehängten Modell findest du eine Möglichkeit: Das Problem ist ja, dass der DT1-Block zu t=0 einen Sprung auf Leerlaufdrehzahl sieht. Und den muss man verhindern. Die einfachste Möglichkeit, die mir eingefallen ist, ist im Anhang zu sehen: Du ziehst einfach die Leerlaufdrehzahl ab. Damit ist der erste Sprung am Eingang bei t=0 quasi 0 (oder halt sehr klein, wenn du mit der Leerlaufdrehzahl etwas daneben liegst, aber der erste Wert (das ist ja der wichtige!) lässt sich ja einfach aus den Messdaten ablesen). Alle weiteren Änderungen im Signal werden differenziert.
Die zweite Möglichkeit wäre, die Messdaten, wo der Motor in Leerlaufdrehzahl ist, so oft zu kopieren, dass du eine genügend lange Leerlaufphase vortäuschst, in der sich der DT1-Block von dem ersten Sprung erholen kann.
Ich hoffe, dass das so passt.
Viele Grüße
Tusor
Beschreibung: |
Testmodell mit DT1 der den ersten Sprung nicht detektiert |
|
Download |
Dateiname: |
Diff.mdl |
Dateigröße: |
19.57 KB |
Heruntergeladen: |
1365 mal |
|
|
|
martinzf |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 05.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2006b
|
|
|
|
|
|
Verfasst am: 09.07.2009, 14:29
Titel:
|
|
als allererstes viel Dank für die ausführliche Antwort. Meine Meinung von diesem Forum wurde mal wieder absolut bestätigt.
Zum anderen, den ersten Wert am Anfang zu subtrahieren bringt das gewünschte Ergebnis und erscheint jetzt auch so logisch...hätte ich selber drauf kommen müssen
Danke nochmals
|
|
|
Tusor |
Forum-Fortgeschrittener
|
|
Beiträge: 71
|
|
|
|
Anmeldedatum: 02.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.07.2009, 15:54
Titel:
|
|
freut mich, dass es klappt.
Ich habe heute nebenbei bemerkt, dass es auch die Möglichkeit gibt, für die Simulation "Initial Values" vorzugeben. Das hat den Zweck, dass man die Endwerte einer Simulation als Startwerte für eine andere nehmen kann. Das dürfte hier auch funktionieren. Ich hatte aber leider keine Zeit, mir das genauer anzuschauen. Wäre aber vielleicht noch eine Überlegung wert.
Viele Grüße
Tusor
P.S.: Ich setzt das Thema mal auf "beantwortet", oder?
|
|
|
martinzf |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 05.02.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2006b
|
|
|
|
|
|
Verfasst am: 10.07.2009, 09:11
Titel:
|
|
Initial Step Size hab ich gefunden,aber Value nicht?
Beschreibung: |
|
Download |
Dateiname: |
Zwischenablage01.jpg |
Dateigröße: |
60.02 KB |
Heruntergeladen: |
1865 mal |
|
|
|
Tusor |
Forum-Fortgeschrittener
|
|
Beiträge: 71
|
|
|
|
Anmeldedatum: 02.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2009, 15:50
Titel:
|
|
Ich habe gerade noch mal geschaut: Heißt "initial state" und ist unter Data Import/Export zu finden.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|