|
|
C-Algorithmus als Simulink-Knoten |
|
decimad |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.05.2013, 12:08
Titel: C-Algorithmus als Simulink-Knoten
|
|
|
|
|
Hallo Leute,
ich beschäftige mich gerade mit E-Moter-Regelungsalgorithmen. Zum einen bin ich leidenschaftlicher C/C++-Entwickler und kenne mich mit M-Code nur unzulänglich aus - zum anderen möchte ich die entwickelten Algorithmen später sowieso auf einem Mikrocontroller umsetzen. Daher habe ich mir überlegt, dass es für mich doch sehr angenehm wäre, wenn ich meinen Regelungsalgorithmus in C auf ein elektrisches und mechanisches Modell in Simulink loslassen könnte.
Nun habe ich gesehen, dass Matlab ja dieses MEX unterstützt, was wohl ein C-Plugin-System darstellt. Die Dokumentation verliert mich aber in Details für das Zeitverhalten der Signale und deren Ableitungen (zur numerischen Lösung von DGLs natürlich) usw. Für mich wäre aber eigentlich am wichtigsten, dass ich zu festen Simulationszeitpunkten t1n Momentanwerte abgreifen kann und zu festen Zeitpunkten t1n+tz (tz sei die Latenz der Regelung) neue Werte an die Ausgänge schalten kann. Den C-Code dazwischen bekomme ich dann auch alleine hin, einzelne skalare Ein- und Ausgänge würden wohl auch erstmal reichen.
Könnt ihr mir eingängliche Tutorials empfehlen, die mich auf den Weg bringen, das mit MEX umzusetzen? Ein motivierender Einstieg mit raschen ersten Ergebnissen (muss nicht gleich super-perfekt sein) würde mich da freuen, weil es sich hier um Hobby handelt und ich momentan am Tag sowieso schon genügend Theorie-Bücher pauke, daher hier mein Wunsch zu einem etwas praktischeren Ansatz.
Viele Grüße,
Deci
|
|
|
|
|
decimad |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2013, 14:53
Titel:
|
|
|
|
|
Okay,
es mag vielleicht ein bissl dreist geklungen haben na "ich will nix machen, aber alles bekommen". Ich habe nun also wohl oder übel den Weg über die mitgelieferten Samples und die Kreuz- und quer referenzierende Online hilfe eingeschlagen und denke, dass ich mich jetzt entsprechend diffus entlangfrickeln kann, um das umzusetzen was ich möchte.
Bevor ich nun also die Zeit da reininvestiere, habe ich noch ein grundlegendes Problem.
Und zwar soll mein zeitdiskreter Knoten halt eine Art PWM-Regler sein. Die Eingangssignale werden mit bis zu 10kHz abgetastet, aber die Ausgangssignale schalten zwar selten, dafür aber immer in einem 10ns-Raster. Fürs erste kann ich da mit den Zeit-Anforderungen auch ein bissl runtergehen. Wenn ich den Regleralgorithmus per Hand und ein paar Simulationen in anderer Software verifiziert habe und die Strecke erstmal kontinuierlich in Simulink selber, dann meine ich, dass ich mir sicher sein kann, dass das "System" funktioniert. Also ich könnte damit leben, dass eine Simulation von einer Sekunde dann eben eine Stunde dauert oder so. Ist das technisch drin mit 1ns-Schrittweiten zu rechnen? Kann ich irgendwie angeben, dass er die Systemwerte nicht in dieser irren Auflösung abspeichert, sondern meinetwegen nur in einem 100us Raster oder so? Ich stelle mir das besonders für den Speicherverbrauch gerade arg anfordernd vor, Zeit kann man ja mit Kaffeetrinken überbrücken, aber einen Terabyte Speicher nachzurüsten fällt schwerer.
Bislang habe ich vor allem auch nur mit Runge-Kutta und fester Schrittweite simuliert. Bietet sich hier ein etwas anderes Verfahren an, das nur zu den Schaltvorgängen am Ausgang genauer hinschaut?
Viele Grüße,
Deci
|
|
|
decimad |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2013, 15:23
Titel:
|
|
Ahhhhh, ich habe gerade den decimation-Factor gefunden, das ist ja genau das, was meine eine Teilfrage schon beantwortet, warum war mir das nicht schon früher aufgefallen!
|
|
|
|
|
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.
|
|