|
|
Simulation eines Motors mittels S-Function |
|
godi |

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 25.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.08.2013, 10:48
Titel: Simulation eines Motors mittels S-Function
|
 |
|
 |
|
Hallo,
ich würde gerne eine Matlab S-Function 2 erstellen die mir einen DC-Motor simuliert.
Das Zustrandsraummodell des DC-Motor habe ich schon erstellt.
Die Beispiele für die Matlab S-Function 2 habe ich mir auch angesehen nur weiß ich jetzt nicht wie ich in den DWork Vektor mein Zustandsraummodell abspeichern kann.
Initialisierung des DWork Vektors in der Funktion DoPostPropSetup
In der Funktion Start befindet sich folgender Code:
Jetzt kommt die Fehlermeldung:
Zitat: |
The data type of Dwork 1 in 'model2/Motor' cannot be dynamically-typed. Data type of Dwork must be one of the MATLAB 'uint8', 'uint16', 'uint32', 'int8', 'int16', 'int32', 'single', or 'double' data types
|
Ok aber wie kann ich jetzt das Zustandsraummodell abspeichern so, dass ich in der Update-Funktion, Derivate Funktion und Output Funktion darauf zugreifen kann?
Vielleicht noch was zu meinem Ziel:
Ich habe ein AVR32 Board an dem ich diesen Motor angeschlossen habe.
Dieses habe ich auch schon programmiert so, dass ich den Motor ansprechen kann und auch testweise einen PID Regler darauf laufen.
Jetzt möchte ich für Simulink ein Modell des Motors haben, damit in Simulink Regler dafür entworfen werden können.
Desweiteren soll dann mit dem Simulink Coder (Real Time Workshop) Code für den Mikrocontroller generiert werden.
Anstelle der S-Function für den Motor soll dann der vorhandene Code für den Motor verwendet werden. Dies sollte ja mit einem TLC file umsetzbar sein.
Funktioniert mein vorhaben so überhaupt?
godi
|
|
|
|
|
godi |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 25.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.08.2013, 12:17
Titel:
|
 |
So jetzt bin ich mit der S-Function schon ein wenig weitergekommen.
Aber was mir jetzt noch nicht klar ist:
Wie kann ich ein Continous State Integrieren?
Da fehlt mir ja die Zeit mit der ich Multiplizieren kann.
Also ich habe jetzt in x[1] meine Winkelgeschwindigkeit.
Jetzt möchte ich daraus den Winkel berechnen den der Motor zurückgelegt hat. Normalerweise müsste dies ja so funktionieren: angel += x[1]*dTime.
Nur wo bekomme ich da jetzt dTime (Zeitdifferenz) her?
Weiters verstehe ich nicht warum die abgeleitete Größe dx[0] (Strom, Plot 2 im Scope) so starke Rippel hat. Sollte das bei einer Simulation nicht gerade sein?
Kann mir da wer weiterhelfen?
Danke!
Im Anhang mein Code
Einfach das Skript motor.m ausführen und in model_cont.mdl das Scope betrachten.
Beschreibung: |
|
 Download |
Dateiname: |
sfunc.zip |
Dateigröße: |
98.3 KB |
Heruntergeladen: |
346 mal |
|
|
|
godi |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 52
|
 |
|
 |
Anmeldedatum: 25.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.08.2013, 22:16
Titel:
|
 |
Die Berechnung des Winkels habe ich jetzt hin bekommen.
Man braucht da nur die Winkelgeschwindigkeit nochmals als dx angeben.
Dann bekommt man bei dem x-Vektor den Winkel.
Was mir aber noch nicht klar ist:
1) Warum ist das Rauschen so groß? Wenn die Zeit länger wird dann wird das Rauschen auch größer. (Bei einer Simulation sollte ja kein Rauschen vorhanden sein, oder?)
2) Wenn es mir wieder einfällt dann ergänze ich es.
3) Ich will ja mit der s-function einen Motor der von einen Mikrokontroller angesteuert wir Simulieren.
Wie bekomme ich das ganze jetzt diskretisiert?
Ich habe da was gelesen von Block-Sample Time und/oder Port Sample Time.
Was sollte ich jetzt verwenden? Also im realen Model wird der Motorbaustein alle 10ms aufgerufen. Da werden die ganzen Werte berechnet und aktualisiert.
Im Anhang noch die neue s-function.
Beschreibung: |
|
 Download |
Dateiname: |
sfunc.zip |
Dateigröße: |
99.24 KB |
Heruntergeladen: |
311 mal |
|
|
|
|
|
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 - 2025
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.
|
|