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

Simulinkmodell in Standalone umwandeln

 

Alex.ab
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2009, 15:16     Titel: Simulinkmodell in Standalone umwandeln
  Antworten mit Zitat      
Hallo,

ich habe ein Simulinkmodell, das ich gerne in eine .exe umwandeln würde.
Leider sind meine Malab-Kentnisse eher begrenzt, so dass ich hier noch einmal um Rat frage.

Das Modell benötigt einige Parameter, die übergeben werden müssen und soll das Ergebnis in ein .mat-File schreiben. Ich denke das die Rapid Simulation das wichtige Tool dafür ist.
Meine Fragen:

1. Wie übergebe ich die Parameter. Ist es dazu notwendig ein .m-File zu schreiben? Wenn ich versuche das Modell zu builden werden Fehler geworfen, weil ich die Parameter nciht übergeben habe.

2. Wo bestimme ich die Input/Output Dateien. Wenn ich mich richtig informiert habe können die Parameter über ein .mat-File eingelesen und in ein anderes wieder ausgegeben werden.

3. Gibt es irgendwo eine Art Tutorial oder kann mir jemand die nötigen Schritt kurz erläutern?

Ich hoffe mir kann jemand helfen.

Danke schon einmal

Alexander
Private Nachricht senden Benutzer-Profile anzeigen


apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 16.02.2009, 14:25     Titel:
  Antworten mit Zitat      
Hi,

bevor ich hier ewig langen text schreib, solltest Du folgende Aspekte ausschließen, bei den das Rsim Target nicht funktioniert:

- deine Parameter ändern ihre Dimensionen
- (bei S-Functions) Du holst die Parameter aus dem Dialog Feld per "ssGetSFcnParam"
- Du hast keinen Matlab-Compiler installiert austesten per
Code:
license('test','compiler')

sollte 1 ausspucken

Wenn das alles nicht zutrifft, meld ich hier nochmal, das ist nicht ganz einfach, ich hab bei ersten mal locker 50-60 Stunden gebraucht, bis ich alles zusammen hatte (inkl Literatur wälzen, Mathwokrs Support nerven, goMatlab-Forum nerven Twisted Evil ). Zum glück bin ich Praktikane und meine Arbeitszeit nicht teuer ^_^

lg, apn
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 16.02.2009, 15:59 Uhr von Bijick
Von Programmierung nach Simulink
 
Alex.ab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 18:36     Titel:
  Antworten mit Zitat      
Hi apn,

hatte die Hoffnung auf eine Antwort schon fast aufgegeben. Also schon mal vielen Dank im Voraus.

Die ersten beiden Aspekte kann ich ausschließen.
Der Compiler ist installiert. Von daher sollte es eigentlich klappen.

Ich hoffe die 50-60 Stunden sind jetzt nicht mehr nötig Wink

Bis denn

Alexander
Private Nachricht senden Benutzer-Profile anzeigen
 
apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 17.02.2009, 09:17     Titel:
  Antworten mit Zitat      
Gut.
Zuerst: Beim Kompilieren musst Du das Modell mit "Anfangsparamtern" hartcodieren, diese sind dann in der exe-Datei gespreichert. Diese Anfangsparameter müssen sich beim Kompilieren im Workspace befinden.

Um diese später ändern zu können (bzw. verwerfen und neue nehmen), musst Du in die RTW-Options gehen. Dort, unter "Optimization", steht eine Radio Box "Inline Parameters", diese aktivieren.
Jetzt kannst Du daneben auf die Schaltfläche Configure klicken, und dort hast Du alle Variablen angezeigt, die im WS stehen. hier kannst Du einstellen, welche Parameter Du als "Tunable" setzen möchtest.
Ich unterstelle mal genug Windows-Fähgikeit, das mit den Schaltflächen zu schaffen. Bei Storage Class läst Du am besten auf Simulink Auto
jetzt solltest Du dass Modell auch schon "builden" können.

