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

Problem mit Level-2 M-File S-function

 

LeBob
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 25.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 09:01     Titel: Problem mit Level-2 M-File S-function
  Antworten mit Zitat      
Hallo und guten Morgen erstmal an alle.

Ich bin gerade dabei im Rahmen meiner Masterarbeit eine MKS mit Matlab und Simulink zu erstellen. Zuerst dachte ich mir es wäre aufgrund der vielen und vor allem langen Berechnungsformeln besser, das Ganze in Matlab zu realisieren. Soweit so gut. Allerdings musste ich feststellen, dass ich zusätzlich einen bzw. mehrere Regeler benötige weshalb ich dann den "Kompromiss" zwischen Matlab und Simulink gesucht habe. Nun verwende ich die zuvor in Matlab erstellten einzelnen Funktionen zur Berechnung verschiedener Bestandteile meiner DGL in Simulink, genauer in Form von Level-2 M-File S-functions.

Nachdem ich nun einige Simulationen habe durchrechnen lassen gefallen mir meine Ergebnisse überhaupt nicht. Dies äußert sich insofern, als das die Ergebnisse bei Veränderung von Massen und Trägheitsmomenten keine Veränderungen erfahren. Demnach befinde ich mich gerade also auf Fehlersuche und habe den Verdacht, dass meine Einstellungen innerhalb der S-Functions evtl. falsch sein könnten.

Jede S-Function soll für jeden (minor) Integrationsschritt ein neues Ergebnis berechnen. Das ganze verändert sich also durchgängig. Demnach habe ich die folgenden Einstellungen vorgenommen, bin aber unschlüssig ob dies wirklich stimmt.

Code:

function jacobis(block)  

setup(block);

end


function setup(block)

global freiheit;    

block.SampleTimes = [0 0];

block.NumInputPorts  = 2;
block.NumOutputPorts = 2;
block.InputPort(1).Dimensions = [freiheit 1];
block.InputPort(2).Dimensions = [freiheit 1];
block.InputPort(1).DirectFeedthrough = true;
block.InputPort(2).DirectFeedthrough = true;
block.OutputPort(1).Dimensions = [6*freiheit freiheit];
block.OutputPort(2).Dimensions = [6*freiheit freiheit];

block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('SetInputPortSamplingMode',@SetInputPortSamplingMode);

end


function SetInputPortSamplingMode(block,idx,fd)
%
block.InputPort(idx).SamplingMode = fd;
block.OutputPort(1).SamplingMode = fd;
block.OutputPort(2).SamplingMode = fd;
%
end
 


Der untere Teil, also

Code:


function SetInputPortSamplingMode(block,idx,fd)
%
block.InputPort(idx).SamplingMode = fd;
block.OutputPort(1).SamplingMode = fd;
block.OutputPort(2).SamplingMode = fd;
%
end
 


stammt aus der Tutorial oder Hilfe Datei in Simulink. Mir ist allerdings nicht klar woher die Werte für idx und fd stammen und welchen Wert sie haben. Sofern ich das richtig verstanden habe sollte idx in meinem Fall die Werte 1 und 2 haben und fd 0 damit meine Ausgabe sample-based ist. Könnte mir diesbezüglich vll. jemand auf die Sprünge helfen.

Mit freundlichem Gruß

LeBob
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.