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

Simulationszeit in Simulink bestimmen

 

Eddy2k
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 15.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2013, 10:20     Titel: Simulationszeit in Simulink bestimmen
  Antworten mit Zitat      
Hallo Leute!

Ich habe momentan folgendes Problem:

Ich habe ein Simulink Modell, das den Aufheizvorgang eines Ofens simuliert. Das Modell ist abhängig von einer Stellgröße u. Nun möchte ich folgendes programmieren. Sobald die Stellgröße u den Wert 0 annimmt, soll eine Variable angelegt werden, die die Simulationszeit speichert, innerhalb der die Stellgröße u = 0 ist. Diese Variable möchte ich dann für eine weitere Berechnung nutzen. Sowas müsste man doch in einer Embedded Matlab Function realisieren können. Ich hoffe ihr könnt mir weiter helfen!

MfG
Private Nachricht senden Benutzer-Profile anzeigen


knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2013, 13:04     Titel:
  Antworten mit Zitat      
Code:


function t_u_null = fcn(u, simtime)
persistent t_null
if isempty(t_null)
     t_null = 0;
end

if u == 0
       t_null = simtime;
end
t_u_null = t_null;

 



simetime aus dem Clock Block.
Private Nachricht senden Benutzer-Profile anzeigen
 
Eddy2k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 15.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2013, 13:47     Titel:
  Antworten mit Zitat      
Danke für deine Antwort knilumis_baltaM!

Ich habe den Code so übernommen, das ganze funktioniert auch soweit, allerdings erhalte ich am ende für t_u_null die gesamte Simulationszeit.

Ich brauche jedoch nur die Zeit, innerhalb der u = 0 ist. Wenn ich z.B. für u erst 2, 3, 4, 5 stelle soll t = 0 bleiben, ab u=0 soll die Zeit gemessen werden.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2013, 16:22     Titel:
  Antworten mit Zitat      
Hab es eher verstanden, dass es einmal Null wird und du den Zeitpunkt am Ende haben möchtest. Kannst ja das von mir erweitern zu

Code:
function [anf_v,ende_v,anzahl]= fcn(u, simtime)
%#codegen
persistent anf
if isempty(anf)
    anf = zeros(1,10);
end

persistent ende
if isempty(ende)
    ende = zeros(1,10);
end

persistent n
if isempty(n)
    n = 0;
end

persistent flag
if isempty(flag)
    flag = 0;
end

if flag == 1
    if u ~= 0
        ende(n) = simtime;
       
        flag = 0;
    end
else
    if u == 0
        n = n + 1;
        anf(n) = simtime;
        flag = 1;
    end
end
anf_v = anf;
ende_v = ende;
anzahl = n;
Private Nachricht senden Benutzer-Profile anzeigen
 
Eddy2k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 15.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2013, 17:34     Titel:
  Antworten mit Zitat      
Jo super, danke nochmal!

Jetzt kann ich mir über die Differenz von ende_v und anf_v die Zeit ausgeben lassen, das funktioniert einwandfrei. Allerdings komme ich damit auch nicht ganz weiter, ich denke ich habe einfach das Problem zu ungenau beschrieben...

Im Prinzip soll folgendes geschehen:

In meinem Modell erhalte ich aus dem Wert y immer die aktuelle Ofentemperatur.
Je nach dem, bei welcher Temperatur y der Heizvorgang unterbrochen wird (indem u = 0 gesetzt wird), erhalte ich eine unterschiedlich schnelle Abkühlung. Für diesen Zusammenhang habe ich ein Polynom, das mir den Abfall der Temperatur (dT) in Abhängigkeit von der aktuellen Temperatur (y) ausgibt.

Ich dachte mir nun, wenn ich während der Simulation das dT aus dem Polynom mit der verstrichenen Kühlzeit multipliziere und dieses Ergebnis von der aktuellen Temperatur y abziehe, kann ich den Kühlvorgang des Ofens ganz gut abbilden. Also brauche ich im Prinzip eine Variable tK, die immer ab u=0 mit der Simulationszeit ansteigt.

Ist etwas schwer zu beschreiben, aber ich hoffe du verstehst was ich vor habe, ansonsten frag nochmal nach Very Happy

Ich habe schon versucht mit den Befehlen tic/toc zu arbeiten, das habe ich aber leider nicht ganz geschafft.

Gruß
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.