Verfasst am: 14.06.2012, 07:38
Titel: Switchfunktion bringt nur Fehler
Hallo zusammen,
ich bin neu hier im Forum und beschäftige mich auch erst seit ein paar Wochen ausführlicher mit Simulink. Ich habe ein Simulationsmodell erstellt, in dem ich eine Switchfunction benötige. Wenn ich das Modell simulieren lassen möchte, dann kommt leider nur eine geballte Anzahl an Fehlern.
Ich poste hier mal meinen Code sowie die zugehörigen Fehlermedlungen:
switchfunc
4
Index expression out of bounds. Attempted to access element 2. The valid range is 1-1.
2
switchfunc
5
Index expression out of bounds. Attempted to access element 3. The valid range is 1-1.
3
switchfunc
6
Index expression out of bounds. Attempted to access element 4. The valid range is 1-1.
4
switchfunc
7
Index expression out of bounds. Attempted to access element 5. The valid range is 1-1.
5
switchfunc
8
Index expression out of bounds. Attempted to access element 6. The valid range is 1-1.
6
switchfunc
9
Index expression out of bounds. Attempted to access element 7. The valid range is 1-1.
7
switchfunc
10
Index expression out of bounds. Attempted to access element 8. The valid range is 1-1.
8
switchfunc
11
Index expression out of bounds. Attempted to access element 9. The valid range is 1-1.
9
switchfunc
12
Index expression out of bounds. Attempted to access element 10. The valid range is 1-1.
10
switchfunc
13
Index expression out of bounds. Attempted to access element 11. The valid range is 1-1.
11
switchfunc
14
Index expression out of bounds. Attempted to access element 12. The valid range is 1-1.
12
switchfunc
15
Index expression out of bounds. Attempted to access element 13. The valid range is 1-1.
13
switchfunc
49
Undefined function or variable 'stick'. The first assignment to a local variable determines its class.
14
switchfunc
50
Undefined function or variable 'Fn'. The first assignment to a local variable determines its class.
15
switchfunc
52
Undefined function or variable 'Fn'. The first assignment to a local variable determines its class.
16
switchfunc
55
Undefined function or variable 'we'. The first assignment to a local variable determines its class.
17
switchfunc
55
Undefined function or variable 'Mkuppfn'.
18
switchfunc
56
Undefined function or variable 'Mk1'. The first assignment to a local variable determines its class.
19
switchfunc
59
Undefined function or variable 'Tcfn'. The first assignment to a local variable determines its class.
20
switchfunc
63
Undefined function or variable 'wc'. The first assignment to a local variable determines its class.
21
switchfunc
64
Undefined function or variable 'w2'. The first assignment to a local variable determines its class.
22
switchfunc
65
Undefined function or variable 'w3'. The first assignment to a local variable determines its class.
23
switchfunc
67
Undefined function or variable 'Mmot'. The first assignment to a local variable determines its class.
24
switchfunc
68
Error limit reached. Suppressing further error messages.
Function: switchfuncCallers:
Was die undefinierten Variablen betrifft: Muss ich diese Variablen in Matlab zuvor hinterlegen, damit er diese aufrufen kann?
Hallo Poltergeist12,
ich habe das selbst noch nicht gemacht, aber so wie es aussieht hat u nicht die Dimensionen die du erwartest und deswegen die ganzen Fehler.
Du greifst auf u(2) beispielsweise zu, aber u hat wohl nur einen Bereich von 1 bis 1... sprich nur ein Element. Deswegen kann er auf die anderen nicht zugreifen und deswegen werden auch die Variablen nicht angelegt und er sagt, dass die unbekannt sind.
Auch seltsam ist, dass in deinem Screenshot die Fragezeichen auftauchen... eigentlich sollten da die Dimensionen stehen... funktioniert dein restliches Model ohne Probleme?
_________________
er kann die Dimension der Eingangsvariablen nicht bestimmen. Eine Matlab-Function wird in C-Code umgesetzt und kompiliert. Deswegen muss man speziell angeben, welche Dimension deine Variable besitzt. Das ist auch meiner Meinung nach der Fehler.
Gehe zur Lösung in den Model-Explorer, dann zu deinem Matlab Function Block und setze bei der Eingangsvariablen u die Dimension auf 13. Das sollte dann funktionieren. Wenn nicht, bitte nochmal melden.
Ansonsten musst du die in der Matlab-Function verwendeten Variablen nicht weiter definieren.
versuche mal einfach den Vektor mit Einsen zu belegen, bevor du die Werte zuweist. Ist zwar nicht korrekt, da werte ja auch 0 sein können aber zumindest sollte es dann mal laufen.
also die Idee mit der Matrix für u geht leider nicht. Nach dem Anpassen der Dimension, nennt sich in Version 2010 "Size" kommt die folgende Fehlermeldung:
Code:
Embedded MATLAB Interface Error: Port width mismatch. Input "u"(#22) expects a one dimensional vector with 13 elements. The signal is a one dimensional vector with 41 elements.
OK bin wieder einen Schritt weiter, der vorherige Fehler kam daher, dass ich eine Messreihe vorgegeben habe und dann zu viele Daten ins Mux eingeflossen sind.
Allerdings bekomme ich nun für die Ausgangswerte zum Demux die folgende Fehlermeldung:
Code:
Inferred size('[122]')for data 'output' (#23) does not match specified
size('[10]')
trag doch mal bitte bei deinem Input und Output von der Matlab Function das richtige ein. So wie in der Fehlermeldung beschrieben:
Input von der Matlab Function hat die Dimension 41. Also trag das auch ein. Beim Output trag ein: [1,22].
Damit hast du diese Probleme schon mal erledigt.
Nächstes Problem ist eine algebraische Schleife (du hast ja schon versucht, die meisten über delay-Blöcke aufzubrechen). Mein grundsätzlicher Tip zum Auflösen von algebraischen Schleifen ist, diese NICHT über Delay-Blöcke aufzubrechen, weil diese das Systemverhalten gravierend ändern können. Alternativ kannst du versuchen, deine Gleichungen umzuschreiben. Wie auch immer.. du hast immer noch eine algebraische Schleife (unten bei den beiden Mux und Demux Blöcken). Diese musst du dann, wenn du mit Memory oder Delay Blöcken das machst, auch entsprechend aufbrechen.
Weiter im Text..
In der Matlab Function gibts noch einen Fehler in Zeile 70. Da fehlt ein "*"...
All diese Fehler korrigiert läuft dein Modell fehlerfrei durch.
Grüße
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
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.