Jetzt musst Du noch die Struktur erstellen, die vom kompilierten Modell gelesen werden kann. Dazu

Code:

rtP=rsimgetrtp('Modellname','AddTunableParamInfo','on');
save('suchdirnennamenaus.mat','rtP');
 


der rtP ist ein struct, der Daten über die Inline-Parameter und über ihre dimension etc enthält und auch ganz wichtig: Die Checksumme für dein Modell mit genau den Einstellungen und Anfangsparametern, er wird also nur mit dieser kompilierten Version funktionieren.
Das ändern dieser Datenstruktur ist ziemlich fummelig, der einzige veränderbare Teil ist die rtP.parameters.values alle anderen ist nur Information, und geht nicht in das Modell mit ein, wenn Du sie änderst.
Hier kannst Du durch scharfes angucken feststellen, dass die Infos, wo welcher Parameter zu finden ist unter rtP.parameters.map zu finden ist. Eben dieses ändern musst Du leider selber machen. Ich habe mir dafür eine Funtkion vorbereiten.m geschrieben, und die dann per
Code:
mcc -m vorbereiten.m
in Standalone kompilliert.

Das Modell schreibt, wenns denn mal läuft eine MAT-Datei raus, auch diese müsstest Du mit einen Extra nachbereiten Teil in lesbare Zahlen umwandeln.

Hoffe das reicht soweit erstmal

lg, apn
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex.ab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2009, 18:51     Titel:
  Antworten mit Zitat      
Hi apn,

super, dass hat mich schon einen ganzen Schritt weiter gebracht.
Habe von meinen Modellen EXE-Dateien builden können.

Allerdings bekomme ich beim Aufruf des rsimgetrtp-Befehls einige Fehlermeldungen.
Einmal:
Code:
In rsimgetrtp at 114
Warning: Parameter field 'VariableName' of 'my_model/From Workspace1' is non-tunable
but refers to tunable variables (variable1 (base workspace)).


und dann noch
Code:
In rsimgetrtp at 114
Warning: Reducing expression 'transpose(variable2(:,2))' in parameter field 'rep_seq_y' of
'my_model2/Variable' to its numerical equivalent because the expression contains one or
more unsupported function calls. This expression resolves to tunable variables (variable2
(base workspace)). You will be unable to tune this expression during model execution.


Habe ich das richtig verstanden, das nur diese mat-File dazu verwendet werden kann, um Variablen in die Exe zu übergeben? Ich kann also nicht irgendeine Datei erstellen (mit den richtigen Variablen versteht sich) und die dann dafür benutzen?
...und wie übergebe ich dann das mat-File an die Exe?

Danke noch mal

Alexander
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex.ab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2009, 21:05     Titel:
  Antworten mit Zitat      
Hi nochmal,

mir ist gerade aufgefallen, dass die o.g.
Fehlermeldungen bereits beim Builden der Modelle auftreten.

Irgend eine Ahnung, wie man das abstellen kann?

Cya

Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 20.02.2009, 09:14     Titel:
  Antworten mit Zitat      
ja, es ist ein spass Smile

- probier mal, wenn für Dich möglich oder egal, die From Workspace Blöcke durch Constant Value Blöcke zu ersetzen. Hier trägst dann einfach den Variablen Namen ein. Der wird dann aus dem base ws gelesen

- in den Einstelungen unter Real-Time- Workshop bei TLC Options "-p0" ohne Anführungsstriche eintragen
- falls du den lcc nimmst (matlab mitgeliefert) dann stell die targetlanguage auf C nicht C++

