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

Änderungsgeschwindigkeit eines Signals begrenzen

 

Mr.Tea
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 15.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2019, 13:31     Titel: Änderungsgeschwindigkeit eines Signals begrenzen
  Antworten mit Zitat      
Hallo liebe Gemeinde,

Ich Arbeite gerade im Rahmen meiner Diplomarbeit an einem Größeren Projekt in Simulink. Dieses stellt einen Wärmeübertrager dar der Thermostatisch geregelt wird. Nun soll eine Umstellung auf eine elektronische Regelung erfolgen und dafür wird ein Motorventil benötigt. Dieser Motor hat nun eine gewisse Stellzeit die in Smiulink nachgebildet werden muss.

Grob erklärt: Regeldifferenz -> Regler -> Motor -> Ventil -> Wärmeübertrager -> Regeldifferenz

Ich habe nun schon einige Varianten probiert und nichts funktioniert wie gewünscht. Gerade versuche ich es über einen Matlab function Block mit folgendem Code zu realisieren:
Code:
%
function y = fcn(u, du,t)
persistent dy_alt y_alt dy
if isempty(dy_alt)
    dy_alt=0;
    y_alt=u;
    dy=0;
end
while du~=0 || y_alt~=u
    if du>0
        dy=0.7;
        dy_alt=dy;
    elseif du<0
        dy=-0.7;
        dy_alt=dy;
    elseif du==0
        dy=dy_alt;
    end
    y=u+dy*t;
    if y==u
        break
    end
end
y=y_alt;


du ist dabei die Änderungsgeschwindigkeit von u (also du/dt) und dy analog für y.

Anbei findet ihr auch noch eine kleine Simulation die zugehörigen Daten zum testen der Funktion. Ich hoffe sehr das mir jemand weiter helfen kann!

Elektronisch_geregelt_test_stellzeit.slx
 Beschreibung:

Download
 Dateiname:  Elektronisch_geregelt_test_stellzeit.slx
 Dateigröße:  25.29 KB
 Heruntergeladen:  336 mal
test_data_for_delay.m
 Beschreibung:

Download
 Dateiname:  test_data_for_delay.m
 Dateigröße:  491 Bytes
 Heruntergeladen:  357 mal
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.09.2019, 07:42     Titel:
  Antworten mit Zitat      
Es soll also nicht die Abtastzeit des gesamten simulierten Systems eingestellt werden (-> dies würde in den Configuration Parameters -> Solver eingestellt werden)?

Sondern in einem einzelnen Block die Geschwindigkeit? Also das z,b, nicht alle 10ms das Signal verarbeitet wird, sondern alle 100ms?
Du könntest versuchen, die Sampletime des einzelnen Blocks anders einzustellen (Block-Maske öffnen -> Sample Time).

Wenn es nur eine Zeitverzögerung sein soll, dann mit dem Delay (z^-x) arbeiten.

Oder soll der Ausgang gegenüber des Eingangs verzögert werden? Dann gibt es irgendwo meist die möglichkeit, die Port-based sampletime noch einzeln einzustellen. Musst du auch mal in den Eingabemasken schauen.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Tea
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 15.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2019, 08:44     Titel:
  Antworten mit Zitat      
Die Abtastzeit des Systems soll hier gar nicht angefasst werden. Es geht darum, dass sich sobald sich das Eingangssignal der Matlab function ändert sich auch das Ausgangssignal ändert aber halt mit einer maximalen Änderungsgeschwindigkeit (der Motor kann halt nicht beliebig schnell verstellen, sondern mit einer Maximalen Geschwindigkeit). Dies soll so lange passieren bis das Ausgangssignal gleich dem Eingangssignal ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.09.2019, 10:16     Titel:
  Antworten mit Zitat      
Ah!
Dann schau doch mal, ob du mit 'nem Regler weiter kommst.
PI oder vielleicht sogar nur I-Regler?
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Tea
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 15.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2019, 09:10     Titel:
  Antworten mit Zitat      
Ich habe es jetzt mal mit einem I-Regler versucht, leider funktioniert das nur bedingt. Ich kann den Regler so einstellen, dass er bei einer Sprunghöhe den richtigen Zeitverzug generiert. Also zum Beispiel bei einem Sprung des Eingangssignals von 1 auf 2 stimmt der Verzug, bei einem Sprung von 2 auf 5 stimmt er dann nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Tea
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 15.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2019, 14:28     Titel:
  Antworten mit Zitat      
Kleines Update:

Ich mache das nun mit einem Rate Limiter Block mit der Einstellung Continuos. Funktioniert super...Manchmal sieht man eben den Wald vor lauter Bäumen nicht! Very Happy
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.