|
|
Phasengang in Simulink bestimmen |
|
DanIng |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.05.2010, 15:44
Titel: Phasengang in Simulink bestimmen
|
|
Hallo,
ich möchte Impedanzmessungen an Batterien durchführen.
Um die Impedanz eindeutig festzulegen benötige ich Phase und Betrag von Z, was sich aus der gemessen Spannung und dem vorgegeben Stromsignal ergeben sollte.
Nun meine Frage: Wie kann ich in Simukink die Phase eines Sinus/Cosinus Signales messen?
Ich habe schon einiges versucht, z.B. mit der hitcrossing Funktion die Nulldurchgänge bestimmt und dann die Zeit gemessen, das scheitert aber daran, dass sich die Clock Funktion nicht zurücksetzen lässt, sobald der erste Nulldurchgang ermittelt wird.
Wer hat eine Idee und kann mir helfen?
Vielen Dank bereits im Vorraus!
|
|
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.05.2010, 20:03
Titel:
|
|
Wenn die Frequenz beider Signale gleich ist, kannst Du das Modell aus dem Anhang benutzen. Die Zeitkonstante des PT1-Glieds musst Du auf 3...5*Signalperiode einstellen - je größer, desto genauer das Ergebnis. Dafür reagiert die Messung langsamer (im nicht-stationären Fall interessant). Voraussetzung ist natürlich, dass die Messung überhaupt so lange dauert.
Nulldurchgänge zählen kann man für alles mögliche einsetzen - hat man aber schon länger aufgegeben. Hat man nur ein kleines bisschen Rauschen auf der Messung (in schlimmen Fällen will man die Netzfrequenz direkt neben einem Wechselrichter erfassen), detektiert man da nur noch Murks.
Beschreibung: |
|
Download |
Dateiname: |
phasenmessung.png |
Dateigröße: |
22.13 KB |
Heruntergeladen: |
2577 mal |
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.05.2010, 10:19
Titel:
|
|
Vielen Dank für die Hilfe!
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.05.2010, 12:28
Titel:
|
|
Hallo,
nocheinmal vielen Dank für deine Antwort.
Ich habe deinen Ansatz gerade ausprobiert!
Leider scheint er nicht zu funktionieren, bzw. ich mach noch etwas falsch!
Ich habe den Ansatz mal mit zwei erzeugten Sinunssignaelen unterschiedlicher Phasenlage probiert und je nach eingestellter Simulationszeit bekomme ich andere Phasenwinkel!
Irgendwie verstehe ich auch den Ansatz noch nicht ganz! Könntest du vielleicht noch kurz die Bausteine erläutern?
Wozu brauchst du z.B. den Gain 1/sqrt(2)?
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.05.2010, 17:16
Titel:
|
|
Ich muss selber nochmal ein paar Minuten drüber nachdenken - Putzfrau hat die Notizen leider schon mitgenommen... Im Prinzip kannste Dir das aber auch selbst herleiten. Die ersten paar Blöcke (bis wurzel) berechnen den Effektivwert der Differenz.
Dann schauste, wie sich dieser Wert in Abhängigkeit von der Phase verändert und stellst fest, dass das eine Sinus-Funktion mit Amplitude sqrt(2) ist. Über den arcsin kommste dann auf den Phasenwinkel. Und die 2 fällt einem beim Lösen auch irgendwie in die Hände... Erinner mich kommenden Montag nochmal dran - bin erstmal unterwegs jetzt.
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.05.2010, 16:08
Titel: Falscher Wert des Phasenwinkels
|
|
Hallo Epfi,
ich verstehe jetzt zwar deinen Ansatz, umso mehr wundere ich mich, dass das Ergebnis nicht passt. Ich habe mal zwei Testsignale (siehe Scope Anzeige) generiert und der errechnete Phasenwinkel von etwa 70 Grad kann nicht stimmen.
Im Anhang mal die Testmodellierung
Wo liegt da jetzt noch das Problem? Ausserdem zeigt mir die Messung je nach eingestellter Simulationszeit einen anderen Winkel an ! ????
Die Phasenverschiebung der beiden Signale bleibt aber bei den von mir vorgegebenen idealen Testsignalen immer gleich.
Ich kenn mich leider zu wenig in der Messtechnik und in Mathlab aus, um selber auf meinen Fehler schliessen zu können.
Beschreibung: |
|
Download |
Dateiname: |
test_phasenmessung.JPG |
Dateigröße: |
49.63 KB |
Heruntergeladen: |
2234 mal |
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 07:37
Titel:
|
|
|
|
|
Moin!
Schön, dass Du es verstehst - sonst hätte ich mich heute Nachmittag nochmal drübergesetzt. Mir ist zwischenzeitlich noch eingefallen, dass es wichtig ist, dass die Amplitude beider Signale gleich ist, sonst wird die Berechnung falsch, da selbst bei einem Phasenwinkel von null eine Fläche zwischen den beiden Signalen aufgespannt wird.
Wenn die Amplitude unveränderlich ist, ist die Anpassung kein Problem, wenn sie sich ändert, wird das mit der Phasenmessung auf diese Weise etwas kniffliger. Habe diese Woche aber entdeckt, dass Tektronix-Scopes zum Teil Phasenmessungen machen können - vielleicht schreiben die in der Doku, wie sie das anstellen. Daraus lässt sich dann möglicherweise etwas robusteres ableiten...
Nachtrag: Du hast die Zeitkonstante des PT1-Glieds zu klein eingestellt. Scope3 müsste Dir etwa eine Gleichgröße anzeigen, das ist bei Dir sicherlich nicht der Fall. Je nach dem, wie dynamisch die Messung sein muss, sind Werte von 3...5*T nicht verkehrt. Je größer, desto langsamer die Bestimmung, aber auch genauer. T ist die Periode der beiden Eingangssignale.
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 09:14
Titel:
|
|
Damit ist der Ansatz wohl hinfällig . . . den natürlich sind die Amplituden bei ner Impedanzmessung unterschiedlich . . . trotzdem danke
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 09:47
Titel:
|
|
Wenn Du die Möglichkeit hast, eine (quasi) beliebig lange Messung in einem stationären Zustand durchzuführen, kannst Du für sinusförmige Größen eine automatische Amplitudenanpassung implementieren:
Signal -> Effektivwert -> Gain(sqrt(2)) = Amplitude
Signal -> divide(Amplitude) = normiertes Signal
Das machst Du für beide Signale und gibst sie dann auf die Phasenwinkel-Messung. Die Effektivwertbildung geht wie bei der Phasenidentifikation, nur solltest Du die Zeitkonstante des Filters etwas größer wählen (~10...15*T_signal) - je kleiner die Welligkeit der Amplitude, desto besser. Gilt aber alles nur für den stationären Zustand - also konstante Frequenz und Amplitude.
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 11:07
Titel:
|
|
Super, jetzt funktionierts!
Vielen, vielen Dank für die Hilfe!
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 13:20
Titel: Fehlermeldung
|
|
Hallo,
jetzt funktioniert die Phasenmessung bei Signalen gleicher Amplitude problemlos, und auch die Signalnormierung klappt, aber sobald ich die beiden Teile kombiniere, erscheint folgende Fehlermeldung:
Derivative input 1 of 'Phasenmesser_optimiert/Transfer Fcn' at time 0 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances).
Werr kann mir weiterhelfen?
Beschreibung: |
|
Download |
Dateiname: |
phasenmessung_fehlermeldung.JPG |
Dateigröße: |
102.81 KB |
Heruntergeladen: |
1861 mal |
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 13:21
Titel:
|
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.05.2010, 13:31
Titel:
|
|
Ich vermute mal, dass entweder der Ausgang vom sqrt(2) oder vom Gain4 zu Beginn mal null wird. In der Simulink Extras Bibliothek gibt es einen Block, der heißt Transfer Fcn (with initial outputs) - dort gibst Du einfach einen kleinen Wert als Anfangsausgabe ein (0.001 oder so).
|
|
|
DanIng |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 10.05.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.05.2010, 13:31
Titel:
|
|
Hallo,
also das bringt leider nichts, zeigt die selbe Fehlermeldung an!
Aber vielleicht liegt das Problem auch wo anders:
Durch das PT 1 Gllied baut sich der endgültige Amplitudenwert (im Beispiel A =3) erst allmählich auf --> vgl. Anhang (Oszi4)
Wenn ich also jetzt das Ausgangssignal durch die Amplitude teile, wird zunächst einmal durch 0 !!! geteilt, somit ergibt sich in meinem ReferenzOszi2 ein normiertes Spannungssignal, das zunächst einen unendlichen Spitzenausschlag hat und dann allmählich in ein normiertes Sinussignal mit Amplitude 1 wechselt.
Diesen unendlichen großen Spitzenausschalg gleich zu Beginn der Simulation verkraftet offensichtlich die Tranfer Function der Phasenmessung nicht und zeigt eine Fehlermeldung !
Die Frage ist nun also, was tun? Wie kann die Amplitude alternativ berechnet werden?
Beschreibung: |
|
Download |
Dateiname: |
oszi4.JPG |
Dateigröße: |
117.61 KB |
Heruntergeladen: |
1673 mal |
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.05.2010, 13:43
Titel:
|
|
Hast Du bei beiden PT1-Gliedern eine Transfer Function mit Startwert eingesetzt und den Startwert ungleich 0 eingestellt? Das, was Du beschreibst ist genau das, was ich auch sagen wollte und müsste sich damit eigentlich beheben lassen.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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 - 2024
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.
|
|