|
|
funktion nutzen in Simulink |
|
schlammi |
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.10.2015, 15:45
Titel: funktion nutzen in Simulink
|
|
|
|
|
Hallo,
ich bin ziemlicher Neuling in Simulink und Matlab.
Für die Uni haben wir die Aufgabe, ein zwei Wagen Modell (mit 2 Federn und 2 Daempfer) zu simulieren. Jetzt bau ich grade das Blockschaltbild auf. Die Federkraft von der Feder 2 sollen wir mit einer Funktion ausrechnen, welche ich schon als Funktiondatei geschrieben hab. Diese heisst NL_Feder. Jetzt weiss ich nicht welchen Block ich nehmen muss, laut google den S-Block. Aber dann kommt folgende Fehlermeldung.
Ist das der richtige Block, was mache ich falsch?
Meine Funktion sieht wie folgt aus.:
function [ y ] = NL_Feder(u)
%u=[x20-x10 , c2]';
y=u(2)*((u(1))^3+u(1));
end
Da u ein array ist, muss ich doch auch ein Array beim Blockschaltsystem eingehen, oder sehe ich das falsch? Wie füge ich den 2 Werte in Array im Simulink zusammen?
So sieht mein Blockschaltbild momentan aus, sind wahrscheinlich noch viele Fehler drin, fange erst grad langsam an, dass zu verstehen.
Fragen über Fragen, ich bedanke mich jetzt schonmal für jede Hilfe
Beschreibung: |
|
Download |
Dateiname: |
2.JPG |
Dateigröße: |
32.92 KB |
Heruntergeladen: |
430 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 22.10.2015, 22:32
Titel:
|
|
Hallo,
ich würde stattdessen den MATLAB Function - Block nutzen.
Vermutlich ist es einfacher, wenn du statt einem Vektorsignal u mit zwei Signalen u1 und u2 als Eingängen arbeitest.
Falls du Vektorsignale erstellen möchtest, geht das mit dem Mux-Block
Grüße,
Harald
|
|
|
schlammi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.10.2015, 11:15
Titel:
|
|
Dankeschonmal!
Wir dürfen nur einen input haben in der Funktion, das ist vorgeschrieben.
Wenn ich den Block Matlab Funktion nehme, muss ich doch eine neue Funktion erstellen oder?
Ich will aber bereits die erstellte Funktion nutzen. Geht das auch mit dem Block?
Gruss
Yannick
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.10.2015, 14:15
Titel:
|
|
Einfach den Code Deiner Funktion in den Block einfügen.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.10.2015, 19:04
Titel:
|
|
Hallo,
... oder einen Aufruf der bestehenden Funktion.
Grüße,
Harald
|
|
|
schlammi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2015, 09:52
Titel:
|
|
OK das hab ich gemacht. Allerdings funktioniert es nicht so ganz wie ich es mir vorstelle. Also hier erstmal die Matlab Funktion.
Hier die NL_Feder Funktion:
Mein Simulink Blockschaltbild sieht mittlerweile wie folgt aus:
Wenn ich es simuliere, kann er die Funktion nicht durchführen, weil das u falsch ist. Wenn ich den input (x_2-x_1) verändere, und anstelle einfach eine konstante als input wähle, dann kann er die Funktion auswählen. Ich habe mal ein Display dran gehangen, um zu schauen was (x_2-x_1) ist, da wurde mir -68 angezeigt.
Ich verstehe nicht warum er die Funktion nicht mit (x_2-x_1) ausführen kann.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.10.2015, 10:46
Titel:
|
|
Hallo,
bitte die Fehlermeldung kopieren, nicht interpretieren.
Wenn du das Modell statt eines Screenshots davon anhängst, hat das den Vorteil, dass wir das Modell laufen lassen können.
Was mir ins Auge springt, sind die vielen Signalkreuzungen. Diese sollten unbedingt vermieden werden, damit das Modell gut lesbar ist.
Grüße,
Harald
|
|
|
schlammi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2015, 10:53
Titel:
|
|
Okay mache ich. Hier die Fehlermeldung.
"Index expression out of bounds. Attempted to access element 2. The valid range is 1-1.
More information
Function 'NL_Feder.m' (#49.53.54), line 3, column 5:
"2"
Launch diagnostic report.
Component: MATLAB Function | Category: Coder error
Function call failed.
Function 'MATLAB Function1' (#53.58.69), line 4, column 7:
"NL_Feder(u)"
Launch diagnostic report.
Component: MATLAB Function | Category: Coder error
Errors occurred during parsing of MATLAB function 'MATLAB Function1'
Component: MATLAB Function | Category: Coder error
Errors occurred during parsing of MATLAB function 'MATLAB Function1'
Component: Simulink | Category: Block error
Ich werd es mal versuchen ein wenig mehr zu ordnen.
Beschreibung: |
|
Download |
Dateiname: |
sim_Zwei_Wagen.m |
Dateigröße: |
1.01 KB |
Heruntergeladen: |
450 mal |
Beschreibung: |
|
Download |
Dateiname: |
Zwei_wagen.slx |
Dateigröße: |
25.99 KB |
Heruntergeladen: |
451 mal |
|
|
|
schlammi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2015, 11:06
Titel:
|
|
Hier die Simulink Datei nochmal, aber geordneter!
Beschreibung: |
|
Download |
Dateiname: |
Zwei_wagen.slx |
Dateigröße: |
25.46 KB |
Heruntergeladen: |
418 mal |
|
|
|
schlammi |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 22.10.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.10.2015, 18:06
Titel:
|
|
Hab die Funktion jetzt mit 2 Eingangsgrößen erstellt und nochmal probiert, das klappt nun!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|