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 switch

 

FCD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2011, 16:04     Titel: Problem mit switch
  Antworten mit Zitat      
Hallo Forengemeinde,

ich habe ein problem mit dem switch block.

in meinem modell wird ein winkel berechnet der dann mit einer konstanten verstärkt wird.daraus resultiert eine kraft. diese kraft ist an der position eins des switch blocks.
da der winkel positiv als auch negativ sein kann und auch durchaus von bedeutung ist, muss das vorzeichen beibehalten werden.
ist nun das ergebnis aus winkel mal konstante größer als 10^3 bzw kleiner als -10^3,
dann soll die kraft nach einer bestimmten vorschrift berechnet werden. diese geht in die position drei des switch blockes.
An die zweite position habe ich nun eine konstante mit 10^3 gesetzt.

mein problem ist nun, dass bei -10^3 nicht umgeschaltet wird.
wie kann ich diesen fall berücksichtigen.
oder ist es auf eine andere art und weise einfacher

Ich hoffe es kann mir einer von euch weiterhelfen. THX

Gruß


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 18.07.2011, 18:59     Titel:
  Antworten mit Zitat      
Hi FCD,

Kannst du deine Berechnung nicht einfach in ein Matlab M-File packen und dieses dann mit dem Simulink-Block "Matlab Fcn" aufrufen?

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
FCD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 11:57     Titel:
  Antworten mit Zitat      
Hi Georg,

mein problem hierbei ist, dass die zweite berechnungsvorschrift in einem subsystem berechnet wird.
wie kann ich auf dieses in einer matlab datei verweisen

ich habe:

function Kraft = fcn(Winkel)
if (kraft >= -10^3) && (kraft <= 10^3)
Kraft = Konstante*Winkel
else
Kraft = "Berechnungsvorschrift nach subsystem"
end
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 19.07.2011, 12:16     Titel:
  Antworten mit Zitat      
HI FCD,

Es gibt zwei Möglichkeiten.

1. Du schreibst dein Subsystem ebenfalls als M-Funktion und rufst diese innerhalb der Karftberechnung auf
2. Du lässt dein Subsystem die Berechnung immer durchführen und gibst auch diesen Wert an die Kraft-Funktion weiter. Diese entscheidet dann, ob der Wert verwendet wird.

Da du das Subsystem ja schon fertig hast, bietet sich die 2. Variante an. Dann sparst du dir weitere Programmierarbeit. Die Kraftfunktion müsste dann etwa so aussehen:

Code:

function f = Kraft(Winkel,output_subsys)

produkt = Konstante*Winkel;
if (produkt >= -10^3) && (produkt <= 10^3)
  f = produkt;
else
  f = output_subsys;
end
 


In Simulink musst du dann bei den Matlab Fcn Block Parametern folgendes eintragen:
Code:

Kraft(u(1),u(2))
 

wobei u(1) = Winkel und u(2) = output Subsystem. Bei Bedarf könntest du die Konstante noch als dritten Funktionsparameter in den Funktionskopf mit hereinnehmen.

Da der Matlab Fcn Block nur einen Eingangsport hat, musst du die beiden Signale vorher mit einem MUX zusammenfügen. Der obere Port vom Mux ist dann u(1) und der untere u(2). Den Switch brauchst du nun nicht mehr. Das macht jetzt die Funktion Kraft.m.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
FCD

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2011, 12:20     Titel:
  Antworten mit Zitat      
Vielen Dank Georg

ich werde es dann gleich mal versuchen und berichten.

Gruß
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 19.07.2011, 12:24     Titel:
  Antworten mit Zitat      
Prima.
Ich hoffe, du hast bemerkt, dass ich die Variable prod noch in produkt umbenannt habe. Das war nämlich eine unbedachte Wahl, da prod bereits eine Funktion in Matlab ist.

Viel Erfolg!
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.