|
|
c-code als s-function in simulink intergrieren |
|
martinej |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 15.05.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2008, 14:05
Titel: c-code als s-function in simulink intergrieren
|
|
|
|
|
Hi Leute,
Ich simuliere aufgrund meiner Diplomarbeit einen Linearmotor in Simulink. Diesen habe ich als ein Subsheet zusammen gefasst und eine der Grössen, die ich rausbekomme, ist die Drehzahl. Jetzt soll anhand einens Fahrdiagramm mein Strom, der eine Eingangsgrösse ist, in Abhängigkeit dieser Drehzahl angepasst werde. Ist die Drehzahl zwischen 0 und 100 soll der Strom I=5A bestragen, zwischen 100 und 200 I=7A usw. Der Strom stellt quasi eine Funktion der Drehzahl dar.
Ich habe mir überlegt, dass ich diese Funktion in der Programmiersprache C mit if - else - Schleifen realisiere. Diese mit dem Befehl mex compliere und dann als eine s-Funktion in meine Simulation einbinde.
Soweit die Theorie....
Wie muss mein header aussehen bzw. welche header-files muss ich im C-Sources includen, damit ich es überhaupt komplieren kann. (Hat vielleicht einer eine kleines Beispiel?) Meine nächste Frage wäre dann noch, wie intergriere ich dann das komplierte c-file in meine s-function.
Ich bin schon die ganze Zeit am googlen und Büchern durchblättern. Aber irgendwie finde ich keine vernünftige Anleitung oder Beispiel (oder ich bin zu blöd).
Wäre echt nett, wenn mir einer unter die Arme greifen könnte...oder zu mindesten mir einen Link für ne eine einfache Anleitung geben könnte
|
|
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 29.05.2008, 15:11
Titel:
|
|
|
|
|
Zitat: |
Ich bin schon die ganze Zeit am googlen und Büchern durchblättern. Aber irgendwie finde ich keine vernünftige Anleitung oder Beispiel (oder ich bin zu blöd). |
Google ist zwar schon und einfach, aber wenn Du etwas zuhause verloren hast, dann sucht man das doch nicht bei dem Nachbar...
wie wärs mit der MATLAB eigenen Doku?!
Das einfachste Beispiel ist die TIMESTWO S-Function. Eingang wird mit 2 multipliziert und ausgegeben. Kannst es als Template benutzen.
Zu finden in %matlab%\simulink\src\timestwo.c
Kopiere die nach Dein Projektverzeichnis und kompiliere die mit
darauf hin wird "timestwo.mexw32" erzeugt.
Nun muss der S-Function Block dem Simulink model hinzugefügt werden.
Den findest Du unter Simulink->User-Defined Function->S-Function.
Kopiere den Block in Simulink-Model. Doppelclick darauf und unter
"S-function name" nun "timestwo" eintragen.
Zum testen noch um ein Constant-Block am Eingang und den Display Block am Ausgang erweitern und die Simulation starten...
MfG
P.S. mehr dazu in der Doku: Simulink->Overview of S-Functions
|
|
|
martinej |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 15.05.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2008, 16:54
Titel:
|
|
Vielen Dank, dass hat schon mal gefunzt. Ich habe die Help von Matlab natürlich schon herangezogen, aber irgendwie schnalle ich immer noch net, welche Struktur mein c - File haben muss. Könntest du mir vielleicht ein kleines Beispiel posten, wie die Strukur zu sein hat?
Vielen Dank im Voraus
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 29.05.2008, 21:33
Titel:
|
|
??? *sprachlos*
Zitat: |
Zu finden in %matlab%\simulink\src\timestwo.c |
MfG
|
|
|
Tim |
Forum-Century
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 02.06.2008, 10:12
Titel:
|
|
Wozu überhaupt eine S-Function? Das ist doch ein klassischer Fall für eine einfache Kennlinie?
|
|
|
amin |
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 11.05.09
|
|
|
|
Wohnort: Karlsruhe
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 11.05.2009, 09:10
Titel:
|
|
Hallo,
kann mir jemand erklären wie ich das timestwo Beispiel umschreiben muss, damit es keine Arrays mehr verarbeitet sondern als kontinuierlicher verdoppler Block arbeitet.
Kann auch gerne ein anderes Beispiel sein.
Vielen Dank im Voraus !
|
|
|
amin |
Forum-Anfänger
|
|
Beiträge: 45
|
|
|
|
Anmeldedatum: 11.05.09
|
|
|
|
Wohnort: Karlsruhe
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 12.05.2009, 15:22
Titel:
|
|
Hallo nochmal,
ich hab´s jetzt Momentan so:
Denke aber das es auch eleganter gehen sollte.
|
|
|
tarelizer |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 24.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.11.2009, 13:57
Titel:
|
|
hallo,
ich habe das ähnliche problem eine .mexw32 Datei einzubinden.
Matlab meldet das die S-Function nicht existiert
Error in S-function 'Example/S-Function': S-Function 'simulinktoxplane' does not exist.
Kann man das verzeichnis auch zuweisen??
P.S.: ich arbeite mich gerade in Matlab ein. Entschuldigt also bitte wenn das ein etwas trivialeres Problem sein sollte
|
|
|
tarelizer |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 24.11.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.11.2009, 14:36
Titel:
|
|
ich habe an hand der Matlab-Help heraus gefunden, dass sich unter S Function Modules die zugehörige mex datei versteckt.
Reicht es aus den pfad in das zugehörige Feld einzutragen??
|
|
|
|
|
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.
|
|