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

C-Code aus Simulink-Modell erstellen

 

Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2009, 15:58     Titel: C-Code aus Simulink-Modell erstellen
  Antworten mit Zitat      
Hi Leute,

ich habe folgendes Problem. Und zwar möchte ich aus meinem Simulink Modell C-Code generieren um diesen dann weiter zu verwenden. Wenn ich das NUR mit Simulinkblöcken aufbaue, funktioniert das Ganze problemlos. In der Simulation in Matlab funktioniert auch der Aufruf meiner eigenen Funktionen und die Verwendung der definierten Variablen/Structs.


Füge ich nun Embedded-Matlab-Blöcke hinzu in denen ich selbstgeschriebene Funktionen aufrufen möchte, kommen folgende Fehlermeldungen:

Function 'evidence_calc_besch' resolved in the MATLAB workspace and will only be called during simulation.

Function 'Vorverarbeitung Signale/Bayes Beschleunigen/Bayesian Network' (#452.630.975), line 9, column 11:
"evidence_calc_besch(delta_v_schneller,delta_v_gleich,delta_v_langsamer,TTC_abneh"

Failed to eliminate a use of the MATLAB function 'evidence_calc_besch'.
For non-simulation builds, uses of unsupported MATLAB functions are eliminated if they do not effect the model outputs.

Code generation failed -->Embedded MATLAB Coder Error :(SLSF Diagnostic)Failed to eliminate a use of the MATLAB function 'evidence_ca...For non-simulation builds, uses of unsupported MATLAB functi...



Nun meine Fragen Very Happy

Ist es überhaupt möglich, dass Matlab selbsterstellte Funktionen (evidence_calc_besch) mit in diesen Code einbindet?

Werden auch Structs, die im Workspace definiert sind, mit in den C-Code eingebunden oder gehen diese Informationen verloren?


Ich bedanke mich schon mal für eure Hilfe. Hoffentlich bekommen wir schnell eine Lösung zusammen. DANKE.

vg Hans


Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 08:28     Titel:
  Antworten mit Zitat      
Hi Leute,

hat hier keiner eine Antwort auf meine Frage?
Ich brauche dringend eine Lösung, da es für meine Diplomarbeit notwendig ist.

Mein Problem nochmal kurz beschrieben:
Ich rufe in einem Embedded-Simulink-Block ein M-File auf. In der Simulation funktioniert das Ganze ohne Weiteres.
Möchte ich nun aus diesem Simulink-Modell C-Code generieren kommen die oben genannten Fehlermeldungen.

Wie kann ich diese M-Files mit übersetzen?

Viele Grüße,
Hans
 
....

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 09:36     Titel: ...
  Antworten mit Zitat      
Hi...
Willst du dein komplettes modell übersetzen lassen???Also ich habe auch ein embedded matlab function mittels Code Composer Studio C code generieren lassen...
Ich weiss was du genau machen willst...
erläutere es mal bitte genau
 
Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 09:47     Titel:
  Antworten mit Zitat      
Hi,

ja ich möchte mein komplettes Modell übersetzen lassen.

In diesem Modell sind Embedded-Simulink Blöcke. Diese Blöcke rufen über Funktionen m-Files aus einer Toolbox auf. Und mit diesen werden dann meine Ausgänge berechnet. Über die Toolbox habe ich ein Bayessches Netz erstellt, welches ich zuvor in den Workspace abspeicher. Die Embedded-Blöcke rufen nun die M-Files auf, welche sich aus den Eingangswerten im Simulink-Modell und dem hinterlegten Netz die Ausgänge berechnet.

Ich möchte nun das komplette Modell mit dem im Workspace definierten Netz und benötigten Variablen in C-Code übersetzen.

Sprich ich möchte eine Funktion in C-Code haben, an die ich die Eingangswerte übergebe und dann die Ausgänge bekommen.

Unter Simulink funktioniert es ohne Probleme.

Ich hoffe du kannst mir weiterhelfen.


Viele Grüße,
Hans
 
...

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 10:02     Titel: ...
  Antworten mit Zitat      
Soll dein Modell später auf ein Board geladen werden??Also ich habe Code Composer Studio (es gibt auch andere Programme zum generieren) benutzt falls du schon mal was davon gehört hast...
Mein Simulink Modell wurde dann komplett in C Code generiert...Was mich mal intersieren würde... klappt denn deine Verbindung von Modell zu Workspace??
 
....

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 10:09     Titel: Globale Variablen
  Antworten mit Zitat      
Also ich habe mir mal die Fehler durch gelesen, also ich vermute mal das die Verbindung zu deinen Workspace das Problem sind...du muss die Funktionen innerhalb deines Modells erstellen...und dann generieren..weil simulink weiss ja nichts vom Workspace, weil du ja nicht simulierst während du generierst. Workspace ist für simulink zu dem zeitpunkt unbekannt.

Also deine Funktionen statisch im Modell erstellen das die werte egespeichert bleiben bei erneuten Funktionsaufruf...
Dann wird es glaub ich gehen...
hatte auch probleme mit dem Workspace damals....
 
Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 10:38     Titel:
  Antworten mit Zitat      
Hi,

ich möchte den Code dannach in einem Framework einbinden. In einem anderen Modell funktioniert die Umsetzung in C-Code. Dieser Code läuft auch schon ohne Probleme in dem Framework. Den Code habe ich mit RTW erzeugt.

Der einzige Unterschied zu dem anderen Modell ist, dass ich keine m-Files aufrufe und auch keine Variablen im Workspace habe.
Die Verbindung vom Workspace zum Modell funktioniert auch in der Simulation.

Habe ich es richtig verstanden, dass ich die Erstellung des Netzes im Modell einbinden soll? Soll ich diesen Aufruf mit in den Embedded-Block einbauen?

Dann bleibt meiner Meinung nach noch immer das Problem mit dem Aufruf der m-Files aus der Toolbox. Wie kann ich dieses Problem lösen?



vg Hans
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.08.2009, 10:43     Titel:
  Antworten mit Zitat      
Hallo,
generell probiert der Embedded MATLAB Block, den Code mitzukompilieren. Offensichtlich wird in der Funktion evidence_calc_besch code verwendet zu werden, der nicht compilierfähig ist (der Embedded MATLAB Block "versteht" nicht alles, was MATALB versteht). In der Simulation ist das unproblematisch, da wird auf den MATLAB Interpreter zurückgegriffen. Bei der Codegenerierung eben nicht.
In der Hilfe findet man recht genau, was unterstützt wird von Embedded MATLAB und was nicht.
Eine Möglichkeit wäre, die Funktion als Unterfunktion in den Embedded MATLAB function block zu kopieren und dann zu schauen, was beim Compilieren MATLAB sauer aufstößt.

Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Hans09

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 10:58     Titel:
  Antworten mit Zitat      
Hi Titus,

danke für den Hinweis. Habe zu Beginn meiner Arbeit die "cell arrays" in ein m-File ausgelagert, weil "Cell Arrays" in Embedded-Blöcken nicht unterstützt werden.

Code:
soft_evidence{1} = [b1 b2 b3];


Mein Problem ist, die Toolbox braucht die Eingabe so Sad

Das war der Grund wieso ich diese in ein extra m-File ausgelagert habe ... wie komme ich nun weiter?


Viele Grüße,
Hans
 
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.