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:C Mex-File in eine C Mex S-Function umschreiben

 

Aki

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2008, 10:52     Titel: Problem:C Mex-File in eine C Mex S-Function umschreiben
  Antworten mit Zitat      
Hallo allerseits,

ich studiere in Aachen und muss für eine Projektarbeit einen Sollwertgenerator umprogrammieren. Leider hänge ich momentan an einem Problem und hoffe, dass mir hier jemand weiterhelfen kann.

Der in C geschriebene Sollwertgenerator verwertet einen Eingangsvektor mit 7 Konstanten (unter anderem einer Clock) und gibt für jeden Simulationsschrit einen Vektor mit 4 Werten aus. Diese Ausgabewerte ergeben dann jeweils Kurven für Weglage, Geschwindigkeit, Beschleunigung und Ruck.

Der Sollwertgenerator wurde ursprünglich über den Matlab-Function - Block in Simulink als C-Source-Mex - File (mexfunction) integriert. Ein- und Ausgangsvektor sind über je einen Mux-Block mit dem Matlab Function - Block verbunden, und diese gesamte Struktur ist dann in einer Maske zusammengefasst worden. Ziel ist es zunächst, den Sollwertgenerator innerhalb der Maske jetzt über einen S-function - Block zu anstelle des Matlab-Function Blockes zu integrieren.

Das ist mir zum Großteil auch gelungen. Ich habe die Routinen aus dem C Mex-File erfolgreich in die Struktur einer S-function gebracht, und prinzipiell läuft das Modell auch.

Das Problem ist folgendes: Zu Beginn einer jeden Simulation muss ein Vektor in der Form [0, 0, 0, 0, 0, 0, 0] eingelesen werden. Dies ist wichtig, damit der C-code die richtigen Werte ausgibt (leider habe ich den C-Code nicht selber geschrieben; in den Kommentaren steht, dass diese Eingabe notwendig ist, "damit das Modul weiß, dass eine neue Simulation beginnt").

Prinzipiell kann ich ja in der Maske einen Initialisierungs-Befehl eingeben. Ich habe nur keine Ahnung wie genau der aussehen muss, damit ich den Vektor an die S-function übergeben kann.

Ich hoffe ich habe das Problem ausreichend beschrieben. Wenn nötig kann ich gerne was aus dem Code posten.

Vielen Dank schon mal
Gruß, Aki


Aki
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2008, 10:54     Titel:
  Antworten mit Zitat      
Jetzt bin ich auch registriert. Entschuldigt, dass ich das nciht direkt gemacht habe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Aki
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 11.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2008, 11:01     Titel:
  Antworten mit Zitat      
Hilfreich ist vielleicht noch die Information, dass der Eingabevektor unter der s-function callback-routine
Code:
static void mdlOutputs(SimStruct *S, int_T tid)

eingelesen wird in der Form:


Code:
InputRealPtrsType eingabevektor = ssGetInputPortRealSignalPtrs(S,0);


Code:
eingabevektor

ist somit ein Zeiger der auf die Adresse des InputPorts der S-function zeigt
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.