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

Plot zeigt nichts an

 

ardit
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 11:24     Titel: Plot zeigt nichts an
  Antworten mit Zitat      
Code:
function [] = Lastheben ()

clear close
close all
clc

%%% Parameter %%%
global JM JT r m i n1 MK sK g

JM = 0.15;          % Massenträgheitsmoment des Motors [kgm²]
JT = 2.5;           % Massenträgheitsmoment der Seiltrommel [kgm²]
r = 0.3;            % Trommelradius [m]
m = 50;             % Masse der Last [kg]
i = 10;             % Getriebeübersetzung
n1 = 1500/60;       % Drehfelddrehzahl [1/s]
MK = 200;           % Kippmoment des Motors [Nm]
sK = 0.2;           % Kippschlupf des Motors [%]
g = 9.81;           % Erdbeschleunigung [m/s²]

tspan = [0 1];
initial = [0 0];

[t,z] = ode45(@Lastheben_DGL,tspan,initial);

figure
subplot (3,1,1)
plot (t,z(:,2),'r')
grid
legend ('Lastheben');
title ('Motordrehzahl');
xlabel ('Zeit [s]');
ylabel ('nM [1/min]');
hold on

subplot (3,1,2)
plot(t,s)
legend ('Schlupf');
title ('Schlupf');
xlabel ('Zeit [s]');
ylabel ('s [%]');
hold on

subplot (3,1,3)
plot(t,MM,'+')
legend ('Moment');
title ('Motormoment');
xlabel ('Zeit [s]');
ylabel ('MM [Nm]');

    function [dz] = Lastheben_DGL (t,z);
   
   
    function [s_result] = CalcS(n1,n);
        s_result = (n1-n)/n1;
    end
   
    function Motormoment = CalcMM(MK,s,sK);
        Motormoment = (2*MK)/((s/sK)+(sK/s));
    end
     
    MLM = (m*g)/i;
    s = CalcS(n1, z(2)/(2*pi));
    MM = CalcMM(MK,s,sK);
    Jred = JM+(JT/i^2)+((m*r^2)/i^2);
    phi_pktpkt = (MM-MLM)/Jred;
   
    A = [t z(2) s MM]'
   
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%         phi = z(1)               dz(1) = phi_pkt = z(2)       %%%
    %%%         phi_pkt = z(2)           dz(2) = phi_pktpkt = z(3)    %%%
    %%%         phi_pktpkt = z(3)                                     %%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
    dz = zeros(2,1);
   
    dz(1) = z(2);
    dz(2) = phi_pktpkt;
     
    end  

end

edit winkow: code umgebung nutzen
Private Nachricht senden Benutzer-Profile anzeigen


ardit
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 12:52     Titel:
  Antworten mit Zitat      
Mein Problem ist, dass es mir nur den ersten Plot anzeigt und die andren zwei nicht.
Kann da jemand helfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.01.2016, 13:27     Titel:
  Antworten mit Zitat      
Zum mittleren Subplot. Es wird schon alles angezeigt, aber ich vermutes die Variable ist nicht mit dem gefüllt was sein soll. Debug und Stop in Zeile 36:

Code:

>> whos t s
  Name       Size            Bytes  Class     Attributes

  s          1x1                 8  double              
  t         93x1               744  double              
K>> s
s =
    0.0253

 


s soll vermutlich auch ein Vektor sein. So wird nur das angezeigt was auch

Code:


plot(0:01.:1, 0)

 



anzeigen würde.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ardit
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

wie kann ich jetzt t über s ploten?
Private Nachricht senden Benutzer-Profile anzeigen
 
ardit
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 16:32     Titel:
  Antworten mit Zitat      
Wie bekomme ich die Zeiten aus der ode funktion?
Ich sehe nur, dass abhängig von welcher ode function unterschiedliche index-Anzahl rauskommt, jedoch kann ich die nicht plotten in der Zeit, welche ich vorgeben möchte.

Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen
 
