WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wie Werte in Speicher laufend erneuern?

 

Hydrokultur
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.06.13
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 19.06.2013, 14:55     Titel: Wie Werte in Speicher laufend erneuern?
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 19.06.2013, 21:16     Titel:
  Antworten mit Zitat      
Hallo,

anbei ein einfacher Vorschlag, wie es funktionieren könnte. Kannst du natürlich noch verfeinern Wink

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 Wink

u_eff_simpel.mdl
 Beschreibung:

Download
 Dateiname:  u_eff_simpel.mdl
 Dateigröße:  31.54 KB
 Heruntergeladen:  405 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2013, 06:26     Titel:
  Antworten mit Zitat      
Und bezüglich dem nur neue Werte speichern: Versuch den "Tapped Delay" Block. Er speichert die letzten x Werte und gibt sie alle raus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hydrokultur
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.06.13
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 20.06.2013, 07:53     Titel:
  Antworten mit Zitat      
@ 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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Hydrokultur
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.06.13
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 20.06.2013, 10:14     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 20.06.2013, 10:16     Titel:
  Antworten mit Zitat      
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 Wink

Viele Grüße

u_eff_simpel.mdl
 Beschreibung:

Download
 Dateiname:  u_eff_simpel.mdl
 Dateigröße:  36.68 KB
 Heruntergeladen:  399 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 20.06.2013, 10:21     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Hydrokultur
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.06.13
Wohnort: Bremen
Version: ---
     Beitrag Verfasst am: 01.07.2013, 10:43     Titel:
  Antworten mit Zitat      
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.

RMS.PNG
 Beschreibung:

Download
 Dateiname:  RMS.PNG
 Dateigröße:  9.74 KB
 Heruntergeladen:  599 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.