Was das MatFile angeht: Es handelt sich um das Standard Matlab Binär Format, im Prinzip so, als würdest Du die deinen WS mit dem Save-Button speichern. aber die kompilierte Modell möchte halt unbedingt aus DIESEM Format NUR die rtp-Struktur auslesen, mit den Variablen wo kann der nix anfangen. Es gibt hier ein Programm, dass dieses Umwandlung macht, du musst das dann halt noch extra wieder kompilieren. Das hab ich mir aber nicht abgeschaut, sonder habs selber geschrieben.
Also sonstige hilfe kannst Du mal
Code:
rtwdemo_rsim_param_tuning
eingeben, da ist ein Beispiel Modell und auch ein GUI zum ändern der Parameter (hab ich aber auch nicht angeschaut Very Happy )

lg,apn
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex.ab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 14:20     Titel:
  Antworten mit Zitat      
Hi apn,

das hat mir leider nicht weiter geholfen.
Ich habe jedoch festgestellt, dass alle Warnings nur von Variablen
hervorgerufen werden die nicht nur einen Wert enthalten (also Arrays, bzw. Matrizen).
Kann das mit dem transpose-Befehl zusammenhängen?

Cya

Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
apn
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 04.12.08
Wohnort: Wolfsburg
Version: ---
     Beitrag Verfasst am: 24.02.2009, 09:47     Titel:
  Antworten mit Zitat      
hm,

Ich habe meine Matrizen nur in S-Functions benutzt, da habe ich sie über das Dialogfeld geholt, alles was ich aus constant Blöcken hatte waren nur Skalare.
Vielleicht liegts daran, dass der Transpose Block nicht zu Simulink oder RTW Toolbox gehört, sondern zum Signal Processing Blockset. Ist nur Spekulation, aber wenn Du kannst, probier mal nur mit Blöcken aus den ersten beiden auszukommen.
Den Vorschlag verwerfen wir, den hab ich gerade selber mal probiert. Den Transpose Befehl nimmt der RTW an. Hab auch die transponierte Matrix auf tunable gestellt.

Also sonst fällt mir nix mehr ein. Kannst Du dein Modell bereitstellen? Oder is das irgendwie geschützt? Ansonsten fällt mir nur noch ein, dir mal Bugreports zu deiner Simulink version anzuschauen. Oder was mir dann auch empfohlen wurde mal den Mathworks Support zu nerven. Als lizenzierter Benutzer hast Du Anspruch darauf (glaub außer Studenten Version). Das Programm ist ja auch teuer genug.

Okay ich habs gerade gefunden Rolling Eyes :
Such mal in der Matlab Hilfe diese Seite

Tunable Expression Limitations

dein Transpose ist Category 4.

Abhilfe fällt mir spontan nicht ein. Außer die Matrix vorher im WS zu transponieren:
Code:

und dann beide seperat mit const Blöcken zu holen. nicht elegant, aber könnte klappen

lg, apn
Private Nachricht senden Benutzer-Profile anzeigen
 
Virtus
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2009, 16:09     Titel: Frage an Alex.ab
  Antworten mit Zitat      
1 Ich habe Tunable Variable erzeugt und das Model Kompiliert....

2 Ich habe rtP Struktur erzeugt und gespeichert:

Code:
rtP=rsimgetrtp(mymodel, 'AddTunableParamInfo','on');
save(myrtP.mat','rtP');


3 Dann habe ich den Wert Value in rtP geändert und wieder gespeichert

4 dann starte ich "mymodel.exe"
Code:


5 Das Ausgabe-Ergebnis bleibt gleich wie bei altem Wert von Value in rtP.
Also wenn ich den Wert Value in rtp Struktur ändere und das model.exe starte ändert sich nichts an der Ausgabe ... Crying or Very sad

Wie muss ich die Simulation starten um das neue Wert der rtp Struktur zu einsetzen??? Question
im
Code:
rtwdemo_rsim_param_tuning

geht es... aber ich habe nicht verstanden, wie die es machen… Crying or Very sad
Im RTW Help steht so was:
Code:
!mymodel -p filename.mat

Leider kriege ich hier auch eine Fehlermeldung… Könntest du mir irgendwie weiter helfen?
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.