ardit
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 18.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2016, 21:40     Titel:
  Antworten mit Zitat      
Habe das nun wie folgt gelöst, falls einen Leser interessiert hat.
Übrigens der Smile == :

Code:
function [] = Lastheben ()

    clear close
    close all
    clc

    %%% Parameter %%%
    global JM JT r m i n1 MK sK g

    JM = 0.15;          % Massenträgheitsmoment des Motors [kgm²]
    JT = 2.5;           % Massenträgheitsmoment der Seiltrommel [kgm²]
    r = 0.3;            % Trommelradius [m]
    m = 50;             % Masse der Last [kg]
    i = 10;             % Getriebeübersetzung
    n1 = 1500/60;       % Drehfelddrehzahl [1/s]
    MK = 200;           % Kippmoment des Motors [Nm]
    sK = 0.2;           % Kippschlupf des Motors [%]
    g = 9.81;           % Erdbeschleunigung [m/s²]


    tspan = [0:.001:1];
    initial = [0 0];


    [t,z] = ode23s( @(t,z) Lastheben_DGL(t, z), tspan, initial);

    subplot (3,1,1)
    plot (t,z(:,2),'r')
    grid
    legend ('Lastheben');
    title ('Motordrehzahl');
    xlabel ('Zeit [s]');
    ylabel ('nM [1/min]');
    hold on

    ss = zeros(size(t));
    for i = 1:numel(t)
       [~, ss(i)] = Lastheben_DGL(t(i), z(i,:));
    end
    subplot (3,1,2)
    plot(t, ss)
    grid
    legend ('Schlupf');
    title ('Schlupf');
    xlabel ('Zeit [s]');
    ylabel ('s [%]');
    hold on

    subplot (3,1,3)
    mm = zeros(size(t));
    for i = 1:numel(t)
       mm(i) = CalcMM(MK, ss(i), sK);
    end
    plot(t,mm)
    grid
    legend ('Moment');
    title ('Motormoment');
    xlabel ('Zeit [s]');
    ylabel ('MM [Nm]');

   
    function [dz, s]= Lastheben_DGL (t,z);
        MLM = (m*g)/i;
        s = CalcS(n1, z(2)/(2*pi));

        MM = CalcMM(MK,s,sK);

        Jred = JM+(JT/i^2)+((m*r^2)/i^2);
        phi_pktpkt = (MM-MLM)/Jred;
       
        %A = [t s MM]'

        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %%%         phi = z(1)               dz(1) = phi_pkt = z(2)       %%%
        %%%         phi_pkt = z(2)           dz(2) = phi_pktpkt = z(3)    %%%
        %%%         phi_pktpkt = z(3)                                     %%%
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

        dz = zeros(2,1);

        dz(1) = z(2);
        dz(2) = phi_pktpkt;
    end  

    function Motormoment = CalcMM(MK,s,sK);
        Motormoment = (2*MK)/((s/sK)+(sK/s));
    end

    function s_result = CalcS(n1,n);
        s_result = (n1-n)/n1;
    end

end

edit winkow: code umgebung verwenden!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.01.2016, 15:14     Titel:
  Antworten mit Zitat      
Hallo ardit,

Ein paar Kommentare zum Code:
Code:
function [] = Lastheben ()

    % Dieser Befehl löscht die Variable namens "close" - das ist sinnfrei hier!
    % Am Anfang einer Funktion ist der lokale Workspace leer, deshalb ist ein
    % "clear" sowieso überflüssig.
    clear close

    close all
    clc

    % Dun brauchst die Variablen nicht als GLOBAL zu deklarieren, wenn
    % Du mit nested functions arbeitest. GLOBALe Variablen sind sowieo immer
    % ein schlechter Programmierstil.
    global JM JT r m i n1 MK sK g

   

Gruß, Jan
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 - 2025 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.