|
|
Problem:C Mex-File in eine C Mex S-Function umschreiben |
|
Aki |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.06.2008, 10:52
Titel: Problem:C Mex-File in eine C Mex S-Function umschreiben
|
|
|
|
|
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
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 11.06.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.06.2008, 10:54
Titel:
|
|
Jetzt bin ich auch registriert. Entschuldigt, dass ich das nciht direkt gemacht habe.
|
|
|
Aki |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 11.06.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.06.2008, 11:01
Titel:
|
|
Hilfreich ist vielleicht noch die Information, dass der Eingabevektor unter der s-function callback-routine
eingelesen wird in der Form:
ist somit ein Zeiger der auf die Adresse des InputPorts der S-function zeigt
|
|
|
|
|
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.
|
|