|
|
Wie Werte in Speicher laufend erneuern? |
|
Hydrokultur |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 19.06.13
|
|
|
|
Wohnort: Bremen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2013, 14:55
Titel: Wie Werte in Speicher laufend erneuern?
|
|
Hallo,
ich hab ein kleines Problem in Simulink und bin noch relativ unerfahren.
Ich möchte von einer Sinusschwingung den Effektivwert ermitteln. Dieser soll allerdings nicht über die gesamte Simulationszeit ermittelt werden, sondern nur über die letze Periode.
Den Effektivwert der gesamten Simulationszeit kann ich schon richtig berechnen, bei Veränderungen der Sinusschwingung reagiert das jetzige System nicht schnell genug, da alle alten Daten mitgezogen werden. Gibt es hier eine elegante Methode, wie ich die Werte beispielsweise in einen Vektor schreibe, welcher die letzte Periode umfasst und bei neuen Werten die alten rausschmeißt?
Oder kann man die Werte in einen Zwischenspeicher schreiben, welcher immer erneuert wird?
Bin über jegliche Anregung froh!
Hydro
|
|
|
|
|
Bibonaut |
Forum-Fortgeschrittener
|
|
Beiträge: 60
|
|
|
|
Anmeldedatum: 06.06.13
|
|
|
|
Wohnort: Berlin
|
|
|
|
Version: 2013a
|
|
|
|
|
|
Verfasst am: 19.06.2013, 21:16
Titel:
|
|
Hallo,
anbei ein einfacher Vorschlag, wie es funktionieren könnte. Kannst du natürlich noch verfeinern
Was ich prinzipiell gemacht habe:
- Sinussignal erzeugt, quadriert ....
- Signal wird integriert. Den Integrator-Block habe ich auf "external reset, rising" gestellt. Das heißt, jedes Mal, wenn dein Sinus vom negativen ins positive Wechselt (und das ist ja genau am Ende jeder Periode) wird der Integrator gelöscht und beginnt wieder bei Null.
Danach kommt noch ein "Hold"-Glied. Das habe ich auch mit "Rising" getriggert, dass es den letzten Wert hält, bevor der Trigger zum halten des Wertes ausgelöst wurde, bis er dann erneut ausgelöst wird.
Viele Grüße, vielleicht hilft es dir ja
Beschreibung: |
|
Download |
Dateiname: |
u_eff_simpel.mdl |
Dateigröße: |
31.54 KB |
Heruntergeladen: |
405 mal |
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2013, 06:26
Titel:
|
|
Und bezüglich dem nur neue Werte speichern: Versuch den "Tapped Delay" Block. Er speichert die letzten x Werte und gibt sie alle raus.
|
|
|
Hydrokultur |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 19.06.13
|
|
|
|
Wohnort: Bremen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2013, 07:53
Titel:
|
|
@ Bibonaut
Danke für deine fixe Antwort! Das Modell hat mir gut was gebracht.
Ich hab versucht das ganze bei mir mal durchzuspielen, aber ich habe die Toolbox nicht in welcher der "Sample and Hold"-Block ist.
Gibt es da noch andere Blöcke die eine ähnliche Funktion haben?
@ knilumis_baltaM
Danke für den Tipp, werde ich gleich mal versuchen!
|
|
|
Hydrokultur |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 19.06.13
|
|
|
|
Wohnort: Bremen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2013, 10:14
Titel:
|
|
Ich hab mir da noch mal nen paar Gedanken gemacht.
Am Besten wäre es wenn man kontinuierlich Werte in einen Speicher schreibt, welcher eine vorgegebene Größe hat. Dieser Speicher schmeißt bei neu auftreten von einem Wert den ältesten Raus.
Wenn man dann über den Speicher integriert hat man immer den RMS einen gleitenden Abschnitt und nicht für eine Periode, oder Halbperiode.
Probleme sehe ich hier bei dem Integrator, da dieser immer weiter hochintegriert außer man setzt ihn zurück. Wenn man ihn zurücksetzt hat man aber keine gleitende Berechnung.
Es gäbe aber ja auch noch die Möglichkeit, dass man auf diesen verzichtet. Dann kann man eine Summe der letzten Werte erhalten, also eine bestimmte Integration. Man brauch hierzu aber unbedingt den Speicher.
Hat jemand eine Idee welches der Speicher sein könnte?
|
|
|
Bibonaut |
Forum-Fortgeschrittener
|
|
Beiträge: 60
|
|
|
|
Anmeldedatum: 06.06.13
|
|
|
|
Wohnort: Berlin
|
|
|
|
Version: 2013a
|
|
|
|
|
|
Verfasst am: 20.06.2013, 10:16
Titel:
|
|
|
|
|
Hi,
mir ist gerade was eingefallen, wie man sich selbst ein Halteglied dafür basteln kann.
Du nimmst einen zweiten Integrator, der ebenfalls mit "rising" resettet wird:
- Als untere Grenze x0 wählst du dein integriertes Signal, deinen Effektivwert, der über jede Periode integriert wird.
- Als zu integrierende Funktion einfach Null.
--> Der Integrator gibt bis zum Reset x0 aus.
Du möchtest ja immer nur den letzten Wert des integrierten Effektivwertes behalten.
Also muss dein "Halte-Integrator" einen Zeitschritt vorher resettet werden, bevor x0 gesetzt wird. Dazu müsste dein Sinussignal, dass du als Triggersignal verwendest, dem Sinussignal, mit dem du den Effektivwert berechnest um einen Zeitschritt vorauseilen.
Da das nicht geht, verzögerst du einfach das Signal mit Unit-Delay am Eingang des "Effektivwertbilders".
Lange Rede kurzer Sinn... siehe Anhang
Viele Grüße
Beschreibung: |
|
Download |
Dateiname: |
u_eff_simpel.mdl |
Dateigröße: |
36.68 KB |
Heruntergeladen: |
399 mal |
|
|
|
Bibonaut |
Forum-Fortgeschrittener
|
|
Beiträge: 60
|
|
|
|
Anmeldedatum: 06.06.13
|
|
|
|
Wohnort: Berlin
|
|
|
|
Version: 2013a
|
|
|
|
|
|
Verfasst am: 20.06.2013, 10:21
Titel:
|
|
Hast du denn eine konstante Frequenz?
Dann kannst du das auch ganz einfach machen, indem du eine Zeitverzögerung deines Signals mit der Periodendauer erzeugst.
Dann kannst du dein Signal und dein zeit-verzögertes Signal integrieren und voneinander abziehen und daraus dann den Effektivwert bilden.
Viele Grüße!
|
|
|
Hydrokultur |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 19.06.13
|
|
|
|
Wohnort: Bremen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.07.2013, 10:43
Titel:
|
|
Hi, Sorry, dass ich mich jetzt erst wieder melde, aber ich wollte mal eben meine Lösung darstellen wie ich den RMS berechnet habe.
Ich habe ein Bild angehängt in welchem man die Schaltung sieht. Für die I-Regler muss die Netzfrequenz eingestellt werden. Dann gibt einem die Schaltung den RMS Wert aus, welcher nach einer Halbperiode eingeschwungen ist.
@Bibonaut: Vielen Dank für deine Hilfe, waren sehr gute Anregungen die du gegeben hast.
Beschreibung: |
|
Download |
Dateiname: |
RMS.PNG |
Dateigröße: |
9.74 KB |
Heruntergeladen: |
599 mal |
|
|
|
|
|
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.
|
|